public override bool ForwardAction(TimeMachine timeMachine, GameState.GameState state)
        {
            Entity drillLocation = state.GetEntity(GetEventData().SourceId);

            if (drillLocation != null && drillLocation is Outpost && !(drillLocation is Mine) && !((Outpost)drillLocation).GetComponent <DrillerCarrier>().IsDestroyed())
            {
                _original = (Outpost)drillLocation;
                var drillerCarrier = drillLocation.GetComponent <DrillerCarrier>();
                if (state.GetOutposts().Contains(_original) && !drillerCarrier.GetOwner().IsEliminated() && drillerCarrier.GetDrillerCount() >= drillerCarrier.GetOwner().GetRequiredDrillersToMine())
                {
                    _drilledMine = new Mine(_original);
                    if (state.ReplaceOutpost(_original, _drilledMine))
                    {
                        drillerCarrier.RemoveDrillers(drillerCarrier.GetOwner().GetRequiredDrillersToMine());
                        drillerCarrier.GetOwner().AlterMinesDrilled(1);
                        timeMachine.AddEvent(new NeptuniumProductionEvent(_drilledMine, GetOccursAt().Advance(Mine.TICKS_PER_PRODUCTION_PER_MINE / state.GetPlayerOutposts(drillerCarrier.GetOwner()).Count)));
                        EventSuccess = true;
                    }
                }
            }
            else
            {
                EventSuccess = false;
            }
            return(EventSuccess);
        }
Esempio n. 2
0
 public override bool ForwardAction(TimeMachine timeMachine, GameState.GameState state)
 {
     if (!_mine.GetComponent <DrillerCarrier>().GetOwner().IsEliminated() && state.GetOutposts().Contains(_mine) && !_mine.GetComponent <DrillerCarrier>().IsDestroyed())
     {
         _mine.GetComponent <DrillerCarrier>().GetOwner().AlterNeptunium(1);
         this._nextProduction = new NeptuniumProductionEvent(_mine, GetOccursAt().Advance(Mine.TICKS_PER_PRODUCTION_PER_MINE / state.GetPlayerOutposts(_mine.GetComponent <DrillerCarrier>().GetOwner()).Count));
         timeMachine.AddEvent(this._nextProduction);
         EventSuccess = true;
     }
     else
     {
         EventSuccess = false;
     }
     return(EventSuccess);
 }