| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import { _decorator, Component, Node } from 'cc';
- import { CreateMap } from './CreateMap';
- import ch_audio from '../../ch/audio/audio';
- import { Singleton } from '../Tools/Singleton';
- import { StateManager } from './StateManager';
- const { ccclass, property } = _decorator;
- /*
- 计分策略
- 颜色策略
- 时间策略
- 音效策略
- 主题策略
- */
- export class ColorStrategy {
- colorNum() {
- throw new Error('colorNum method must be implemented');
- }
- }
- @ccclass('EasyColorStrategy')
- export class EasyColorStrategy extends ColorStrategy {
- public colorNum() {
- // 仅有两种颜色
- // 这里假设 CreateMap 是一个全局可访问的对象,用于设置最大颜色数
- CreateMap.getInstance().MaxColorNum = 2;
- }
- // 添加标识属性
- get strategyType():string {
- return 'easy';
- }
- }
- @ccclass('NormalColorStrategy')
- export class NormalColorStrategy extends ColorStrategy {
- public colorNum() {
- // 三种颜色
- CreateMap.getInstance().MaxColorNum = 3;
- }
- // 添加标识属性
- get strategyType():string {
- return 'normal';
- }
- }
- @ccclass('HardColorStrategy')
- export class HardColorStrategy extends ColorStrategy {
- public colorNum() {
- // 四种颜色
- CreateMap.getInstance().MaxColorNum = 4;
- }
- // 添加标识属性
- get strategyType():string {
- return 'hard';
- }
- }
- @ccclass('StrategyManager')
- export class StrategyManager extends Component {
- private currentStrategy: EasyColorStrategy | NormalColorStrategy | HardColorStrategy;
- public static getInstance(): StrategyManager {
- return Singleton.getInstance(StrategyManager);
- }
- public getColorStrategy(): EasyColorStrategy | NormalColorStrategy | HardColorStrategy {
- return this.currentStrategy;
- }
- onLoad() {
- //初始化策略
- StrategyManager.getInstance().currentStrategy = new EasyColorStrategy();
- StrategyManager.getInstance().currentStrategy.colorNum();
- console.log(StrategyManager.getInstance().getColorStrategy());
- //初始化状态
- StateManager.getInstance().initState();
- //初始化UI界面
- //初始化背景音乐
- ch_audio.getInstance().play('BgMusic');
- }
- update(deltaTime: number) {
- }
- public setColorStrategy(currentStrategy: EasyColorStrategy | NormalColorStrategy | HardColorStrategy) {
- this.currentStrategy = currentStrategy;
- this.currentStrategy.colorNum();
- }
- }
|