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);
        }
Example #2
0
        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);
        }