/* * Tutorial.script * Authors: * Copyright (c) 2007-2008 Cornell University This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // The tutorial for MaritimeDefender System.Collections.Generic.List sections = new System.Collections.Generic.List(); System.Collections.Generic.List dialogs; Util.DialogScreen dialogscreen; MaritimeDefender.TutorialSection.Code init; MaritimeDefender.TutorialSection.Code deinit; MaritimeDefender.TutorialSection.Check check; // Section 1: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(0); game.ShowMouseCursor = false; int screenWidth = ts.GraphicsDevice.Viewport.Width; int screenHeight = ts.GraphicsDevice.Viewport.Height; MaritimeDefender.Entity WSISlide = ((MaritimeDefender.TutorialScreen)ts).newEntity("General/WSIMissionBriefSlide"); WSISlide.X = screenWidth * (0.50f); WSISlide.Y = screenHeight * (0.375f); WSISlide.Z = 1f; WSISlide.Width = screenWidth * (1f); WSISlide.Height = screenHeight * (0.75f); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("CDR NOVAH", "Good evening, LT. We don't have much time so I'll keep it short. We have received a distress signal from a freighter in sector 7G.", "Portraits/CDRNovah", Util.Corner.BottomRight, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).clearEntities(); ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(1); }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 2: init = delegate(Util.GameScreen ts) { int screenWidth = ts.GraphicsDevice.Viewport.Width; int screenHeight = ts.GraphicsDevice.Viewport.Height; //Freighter flying scene MaritimeDefender.Entity freighter = ((MaritimeDefender.TutorialScreen)ts).newEntity("MiniGames/FreighterIcon"); freighter.X = -1 * screenWidth * (0.10f); freighter.Y = screenHeight * (0.6f); freighter.Width = screenWidth * (0.05615f); freighter.Height = screenHeight * (0.01f); freighter.dX = screenWidth * (0.11f); //Fixed Stars string starImagePath = "General/White"; MaritimeDefender.Entity star1 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star1.X = screenWidth * (0.10f); star1.Y = screenHeight * (0.50f); star1.Width = 1f; star1.Height = 1f; MaritimeDefender.Entity star2 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star2.X = screenWidth * (0.22f); star2.Y = screenHeight * (0.24f); star2.Width = 1f; star2.Height = 1f; MaritimeDefender.Entity star3 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star3.X = screenWidth * (0.29f); star3.Y = screenHeight * (0.68f); star3.Width = 1f; star3.Height = 1f; MaritimeDefender.Entity star4 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star4.X = screenWidth * (0.34f); star4.Y = screenHeight * (0.31f); star4.Width = 1f; star4.Height = 1f; MaritimeDefender.Entity star5 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star5.X = screenWidth * (0.36f); star5.Y = screenHeight * (0.95f); star5.Width = 1f; star5.Height = 1f; MaritimeDefender.Entity star6 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star6.X = screenWidth * (0.45f); star6.Y = screenHeight * (0.46f); star6.Width = 1f; star6.Height = 1f; MaritimeDefender.Entity star7 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star7.X = screenWidth * (0.66f); star7.Y = screenHeight * (0.87f); star7.Width = 1f; star7.Height = 1f; MaritimeDefender.Entity star8 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star8.X = screenWidth * (0.72f); star8.Y = screenHeight * (0.46f); star8.Width = 1f; star8.Height = 1f; MaritimeDefender.Entity star9 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star9.X = screenWidth * (0.88f); star9.Y = screenHeight * (0.16f); star9.Width = 1f; star9.Height = 1f; MaritimeDefender.Entity star10 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star10.X = screenWidth * (0.43f); star10.Y = screenHeight * (0.24f); star10.Width = 1f; star10.Height = 1f; MaritimeDefender.Entity star11 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star11.X = screenWidth * (0.83f); star11.Y = screenHeight * (0.28f); star11.Width = 1f; star11.Height = 1f; MaritimeDefender.Entity star12 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star12.X = screenWidth * (0.24f); star12.Y = screenHeight * (0.76f); star12.Width = 1f; star12.Height = 1f; MaritimeDefender.Entity star13 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star13.X = screenWidth * (0.38f); star13.Y = screenHeight * (0.68f); star13.Width = 1f; star13.Height = 1f; MaritimeDefender.Entity star14 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star14.X = screenWidth * (0.46f); star14.Y = screenHeight * (0.76f); star14.Width = 1f; star14.Height = 1f; MaritimeDefender.Entity star15 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star15.X = screenWidth * (0.55f); star15.Y = screenHeight * (0.21f); star15.Width = 1f; star15.Height = 1f; MaritimeDefender.Entity star16 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star16.X = screenWidth * (0.78f); star16.Y = screenHeight * (0.34f); star16.Width = 1f; star16.Height = 1f; MaritimeDefender.Entity star17 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star17.X = screenWidth * (0.81f); star17.Y = screenHeight * (0.59f); star17.Width = 1f; star17.Height = 1f; MaritimeDefender.Entity star18 = ((MaritimeDefender.TutorialScreen)ts).newEntity(starImagePath); star18.X = screenWidth * (0.99f); star18.Y = screenHeight * (0.76f); star18.Width = 1f; star18.Height = 1f; }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("FREIGHTER PILOT", "Mayday, Mayday! This is maritime vessel FV-047AF. I am being pursued and need help!", null, Util.Corner.TopLeft, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).clearEntities(); ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(2); }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 3: init = delegate(Util.GameScreen ts) { int screenWidth = ts.GraphicsDevice.Viewport.Width; int screenHeight = ts.GraphicsDevice.Viewport.Height; MaritimeDefender.Entity DragoonSlide = ((MaritimeDefender.TutorialScreen)ts).newEntity("MiniGames/MMDragoonSchematic"); DragoonSlide.X = screenWidth * (0.50f); DragoonSlide.Y = screenHeight * (0.375f); DragoonSlide.Z = 1f; DragoonSlide.Width = screenWidth * (1f); DragoonSlide.Height = screenHeight * (0.75f); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("CDR NOVAH", "The freighter is under attack by a Dragoon bomber. It will take several jumps to reach the Dragoon from here, but with luck and good jumps you should be able to reach it before it's too late.", "Portraits/CDRNovah", Util.Corner.BottomRight, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).clearEntities(); ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(3); }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 4: init = delegate(Util.GameScreen ts) { int screenWidth = ts.GraphicsDevice.Viewport.Width; int screenHeight = ts.GraphicsDevice.Viewport.Height; MaritimeDefender.Entity FreighterSlide = ((MaritimeDefender.TutorialScreen)ts).newEntity("MiniGames/MMFreighterSchematic"); FreighterSlide.X = screenWidth * (0.50f); FreighterSlide.Y = screenHeight * (0.375f); FreighterSlide.Z = 1f; FreighterSlide.Width = screenWidth * (1f); FreighterSlide.Height = screenHeight * (0.75f); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("CDR NOVAH", "Friendly ships may warp in to give you help, but be careful since hostile ships have also been spotted. Now get out there and good luck!", "Portraits/CDRNovah", Util.Corner.BottomRight, 0, true)); dialogs.Add(new Util.Dialog("FLASH", "Roger that!", "Portraits/FlashFlightSuit", Util.Corner.BottomLeft, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).clearEntities(); ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(4); }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 5: init = delegate(Util.GameScreen ts) { Util.CSharpHelper.DoSimpleFile(((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).RootDirectory + @"\Content\Scripts\Launch.script", ((MaritimeDefender.TutorialScreen)ts).mGame, "game"); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SetGamePhase("Shooter"); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).DisallowFireAndConnect(); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mLPressed = false; ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mRPressed = false; ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mStarField.SetActive(true); }; deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(5); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "To steer your ship, press the left and right arrow keys (try it now).", "Portraits/Robot1", Util.Corner.TopLeft, 0, false)); dialogscreen = new Util.DialogScreen(dialogs); check = delegate(Util.GameScreen ts) { return ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mLPressed && ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mRPressed; }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, check) ); // Section 6: deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(6); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "You can also fly upside down. Press and hold the left or right arrow until you reach the top of the screen.", "Portraits/Robot1", Util.Corner.TopLeft, 0, false)); dialogscreen = new Util.DialogScreen(dialogs); check = delegate(Util.GameScreen ts) { return ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mPlayerShip.Y < -.5f; }; sections.Add( new MaritimeDefender.TutorialSection(null, deinit, dialogscreen, check) ); // Section 7: deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(7); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "Regardless of how the ship is turned around, the left arrow moves the ship to port and the right arrow moves it to starboard.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "So when you're upside down it may seem as though you are steering backwards, until you get used to it.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "Fly back down to the bottom of the screen and I'll go over your weapons.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, false)); dialogscreen = new Util.DialogScreen(dialogs); check = delegate(Util.GameScreen ts) { return ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mPlayerShip.Y > .5f; }; sections.Add( new MaritimeDefender.TutorialSection(null, deinit, dialogscreen, check) ); // Section 8: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).AllowFire(); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SpawnMeteors(6); }; deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(8); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "Press space bar to fire photonic torpedoes. They can be used to destroy meteors and other debris.", "Portraits/Robot1", Util.Corner.TopLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "You have unlimited ammunition, and you can hold down the space bar to fire continuously.", "Portraits/Robot1", Util.Corner.TopLeft, 0, false)); dialogscreen = new Util.DialogScreen(dialogs); check = delegate(Util.GameScreen ts) { return !((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).MeteorsExist(); }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, check) ); // Section 9: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mConnected = false; ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SpawnUnitWormhole(2f); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).AllowConnect(); }; deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(9); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "Other vessels may jump through wormholes to give you help. Align your vessel with a wormhole and press the up arrow key to open it. This takes a lot of energy and will drain your engines for a few seconds.", "Portraits/Robot1", Util.Corner.TopLeft, 0, false)); dialogscreen = new Util.DialogScreen(dialogs); check = delegate(Util.GameScreen ts) { return ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mConnected; }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, check) ); // Section 10: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SpawnFriendly(); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "This is a friendly ship and should not be fired on. Remain in front of this ship to recieve an item.", "Portraits/Robot1", Util.Corner.TopLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "You have received a weapons upgrade! Friendly ships may also send you bonus resources for your colony.", "Portraits/Robot1", Util.Corner.TopLeft, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).AllowTurns(); ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(10); }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 11: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mConnected = false; ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SpawnUnitWormhole(3f); }; deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(11); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "Another wormhole has appeared. This time an enemy will jump through it. Align yourself with the wormhole, press the up arrow key to open it, and then space bar to fire at the enemy until it is destroyed.", "Portraits/Robot1", Util.Corner.TopLeft, 0, false)); dialogscreen = new Util.DialogScreen(dialogs); check = delegate(Util.GameScreen ts) { return ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mConnected; }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, check) ); // Section 12: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SpawnBogie(); }; deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(12); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "Warning: hostile vessel spotted! Press space bar to fire photonic torpedoes!", "Portraits/Robot1", Util.Corner.TopLeft, 10, false)); dialogs.Add(new Util.Dialog("INFOBOT", "Your shields can withstand several hits. They also regenerate over time. However, if your shield power drops below zero your ship will be destroyed.", "Portraits/Robot1", Util.Corner.TopLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "The ships used by friendly and hostile forces change each time you begin this mission. Base will tell you which ships are which each time you launch.", "Portraits/Robot1", Util.Corner.TopLeft, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 13: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SetGamePhase("Shooter2DotTestTransition"); }; deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(13); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "A green wormhole has appeared. You will automatically enter it to warp closer to your objective. Prepare to jump.", "Portraits/Robot1", Util.Corner.TopLeft, 7, false)); dialogscreen = new Util.DialogScreen(dialogs); sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 14: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mStationaryDots.SetActive(true); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SetDotTutorialBindings(); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SetDrift(MaritimeDefender.MaritimeDefender.Directions.Right); }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "You are now in hyperspace, speeding past millions of stars. Sometimes you will drift off course. When this happens, the stars seem to drift to one side or another.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "You must correct this drift by steering back towards the stars:\nIf you see the stars moving LEFT, press the LEFT arrow.\nIf you see the stars moving RIGHT, press the RIGHT arrow.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).ForceTurn(MaritimeDefender.MaritimeDefender.Directions.Right); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SetDrift(MaritimeDefender.MaritimeDefender.Directions.None); ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(14); }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, null) ); // Section 15: init = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SetDrift(MaritimeDefender.MaritimeDefender.Directions.Left); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mLPressed = false; }; dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "Now you try. Press the left arrow key.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, false)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).ForceTurn(MaritimeDefender.MaritimeDefender.Directions.Left); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).SetDrift(MaritimeDefender.MaritimeDefender.Directions.None); ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(15); }; check = delegate(Util.GameScreen ts) { return ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mLPressed; }; sections.Add( new MaritimeDefender.TutorialSection(init, deinit, dialogscreen, check) ); // Section 16: dialogs = new System.Collections.Generic.List(); dialogs.Add(new Util.Dialog("INFOBOT", "Steering in the wrong direction, or not steering in time, will waste energy.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "Sometimes it's difficult to notice a hyperspace drift, and even the best pilots get off course a lot. Just try your best and you will soon reach the end of the hyperspace jump.", "Portraits/Robot1", Util.Corner.BottomLeft, 0, true)); dialogs.Add(new Util.Dialog("INFOBOT", "This concludes your training. Good luck!", "Portraits/Robot1", Util.Corner.BottomLeft, 0, true)); dialogscreen = new Util.DialogScreen(dialogs); deinit = delegate(Util.GameScreen ts) { Util.CSharpHelper.DoSimpleFile(((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).RootDirectory + @"\Content\Scripts\LeaveWarp.script", ((MaritimeDefender.TutorialScreen)ts).mGame, "game"); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).mCockpit.Visible = false; game.ShowMouseCursor = true; ((MaritimeDefender.TutorialScreen)ts).TutorialEventSelect(16); ((MaritimeDefender.MaritimeDefender)((MaritimeDefender.TutorialScreen)ts).mGame).ReturnToTitleScreen(); }; sections.Add( new MaritimeDefender.TutorialSection(null, deinit, dialogscreen, null) ); return new MaritimeDefender.TutorialScreen(game, sections);