private void Move(float dt) { if ((double)MBMath.Absf(this.MoveDistance) < 9.99999974737875E-06) { return; } Vec3 vec3_1 = new Vec3(this.MoveAxisX, this.MoveAxisY, this.MoveAxisZ); double num1 = (double)vec3_1.Normalize(); Vec3 vec3_2 = vec3_1 * this.MoveSpeed * this.MoveDirection; float num2 = vec3_2.Length * this.MoveDirection; if ((double)this.CurrentDistance + (double)num2 <= -(double)this.MoveDistance) { this.MoveDirection = 1f; num2 *= -1f; vec3_2 *= -1f; } else if ((double)this.CurrentDistance + (double)num2 >= (double)this.MoveDistance) { this.MoveDirection = -1f; num2 *= -1f; vec3_2 *= -1f; } this.CurrentDistance += num2; MatrixFrame frame = this.GameEntity.GetFrame(); frame.origin += vec3_2; this.GameEntity.SetFrame(ref frame); }
private void BattleSizeSpawnTick() { int troopsCanBeSpawned = this.NumberOfTroopsCanBeSpawned; if (this.NumberOfRemainingTroops <= 0 || troopsCanBeSpawned <= 0) { return; } int num1 = this.DefenderActivePhase.TotalSpawnNumber + this.AttackerActivePhase.TotalSpawnNumber; int number1 = MBMath.Round((float)troopsCanBeSpawned * (float)this.DefenderActivePhase.TotalSpawnNumber / (float)num1); int number2 = troopsCanBeSpawned - number1; float num2 = (float)(this.DefenderActivePhase.InitialSpawnedNumber - this._missionSides[0].NumberOfActiveTroops) / (float)this.DefenderActivePhase.InitialSpawnedNumber; float num3 = (float)(this.AttackerActivePhase.InitialSpawnedNumber - this._missionSides[1].NumberOfActiveTroops) / (float)this.AttackerActivePhase.InitialSpawnedNumber; if (MissionAgentSpawnLogic.MaxNumberOfAgentsForMission - this.Mission.AllAgents.Count < troopsCanBeSpawned * 2 || (double)troopsCanBeSpawned < (double)this._battleSize * 0.100000001490116 && (double)num2 < 0.5 && (double)num3 < 0.5) { return; } float val = MBMath.ClampFloat(num2 / 0.5f - num3 / 0.5f, -1f, 1f); if ((double)val > 0.0) { int num4 = MBMath.Round((float)number2 * val); number2 -= num4; number1 += num4; } else if ((double)val < 0.0) { float num4 = MBMath.Absf(val); int num5 = MBMath.Round((float)number1 * num4); number1 -= num5; number2 += num5; } int num6 = Math.Max(number1 - this.DefenderActivePhase.RemainingSpawnNumber, 0); int num7 = Math.Max(number2 - this.AttackerActivePhase.RemainingSpawnNumber, 0); if (num6 > 0 && num7 > 0) { number1 = this.DefenderActivePhase.RemainingSpawnNumber; number2 = this.AttackerActivePhase.RemainingSpawnNumber; } else if (num6 > 0) { number1 = this.DefenderActivePhase.RemainingSpawnNumber; number2 = Math.Min(number2 + num6, this.AttackerActivePhase.RemainingSpawnNumber); } else if (num7 > 0) { number2 = this.AttackerActivePhase.RemainingSpawnNumber; number1 = Math.Min(number1 + num7, this.DefenderActivePhase.RemainingSpawnNumber); } if (this._missionSides[0].TroopSpawningActive && number1 > 0) { this.DefenderActivePhase.RemainingSpawnNumber -= this._missionSides[0].SpawnTroops(number1, true, true); } if (!this._missionSides[1].TroopSpawningActive || number2 <= 0) { return; } this.AttackerActivePhase.RemainingSpawnNumber -= this._missionSides[1].SpawnTroops(number2, true, true); }