StrategyManager.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { _decorator, Component, Node } from 'cc';
  2. import { CreateMap } from './CreateMap';
  3. import ch_audio from '../../ch/audio/audio';
  4. import { Singleton } from '../Tools/Singleton';
  5. import { StateManager } from './StateManager';
  6. const { ccclass, property } = _decorator;
  7. /*
  8. 计分策略
  9. 颜色策略
  10. 时间策略
  11. 音效策略
  12. 主题策略
  13. */
  14. export class ColorStrategy {
  15. colorNum() {
  16. throw new Error('colorNum method must be implemented');
  17. }
  18. }
  19. @ccclass('EasyColorStrategy')
  20. export class EasyColorStrategy extends ColorStrategy {
  21. public colorNum() {
  22. // 仅有两种颜色
  23. // 这里假设 CreateMap 是一个全局可访问的对象,用于设置最大颜色数
  24. CreateMap.getInstance().MaxColorNum = 2;
  25. }
  26. // 添加标识属性
  27. get strategyType():string {
  28. return 'easy';
  29. }
  30. }
  31. @ccclass('NormalColorStrategy')
  32. export class NormalColorStrategy extends ColorStrategy {
  33. public colorNum() {
  34. // 三种颜色
  35. CreateMap.getInstance().MaxColorNum = 3;
  36. }
  37. // 添加标识属性
  38. get strategyType():string {
  39. return 'normal';
  40. }
  41. }
  42. @ccclass('HardColorStrategy')
  43. export class HardColorStrategy extends ColorStrategy {
  44. public colorNum() {
  45. // 四种颜色
  46. CreateMap.getInstance().MaxColorNum = 4;
  47. }
  48. // 添加标识属性
  49. get strategyType():string {
  50. return 'hard';
  51. }
  52. }
  53. @ccclass('StrategyManager')
  54. export class StrategyManager extends Component {
  55. private currentStrategy: EasyColorStrategy | NormalColorStrategy | HardColorStrategy;
  56. public static getInstance(): StrategyManager {
  57. return Singleton.getInstance(StrategyManager);
  58. }
  59. public getColorStrategy(): EasyColorStrategy | NormalColorStrategy | HardColorStrategy {
  60. return this.currentStrategy;
  61. }
  62. onLoad() {
  63. //初始化策略
  64. StrategyManager.getInstance().currentStrategy = new EasyColorStrategy();
  65. StrategyManager.getInstance().currentStrategy.colorNum();
  66. console.log(StrategyManager.getInstance().getColorStrategy());
  67. //初始化状态
  68. StateManager.getInstance().initState();
  69. //初始化UI界面
  70. //初始化背景音乐
  71. ch_audio.getInstance().play('BgMusic');
  72. }
  73. update(deltaTime: number) {
  74. }
  75. public setColorStrategy(currentStrategy: EasyColorStrategy | NormalColorStrategy | HardColorStrategy) {
  76. this.currentStrategy = currentStrategy;
  77. this.currentStrategy.colorNum();
  78. }
  79. }