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); }
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); }