| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- 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;
- }
- }
- }
|