gameData.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import AccountModel from "../../data/Account/AccountModel";
  2. import EventManager from "../../framework/event/EventManager";
  3. import Utils from "../../framework/utils/utils";
  4. import { ATTACK_MODE, EVENT_TYPE } from "./gameEnum";
  5. import gameEventManager from "./gameEventManager";
  6. /**游戏数据类 */
  7. class GameData {
  8. /**单例 */
  9. private static _instance: GameData = null;
  10. isSetZomBie: boolean = true; //是否可以重生僵尸
  11. bAddBoss: boolean;
  12. /**获取游戏数据类单例 */
  13. static get instance(): GameData {
  14. if (this._instance == null) {
  15. this._instance = new GameData();
  16. }
  17. return this._instance;
  18. }
  19. /**当前攻击模式 */
  20. cur_attack_mode = ATTACK_MODE.close;
  21. _curBulletNum: number = 0;
  22. _curPowerNum: number = 0;
  23. _curDay: number = 1;
  24. _curKillZomNum: number = 0;
  25. get curDay(): number {
  26. return this._curDay;
  27. }
  28. set curDay(num: number) {
  29. this._curDay = num;
  30. AccountModel.getInstance().curDay = num;
  31. zjSdk?.sendEvent('Entering Day' + num + '');//进入第X天
  32. EventManager.emit(EVENT_TYPE.UPDATE_DAY_NUM);
  33. }
  34. get curBulletNum(): number {
  35. return this._curBulletNum;
  36. }
  37. set curBulletNum(num: number) {
  38. let isSub = num < this._curBulletNum;
  39. this._curBulletNum = num;
  40. AccountModel.getInstance().curBullet = num;
  41. EventManager.emit(EVENT_TYPE.UPDATE_BULLET_NUM,isSub);
  42. }
  43. get curPowerNum(): number {
  44. return this._curPowerNum;
  45. }
  46. set curPowerNum(num: number) {
  47. this._curPowerNum = num;
  48. AccountModel.getInstance().curPower = num;
  49. EventManager.emit(EVENT_TYPE.UPDATE_TILI_NUM);
  50. }
  51. get curKillZomNum(): number {
  52. return this._curKillZomNum;
  53. }
  54. set curKillZomNum(num: number) {
  55. const isSend = num > this._curKillZomNum;
  56. this._curKillZomNum = num;
  57. AccountModel.getInstance().curKillZomNum = num;
  58. if (isSend){
  59. gameEventManager.emit(EVENT_TYPE.zombieDieForCrazy);
  60. }
  61. }
  62. curPeopleNum: number = 1;
  63. peopleDieNum: number = 0;
  64. curDiePeopleNum: number = 0;
  65. curKillBossNum: number = 0;
  66. playerDtList: Object[] = [];
  67. isDayTime: boolean = true;
  68. curInDungeonType: number;
  69. public init() {
  70. this.curDay = AccountModel.getInstance().curDay; //当前天数
  71. this.curPowerNum = AccountModel.getInstance().curPower; //当前体力
  72. this._curBulletNum = AccountModel.getInstance().curBullet;//当前子弹数
  73. this.curPeopleNum = 0;//当前玩家数
  74. this.peopleDieNum = 0;//玩家死亡数
  75. this.curDiePeopleNum = 0; //当前死亡玩家数
  76. this._curKillZomNum = AccountModel.getInstance().curKillZomNum; //当前已杀死的僵尸数
  77. this.curKillBossNum = 0; //当前杀死的boss数
  78. this.bAddBoss = false;
  79. //-----------------------------以下切换副本界面需要用到的数据------------------------------------------------------//
  80. this.playerDtList = [];
  81. //this.isDayTime = true; //是否是白天
  82. this.curInDungeonType = null; //当前进入的房间类型
  83. }
  84. }
  85. export default GameData.instance;
  86. /**场景数据类 */
  87. export class SceneData {
  88. /**玩家数据组 */
  89. player_datas: PlayerData[] = [];
  90. /**道具数据组 */
  91. prop_datas: PropData[] = [];
  92. /**僵尸数据组 */
  93. zombie_datas: ZombieData[] = [];
  94. }
  95. /**玩家数据类 */
  96. export class PlayerData {
  97. /**角色id */
  98. id = 0;
  99. /**当前血量 */
  100. cur_hp = 0;
  101. /**近战武器id */
  102. close_weapon_id = 0;
  103. /**远程武器id */
  104. remote_weapon_id = 0;
  105. /**位置 */
  106. pos: cc.Vec2 = null;
  107. /**设置数据
  108. * @param id 角色id
  109. * @param cur_hp 当前血量
  110. * @param close_weapon_id 近战武器id
  111. * @param remote_weapon_id 远程武器id
  112. * @param pos 位置
  113. */
  114. setData(id: number, cur_hp: number, close_weapon_id: number, remote_weapon_id: number, pos: cc.Vec2) {
  115. this.id = id;
  116. this.cur_hp = cur_hp;
  117. this.close_weapon_id = close_weapon_id;
  118. this.remote_weapon_id = remote_weapon_id;
  119. this.pos = pos;
  120. }
  121. }
  122. /**道具数据类 */
  123. export class PropData {
  124. /**道具id */
  125. id = 0;
  126. /**位置 */
  127. pos: cc.Vec2 = null;
  128. }
  129. /**僵尸数据类 */
  130. export class ZombieData {
  131. /**id */
  132. id = 0;
  133. /**当前血量 */
  134. cur_hp = 0;
  135. /**位置 */
  136. pos: cc.Vec2 = null;
  137. }