import { _decorator, Component, Node } from 'cc'; import { CreateMap } from './CreateMap'; import { PlayerCtl } from './PlayerCtl'; import { Singleton } from '../Tools/Singleton'; const { ccclass, property } = _decorator; export enum GameState { start, play, pause, exit, win, fail } //状态模式 export interface baseState { enterState(); beingState(); exitState(); } @ccclass('StartState') export class StartState implements baseState{ //初始化场景,生成地图,播放背景音乐 enterState(){ CreateMap.getInstance().onLoad(); } beingState(){ } //进入玩的状态 exitState(){ } } @ccclass('PlayState') export class PlayState implements baseState{ //玩家能触摸以及发射射线,播放背景音乐 enterState(){ PlayerCtl.instance.touchLock=false; } beingState(){ } //玩家进入新的状态 exitState(){ } } @ccclass('WinState') export class WinState implements baseState{ //玩家赢了,弹出界面 enterState(){ } //禁止对当前UI外操作 beingState(){ } //返回大厅 exitState(){ } } @ccclass('FailState') export class FailState implements baseState{ //玩家输了,弹出界面,停止播放当前背景音乐,播放失败音效 enterState(){ } //禁止对当前UI外操作 beingState(){ } //返回大厅 exitState(){ } } @ccclass('StateManager') export class StateManager{ private currentState:baseState; public static getInstance(): StateManager { return Singleton.getInstance(StateManager); } //初始化状态 public initState(){ this.currentState=new StartState(); this.currentState.enterState(); } //修改状态 setState(state: baseState) { if (this.currentState) { this.currentState.exitState(); } this.currentState = state; this.currentState.enterState(); } getState(){ return this.currentState; } onDestroy() { if(this.currentState){ this.currentState=null; } } }