BattleUtil.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import { ObjectValueType } from "./BattleEnum";
  2. export namespace BattleUtil {
  3. //背包容量
  4. export const BagListSize = 10;
  5. //战斗辅助工具类
  6. export const FrameRate = 30; //帧率
  7. export const FrameTime = 1 / FrameRate; //帧间隔
  8. export const PI = 3.1415926; //圆周率
  9. export const TurnMax = 10*60*FrameRate; //回合数
  10. //特殊的类型id
  11. export const TypeID_Init = -1; //初始化id
  12. export const TypeID_Player = -2; //玩家操作生成的id
  13. export const PosID_Init = -1; //初始化id
  14. export const IndexID_Init = -1; //初始化id
  15. //二维向量
  16. export class Vector2{
  17. x: number;
  18. y: number;
  19. constructor(x:number,y:number){
  20. this.x = x;
  21. this.y = y;
  22. }
  23. static Sub(vec:Vector2,vec2:Vector2){
  24. return new Vector2(vec.x - vec2.x,vec.y - vec2.y);
  25. }
  26. static Add(vec:Vector2,vec2:Vector2){
  27. return new Vector2(vec.x + vec2.x,vec.y + vec2.y);
  28. }
  29. static Multiply(vec:Vector2,number:number){
  30. return new Vector2(vec.x * number,vec.y * number);
  31. }
  32. static Divide(vec:Vector2,number:number){
  33. return new Vector2(vec.x / number,vec.y / number);
  34. }
  35. sub(vec:Vector2){
  36. this.x -= vec.x;
  37. this.y -= vec.y;
  38. }
  39. add(vec:Vector2){
  40. this.x += vec.x;
  41. this.y += vec.y;
  42. }
  43. multiply(number:number){
  44. this.x *= number;
  45. this.y *= number;
  46. }
  47. divide(number:number){
  48. this.x /= number;
  49. this.y /= number;
  50. }
  51. normalize(){
  52. let len = this.length();
  53. this.x /= len;
  54. this.y /= len;
  55. }
  56. length(){
  57. return Math.sqrt(this.x * this.x + this.y * this.y);
  58. }
  59. clone(){
  60. return new Vector2(this.x,this.y);
  61. }
  62. }
  63. // 在服务器端或客户端
  64. // import { Random } from './random';
  65. // const seed = 12345;
  66. // const random = new Random(seed);
  67. // const randomNum = random.nextInt(1, 100);
  68. // console.log(randomNum);
  69. export class Random {
  70. private seed: number;
  71. private a: number;
  72. private c: number;
  73. private m: number;
  74. constructor(seed: number) {
  75. this.seed = seed;
  76. this.a = 1664525;
  77. this.c = 1013904223;
  78. this.m = Math.pow(2, 32);
  79. }
  80. next(): number {
  81. this.seed = (this.a * this.seed + this.c) % this.m;
  82. return this.seed / this.m;
  83. }
  84. nextInt(min: number, max: number): number {
  85. return min + Math.floor(this.next() * (max - min + 1));
  86. }
  87. }
  88. //特殊数值
  89. export interface SpecialValue{
  90. attackType: ObjectValueType;
  91. value: number;
  92. }
  93. //英雄参数变化
  94. export interface HeroDataChange{
  95. //英雄id 交换位置和主将技能时无hero
  96. heroID?: number;
  97. changeType: ObjectValueType;
  98. changeValueLlist: number[];
  99. };
  100. //敌人出生结构
  101. export class EnemyBornData{
  102. //出生时间
  103. bornTime:number;
  104. //出生点id
  105. positionID:number;
  106. //敌人类型id
  107. typeID:number;
  108. //等级
  109. level:number;
  110. //路线
  111. roldID:number;
  112. }
  113. }