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(); } }