RTSEngine.Controllers.EnemyBuildingUpdater.DoWork C# (CSharp) Method

DoWork() public method

public DoWork ( float dt ) : void
dt float
return void
        public override void DoWork(float dt)
        {
            if(IsFinished) return;

            if(!Added) {
                if(isDead) {
                    // Early Work Escape
                    Finish();
                    return;
                }
                // Check If We Can Memorize
                foreach(var p in grids) {
                    FogOfWar f = state.CGrid.GetFogOfWar(p.X, p.Y, teamIndex);
                    switch(f) {
                        case FogOfWar.Active:
                            if(Added) break;
                            state.teams[teamIndex].ViewedEnemyBuildings.Add(vb);
                            Added = true;
                            break;
                    }
                }
            }
            else {
                int fActive = 0, fNothing = 0;
                foreach(var p in grids) {
                    FogOfWar f = state.CGrid.GetFogOfWar(p.X, p.Y, teamIndex);
                    switch(f) {
                        case FogOfWar.Active:
                            fActive++;
                            break;
                        case FogOfWar.Nothing:
                            fNothing++;
                            break;
                    }
                }
                if(fActive > 0) {
                    if(isDead) {
                        // Know Building Is Dead Now
                        state.teams[teamIndex].ViewedEnemyBuildings.Remove(vb);
                        Added = false;
                        Finish();
                        return;
                    }
                    else {
                        vb.BuildAmount = 1 - ((float)building.BuildAmountLeft / (float)building.Data.BuildAmount);
                    }
                }
                else if(fNothing == Data.GridSize.X * Data.GridSize.Y) {
                    // Not To Be Seen Anymore
                    state.teams[teamIndex].ViewedEnemyBuildings.Remove(vb);
                    Added = false;
                    if(isDead) {
                        // Early Exit
                        Finish();
                        return;
                    }
                }
            }
        }