Exemple #1
0
        public void SimulationUpdate()
        {
            // Spawning
            SpawnUnits.Apply(CurrentUnits, CurrentData, PreviousData, RandomField, Magic, Output: Temp1);
            Swap(ref CurrentData, ref Temp1);
            SetSpawn_Unit.Apply(CurrentUnits, CurrentData, Magic, GameClass.World.PlayerTeamVals, Output: Temp1);
            Swap(ref CurrentUnits, ref Temp1);
            SetSpawn_Target.Apply(TargetData, CurrentData, RandomField, Magic, Output: Temp1);
            Swap(ref TargetData, ref Temp1);
            SetSpawn_Data.Apply(CurrentUnits, CurrentData, Output: Temp1);
            Swap(ref CurrentData, ref Temp1);

            // Corpses
            AddCorpses.Apply(CurrentUnits, CurrentData, Corpses, Magic, Output: Temp1);
            Swap(ref Corpses, ref Temp1);


            // Pathfinding
            Movement_UpdateDirection_RemoveDead.Apply(TargetData, CurrentUnits, Extra, CurrentData, PreviousData, DistanceToOtherTeams, RandomField, Magic,
                                                      Geo, AntiGeo, Dirward[Dir.Right], Dirward[Dir.Left], Dirward[Dir.Up], Dirward[Dir.Down],
                                                      Output: Temp1);
            Swap(ref CurrentData, ref Temp1);

            Movement_SetPolarity_Phase1.Apply(CurrentData, Extra, Geo, AntiGeo, Output: Temp1);
            Swap(ref Extra, ref Temp1);
            Movement_SetPolarity_Phase2.Apply(CurrentData, Output: Temp1);
            Swap(ref CurrentData, ref Temp1);

            // Movement execution
            Movement_Phase1.Apply(CurrentData, RandomField, Output: Temp1);
            Movement_Phase2.Apply(CurrentData, Temp1, Output: Temp2);

            Swap(ref CurrentData, ref PreviousData);
            Swap(ref Temp2, ref CurrentData);

            Movement_Convect.Apply(TargetData, CurrentData, Output: Temp1);
            Swap(ref TargetData, ref Temp1);
            Movement_Convect.Apply(Extra, CurrentData, Output: Temp1);
            Swap(ref Extra, ref Temp1);
            Movement_Convect.Apply(CurrentUnits, CurrentData, Output: Temp1);
            Swap(ref CurrentUnits, ref Temp1);
            Swap(ref PreviousUnits, ref Temp1);

            // Attacking
            CheckForAttacking.Apply(CurrentUnits, CurrentData, RandomField, Magic, Output: Temp1);
            Swap(ref CurrentUnits, ref Temp1);
        }