BattleData.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. import { Framework } from "../../framework/Framework";
  2. //位置数据拼接系数
  3. export let BattleLayoutScale = 10000
  4. export enum BattleLayoutPos {//战斗布局,f1-f15为出战区,b1-b15为后备区 value: 10000*raceID + level
  5. 'b1',
  6. 'b2',
  7. 'b3',
  8. 'b4',
  9. 'b5',
  10. 'b6',
  11. 'b7',
  12. 'b8',
  13. 'b9',
  14. 'b10',
  15. 'b11',
  16. 'b12',
  17. 'b13',
  18. 'b14',
  19. 'b15',
  20. 'f1',
  21. 'f2',
  22. 'f3',
  23. 'f4',
  24. 'f5',
  25. 'f6',
  26. 'f7',
  27. 'f8',
  28. 'f9',
  29. 'f10',
  30. 'f11',
  31. 'f12',
  32. 'f13',
  33. 'f14',
  34. 'f15',
  35. }
  36. export enum BattleOptsType{
  37. //生成
  38. New = 1,
  39. //合成
  40. Merge = 2,
  41. //移动
  42. Move = 3,
  43. //销毁
  44. Remove = 4,
  45. //击杀敌人
  46. Kill = 11,
  47. }
  48. export interface BattleOptsBase{
  49. type:BattleOptsType;
  50. }
  51. export interface BattleOptsNew extends BattleOptsBase{
  52. type:BattleOptsType.New;
  53. //位置 BattleLayoutPos
  54. pos:string;
  55. //种族
  56. raceID:number;
  57. //等级
  58. level:number;
  59. }
  60. export interface BattleOptsMerge extends BattleOptsBase{
  61. type:BattleOptsType.Merge;
  62. //目标位置
  63. targetPos:string;
  64. //源位置
  65. srcPos:string;
  66. }
  67. export interface BattleOptsMove extends BattleOptsBase{
  68. type:BattleOptsType.Move;
  69. //目标位置
  70. targetPos:string;
  71. //源位置
  72. srcPos:string;
  73. }
  74. export interface BattleOptsRemove extends BattleOptsBase{
  75. type:BattleOptsType.Remove;
  76. //位置
  77. pos:string;
  78. }
  79. export interface BattleOptsKill extends BattleOptsBase{
  80. type:BattleOptsType.Kill;
  81. //敌人id
  82. typeID:number;
  83. //击杀数量
  84. count:number;
  85. }
  86. export interface Duplicate{
  87. chapter:number, // 当前解锁的最大章节编号(重置进新章节前更新)
  88. max_process: number, // 主线进度(最大挑战成功的关卡id)
  89. process: number, // 当前挂机进度(关卡id)
  90. start_time: number, // 挂机时间 ?
  91. }
  92. export interface BattleLayoutData{
  93. typeID: number;
  94. raceID: number;
  95. level: number;
  96. }
  97. class Data {
  98. // 当前关卡数据
  99. private _duplicate:Duplicate = null;
  100. //
  101. private _layout = []
  102. //章节奖励领取情况
  103. private _duplicate_reward:{[id:string]:number} = {}
  104. //登录初始化数据
  105. setLoginData(data){
  106. if(data.duplicate){
  107. this._duplicate = data.duplicate
  108. }
  109. if(data.duplicate_reward){
  110. this._duplicate_reward = data.duplicate_reward
  111. }
  112. if(data.layout){
  113. this._layout = []
  114. Object.values(BattleLayoutPos).forEach(value => {
  115. const element = data.layout[value]
  116. if(element != undefined){
  117. this._layout.push(element)
  118. }
  119. });
  120. }
  121. }
  122. get duplicate(){
  123. return this._duplicate
  124. }
  125. set duplicate(value){
  126. this._duplicate = value
  127. }
  128. set layout(layout:{[id:string]:number} | Array<number>){
  129. // 兼容旧数据
  130. if(Array.isArray(layout)){
  131. this._layout = layout
  132. }else{
  133. this._layout = []
  134. Object.values(BattleLayoutPos).forEach(value => {
  135. const element = layout[value]
  136. if(element != undefined){
  137. this._layout.push(element)
  138. }
  139. });
  140. }
  141. }
  142. get layout():number[]{
  143. return this._layout
  144. }
  145. get duplicateReward(){
  146. return this._duplicate_reward
  147. }
  148. set duplicateReward(value){
  149. this._duplicate_reward = value
  150. }
  151. //检查章节奖励是否领取
  152. checkDuplicate(chapterID:number|string){
  153. return this._duplicate_reward[chapterID.toString()] || 0
  154. }
  155. }
  156. export let BattleData = new Data;