1.1.8 • Published 5 months ago

@threeatom/gameframework-mvc-core v1.1.8

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

mvc-core

TODO: 游戏开发mvc模式

Usage

export class GameStartCommand extends Command {
    public static readonly GameStartEvent: string = "GameStart";
    OnExecute(): void {
        console.log("GameStartCommand executed");
        this.getModel<GameModel>(GameModel.CLASS_NAME).Count.Value = 0;
        // 通知游戏开始
        this.sendNotification(GameStartCommand.GameStartEvent);
    }
}

export class GameEndCommand extends Command {
    public static readonly GameEndEvent: string = "GameEnd";
    OnExecute(): void {
        console.log("GameEndCommand executed");
        this.getModel<GameModel>(GameModel.CLASS_NAME).Count.Value = 100;
        // 通知游戏结束
        this.sendNotification(GameEndCommand.GameEndEvent);

    }

}
export class GameController extends Controller {
    initialize(): void {
        this.registerEvent('GameStart', (data) => {
            console.log(`Game start with data ${data}`);
            this.runGame();
        });
        this.registerEvent('GameEnd', (data) => {
            console.log(`Game end with data ${data}`);
        });
    }

    runGame(){
        for(let i = 0; i < 10; i++){
            this.getModel<GameModel>(GameModel.CLASS_NAME).Count.Value = i;
            console.log(`我得分: ${i}`);
        }
        //发送命令 游戏结束
        this.executeCommand(new GameEndCommand());
    };


   
}
export class GameModel extends Model {
    getClassName(): string {
        return GameModel.CLASS_NAME;
    }
    static CLASS_NAME: string="GameModel";
    Count = new BindableProperty<number>(0);

    initialize(): void {
        this.Count.setValueWithoutEvent(0);
        this.Count.register(new ValueChangedObserver((value) => {
            console.log(`Count value changed to ${value}`);
        }));
        
    }

}
export class GameView extends View {
    initialize() {
        this.getModel<GameModel>(GameModel.CLASS_NAME).Count.register(new ValueChangedObserver((property) => {
            this.showScore(property.Value);
        }));
    }
    showScore(score: number) {
        console.log(`渲染分数: ${score}`);
    }
}
const mvc = MvcFramework.getInstance();
const gameController: GameController = new GameController();
mvc.registerModel(GameModel);
const gameView:GameView=new GameView(gameController);

mvc.executeCommand(new GameStartCommand());
const model = mvc.getModel<GameModel>(GameModel.CLASS_NAME);
        
1.1.8

5 months ago

1.1.7

7 months ago

1.1.6

7 months ago

1.1.5

7 months ago

1.1.4

7 months ago

1.1.3

7 months ago

1.1.2

7 months ago

1.1.1

7 months ago

1.1.0

7 months ago

1.0.7

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago