protected override void SetupObjectives() { objectives.Clear(); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], delegate { SetupAllyShips(allyShips1, destinations[0].position, destinations[1]); }, delegate { }, delegate { return(true); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.OutsideRebelStation1), null, EventTextCanvas.MessageBox, PortraitID.Sair), delegate { }, delegate { }, delegate { return(GameStateManager.currentState.ToLower().Equals("overworldstate")); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.AtRebelRendezvous), null, EventTextCanvas.MessageBox, PortraitID.RebelTroopLeader), delegate { readyToLeave = false; allyShipRectangle = new Rectangle( (int)allyShips1[0].position.X - AllyShipRectOffset, (int)allyShips1[0].position.Y - AllyShipRectOffset, AllyShipRectWidth, AllyShipRectHeight); PopupHandler.DisplayPortraitMessage(PortraitID.Rok, "[Rok] \"Talk to the ships waiting nearby our base when you're ready to leave.\""); }, delegate { if (CollisionDetection.IsRectInRect(Game.player.Bounds, allyShipRectangle) && (ControlManager.CheckPress(RebindableKeys.Action1) || ControlManager.CheckKeyPress(Keys.Enter)) && GameStateManager.currentState.Equals("OverworldState")) { PopupHandler.DisplaySelectionMenu("[Rebel Pilot] Ready to go?", new List <string>() { "Yes", "No" }, new List <System.Action>() { delegate { readyToLeave = true; }, delegate { readyToLeave = false; } }); } }, delegate { return(readyToLeave); }, delegate { return(false); })); //objectives.Add(new CloseInOnLocationObjective(Game, this, ObjectiveDescriptions[0], // 200, new EventTextCapsule(GetEvent((int)EventID.AtRebelRendezvous), null, EventTextCanvas.MessageBox, PortraitID.RebelTroopLeader))); AutoPilotObjective autoPilotObjective = new AutoPilotObjective(Game, this, ObjectiveDescriptions[0], AutoPilotSpeed, allyShips1, destinations[3].position, new EventTextCapsule(GetEvent((int)EventID.ArriveAtScienceStation), null, EventTextCanvas.MessageBox, PortraitID.RebelTroopLeader), false); autoPilotObjective.Initialize(); autoPilotObjective.SetTimedMessages(new Dictionary <string, List <float> > { { GetEvent((int)EventID.TravelToScienceStation1).Text, new List <float> { 5000, 3000 } }, { GetEvent((int)EventID.TravelToScienceStation2).Text, new List <float> { 1000, 3000 } }, { GetEvent((int)EventID.TravelToScienceStation3).Text, new List <float> { 13000, 3000 } } } , new List <List <PortraitID> >() { new List <PortraitID> { PortraitID.Ai }, new List <PortraitID> { PortraitID.Sair }, new List <PortraitID> { PortraitID.Ai } } , new List <List <int> > { new List <int> { }, new List <int> { }, new List <int> { } }); objectives.Add(autoPilotObjective); objectives.Add(new ShootingLevelObjective(Game, this, ObjectiveDescriptions[0], "Itnos_1", LevelStartCondition.TextCleared, new EventTextCapsule(GetEvent((int)EventID.AfterLevel1), null, EventTextCanvas.MessageBox, PortraitID.RebelTroopLeader))); objectives.Add(new ArriveAtLocationObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.InsideScienceStation1), null, EventTextCanvas.MessageBox, PortraitID.Sair))); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.InsideScienceStation2), null, EventTextCanvas.MessageBox), delegate { }, delegate { }, delegate { return(true); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.InsideScienceStation3), null, EventTextCanvas.MessageBox, PortraitID.Ente), delegate { }, delegate { }, delegate { return(true); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[1], new EventTextCapsule(GetEvent((int)EventID.OutsideScienceStation), null, EventTextCanvas.MessageBox, PortraitID.Sair), delegate { RemoveShips(); }, delegate { }, delegate { return(GameStateManager.currentState == "OverworldState"); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[1], new EventTextCapsule(GetEvent((int)EventID.BreakThroughLevel), null, EventTextCanvas.MessageBox, PortraitID.Sair), delegate { hangarAttackTime = StatsManager.PlayTime.GetFutureOverworldTime(2000); }, delegate { }, delegate { return(StatsManager.PlayTime.HasOverworldTimePassed(hangarAttackTime)); }, delegate { return(false); })); objectives.Add(new ShootingLevelObjective(Game, this, ObjectiveDescriptions[1], "Itnos_2", LevelStartCondition.TextCleared, new EventTextCapsule(GetEvent((int)EventID.AfterLevel2), null, EventTextCanvas.MessageBox, PortraitID.RebelTroopLeader))); objectives.Add(new CloseInOnLocationObjective(Game, this, ObjectiveDescriptions[1], 200, new EventTextCapsule(GetEvent((int)EventID.OutsideRebelStation2), null, EventTextCanvas.MessageBox, PortraitID.Ente))); objectives.Add(new ArriveAtLocationObjective(Game, this, ObjectiveDescriptions[1])); }
protected override void SetupObjectives() { float time = 0; objectives.Clear(); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], delegate { SetupAllyShips(allyShips1, fortrunStation.position, newNorrland); }, delegate { }, delegate { return(true); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.OutsideFortrun1), null, EventTextCanvas.MessageBox, PortraitID.Sair), delegate { time = StatsManager.PlayTime.GetFutureOverworldTime(500); }, delegate { }, delegate { return(StatsManager.PlayTime.HasOverworldTimePassed(time)); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.OutsideFortrun2), null, EventTextCanvas.MessageBox, PortraitID.Ai), delegate { readyToLeave = false; allyShipRectangle = new Rectangle( (int)allyShips1[0].position.X - AllyShipRectOffset, (int)allyShips1[0].position.Y - AllyShipRectOffset, AllyShipRectWidth, AllyShipRectHeight); PopupHandler.DisplayPortraitMessage(PortraitID.Ai, "[Ai] \"Talk to the alliance ships waiting outside Fortrun when you're ready to leave.\"#\"Don't forget to stop by the shop and upgrade your equipment if you have not done so already!\""); }, delegate { if (CollisionDetection.IsRectInRect(Game.player.Bounds, allyShipRectangle) && (ControlManager.CheckPress(RebindableKeys.Action1) || ControlManager.CheckKeyPress(Keys.Enter)) && GameStateManager.currentState.Equals("OverworldState")) { PopupHandler.DisplaySelectionMenu("[Ai] Ready to go?", new List <string>() { "Yes", "No" }, new List <System.Action>() { delegate { readyToLeave = true; }, delegate { readyToLeave = false; } }); } }, delegate { return(readyToLeave); }, delegate { return(false); })); AutoPilotObjective autoPilotObjective1 = new AutoPilotObjective(Game, this, ObjectiveDescriptions[1], AutoPilotSpeed, allyShips1, fortrunStation.position, new EventTextCapsule(GetEvent((int)EventID.OutsideNewNorrland), null, EventTextCanvas.MessageBox, PortraitID.Ai)); autoPilotObjective1.Initialize(); autoPilotObjective1.SetTimedMessages(new Dictionary <string, List <float> > { { GetEvent((int)EventID.ToNewNorrland1).Text, new List <float> { 3000, 3000 } }, { GetEvent((int)EventID.ToNewNorrland2).Text, new List <float> { 20000, 3000 } } }, null, null); objectives.Add(autoPilotObjective1); objectives.Add(new ShootingLevelObjective(Game, this, ObjectiveDescriptions[1], "DefendColonyBreak", LevelStartCondition.TextCleared)); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[0], new EventTextCapsule(GetEvent((int)EventID.FirstLevelCompleted), null, EventTextCanvas.MessageBox, PortraitID.Ai), delegate { Game.stateManager.GotoPlanetSubScreen("New Norrland", "Overview"); }, delegate { }, delegate { return(true); }, delegate { return(false); })); objectives.Add(new ShootingLevelObjective(Game, this, ObjectiveDescriptions[1], "DefendColonyHold", LevelStartCondition.TextCleared, new EventTextCapsule(GetEvent((int)EventID.SecondLevelCompleted), null, EventTextCanvas.MessageBox, PortraitID.Ai))); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[1], delegate { RemoveShips(allyShips1); SetupAllyShips(allyShips2, new Vector2(newNorrland.position.X + 0, newNorrland.position.Y - 625), fortrunStation); }, delegate { }, delegate { return(true); }, delegate { return(false); })); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[2], new EventTextCapsule(new EventText("[Ai] \"Let's go\""), null, EventTextCanvas.MessageBox, PortraitID.Ai), delegate { allyShipRectangle = new Rectangle( (int)allyShips2[0].position.X - AllyShipRectOffset, (int)allyShips2[0].position.Y - AllyShipRectOffset, AllyShipRectWidth, AllyShipRectHeight); readyToLeave = false; PopupHandler.DisplayPortraitMessage(PortraitID.Ai, "[Ai] \"Talk to the alliance ships waiting outside New Norrland when you're ready to leave.\""); }, delegate { if (CollisionDetection.IsRectInRect(Game.player.Bounds, allyShipRectangle) && (ControlManager.CheckPress(RebindableKeys.Action1) || ControlManager.CheckKeyPress(Keys.Enter)) && GameStateManager.currentState.Equals("OverworldState")) { PopupHandler.DisplaySelectionMenu("[Ai] Ready to head back?", new List <string>() { "Yes", "No" }, new List <System.Action>() { delegate { readyToLeave = true; }, delegate { readyToLeave = false; } }); } }, delegate { return(readyToLeave); }, delegate { return(false); })); AutoPilotObjective autoPilotObjective = new AutoPilotObjective(Game, this, ObjectiveDescriptions[3], AutoPilotSpeed2, allyShips2, newNorrland.position, false); autoPilotObjective.Initialize(); autoPilotObjective.SetActivateRealTimeIndex(2); autoPilotObjective.SetTimedMessages( new Dictionary <string, List <float> > { { GetEvent((int)EventID.ToFortrun1).Text, new List <float> { 7000, 3000 } }, { GetEvent((int)EventID.ToFortrun2).Text, new List <float> { 1000, 3000 } }, { GetEvent((int)EventID.ToFortrun3).Text, new List <float> { 4000, 3000 } }, }, new List <List <PortraitID> >() { new List <PortraitID> { PortraitID.Sair, PortraitID.CommonCitizen }, new List <PortraitID> { PortraitID.Ai }, new List <PortraitID> { PortraitID.Sair } }, new List <List <int> > { new List <int> { 1 }, new List <int> { }, new List <int> { } }); objectives.Add(autoPilotObjective); objectives.Add(new CustomObjective(Game, this, ObjectiveDescriptions[3], delegate { RemoveShips(allyShips2); Game.stateManager.GotoStationSubScreen("Fortrun Station", "Mission"); }, delegate { }, delegate { return(true); }, delegate { return(false); })); objectives.Add(new ArriveAtLocationObjective(Game, this, ObjectiveDescriptions[3])); }