Exemplo n.º 1
0
        public CreditState(Game1 Game, string name) :
            base(Game, name)
        {
            int xOffset = 10;
            int yOffset = 10;

            spriteFont  = Game.fontManager.GetFont(14);
            textBoxLeft = TextUtils.CreateTextBox(spriteFont, new Rectangle(xOffset, yOffset, Game1.ScreenSize.X / 2 - xOffset,
                                                                            Game1.ScreenSize.Y - 20), false, false,
                                                  "Design and development:\nDaniel Alm Grundstrom\nJakob Willforss\nJohan Philipsson\n\n" +
                                                  "Visuals:\nDaniel Alm Grundstrom\n\n" +
                                                  "Music:\nJakob Willforss\nDaniel Alm Grundstrom\n\n" +
                                                  "Story:\nJakob Willforss\n\n" +
                                                  "Portraits:\nJosefin Voigt (many thanks!)\n\n" +
                                                  "Beta testers:\nDaniel W.\nRasmus G.\nErik M.\nJohannes E.\nVidmantas\nJohan W.\nMarkus J.\n\nAnd a big thanks to all of our alpha testers!");

            textBoxRight = TextUtils.CreateTextBox(spriteFont, new Rectangle(Game1.ScreenSize.X / 2 + xOffset, yOffset, Game1.ScreenSize.X / 2 - xOffset,
                                                                             Game1.ScreenSize.Y - 20), false, false,
                                                   "Fonts:\n- 'Iceland' by Cyreal (SIL Open Font License) Downloaded from Google Fonts\n- 'ISL Jupiter' by Isurus Labs (Public domain) Downloaded from dafont.com \n\n" +
                                                   "Space sounds:\n- 'Space Music Ambient' by evanjones4 (Creative Commons 0 Licence) Downloaded from FreeSound.org \n\n" +
                                                   "Sound effects:\n- 'menu click' by fins (Creative Commons 0 Licence) Downloaded from FreeSound.org \n- 'Hover 2' by plasterbrain " +
                                                   "(Creative Commons 0 Licence) Downloaded from FreeSound.org \n- '" +
                                                   "ship fire' by Nbs Dark (Creative Commons 0 Licence) Downloaded from FreeSound.org \n- 'Thruster_Level_II' by nathanshadow (Sampling+ Licence) Downloaded from FreeSound.org \n" +
                                                   "- 'Huge Explosion' by Tobiasz 'unfa' Karon (CC Attribution 3.0 Unported Licence) Downloaded from https://www.freesound.org/people/unfa/sounds/259300/");
        }
        public void DisplayMissionFailedText()
        {
            BaseStateManager.TextBoxes.Clear();

            List <Mission> failedMissions = MissionManager.ReturnFailedMissions(BaseState.GetBase().name);

            String[] temp = failedMissions[0].FailedText.Split('#');

            SetPortraitFromText(temp[0]);

            SetTextRectangle();

            BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                   tempRect,
                                                                   false, true,
                                                                   temp[0]));

            if (temp.Length > 1)
            {
                for (int i = temp.Length - 1; i > 0; i--)
                {
                    MissionManager.MissionEventBuffer.Insert(0, temp[i]);
                }
            }

            MissionManager.MarkFailedMissionAsDead(failedMissions[0].MissionID);

            BaseStateManager.ButtonControl = ButtonControl.Confirm;
        }
        public void DisplayMissionCompletedText()
        {
            if (MissionManager.MissionEventBuffer.Count <= 0)
            {
                List <String> temp = new List <String>();

                Game.SaveOnEnterOverworld = true;

                BaseStateManager.TextBoxes.Clear();

                List <Mission> completedMissions = MissionManager.ReturnCompletedMissions(BaseState.GetBase().name);

                foreach (String str in completedMissions[0].CompletedText.Split('#'))
                {
                    temp.Add(str);
                }

                SetPortraitFromText(temp[0]);
                SetTextRectangle();

                if (HasReward(completedMissions[0]))
                {
                    if (HasRewardItem(completedMissions[0]))
                    {
                        if (ShipInventoryManager.HasAvailableSlot())
                        {
                            temp.Add(GetRewardText(completedMissions[0]));
                        }

                        else
                        {
                            temp.Add(GetNoEmptySlotText(completedMissions[0]));
                        }
                    }
                    else
                    {
                        temp.Add(GetRewardText(completedMissions[0]));
                    }
                }

                BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                       tempRect,
                                                                       false, true,
                                                                       temp[0]));

                MissionManager.MarkCompletedMissionAsDead(completedMissions[0].MissionID);

                BaseStateManager.ButtonControl = ButtonControl.Confirm;

                for (int i = 1; i < temp.Count; i++)
                {
                    MissionManager.MissionEventBuffer.Add(temp[i]);
                }
            }
        }
        public void DisplayMissionAcceptFailedText()
        {
            BaseStateManager.TextBoxes.Clear();

            SetPortraitFromText(selectedMission.AcceptFailedText);

            SetTextRectangle();

            BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                   tempRect,
                                                                   false, true,
                                                                   selectedMission.AcceptFailedText));

            missionCursorIndex = 0;

            BaseStateManager.ButtonControl = ButtonControl.Confirm;
        }
        public void DisplayAvailableMissions(List <Mission> availableMissions)
        {
            int selectionCount;

            BaseState.DisplayOverlay(OverlayType.MissionSelection);
            BaseStateManager.TextBoxes.Clear();
            BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(Game.fontManager.GetFont(16), new Rectangle((Game1.ScreenSize.X / 2),
                                                                                                               (Game1.ScreenSize.Y / 2) - (int)SelectionOverlaySize.Y / 2 + 20,
                                                                                                               Game1.ScreenSize.X - 20, 10),
                                                                   true, false, "Available Missions:" + "\n\n"));

            if (availableMissions.Count > 0)
            {
                for (int i = 0; i < availableMissions.Count; i++)
                {
                    BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(Game.fontManager.GetFont(16),
                                                                           new Rectangle((Game1.ScreenSize.X / 2),
                                                                                         Game1.ScreenSize.Y / 2 - 40 + 20 * availableMissions.IndexOf(availableMissions[i]) + 1,
                                                                                         Game1.ScreenSize.X - 20,
                                                                                         10),
                                                                           true, false,
                                                                           availableMissions[i].MissionName));
                }

                selectionCount = availableMissions.Count;
            }

            else
            {
                BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(Game.fontManager.GetFont(16), new Rectangle((Game1.ScreenSize.X / 2),
                                                                                                                   ((Game1.ScreenSize.Y / 2) - 40),
                                                                                                                   Game1.ScreenSize.X - 20,
                                                                                                                   10),
                                                                       true, false,
                                                                       "<None>"));

                selectionCount = 1;
            }

            BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(Game.fontManager.GetFont(16),
                                                                   new Rectangle((Game1.ScreenSize.X / 2),
                                                                                 ((Game1.ScreenSize.Y / 2) - 40) + 20 * (selectionCount + 1),
                                                                                 Game1.ScreenSize.X / 2, 10),
                                                                   true, false,
                                                                   "Back"));
        }
        public void DisplayMissionIntroduction()
        {
            BaseStateManager.TextBoxes.Clear();

            if (SelectedMission != null)
            {
                String[] temp = SelectedMission.IntroductionText.Split('#');

                SetPortraitFromText(temp[0]);
                tempRect = BaseStateManager.ResponseTextRectangle;
                BaseState.DisplayOverlay(OverlayType.Response);
                BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                       tempRect,
                                                                       false, true,
                                                                       temp[0]));

                BaseStateManager.ButtonControl = ButtonControl.Response;
                ResponseCursorIndex            = 0;

                if (temp.Length > 1)
                {
                    for (int i = temp.Length - 1; i > 0; i--)
                    {
                        MissionManager.MissionStartBuffer.Insert(0, temp[i]);
                        BaseStateManager.ButtonControl = ButtonControl.Confirm;
                    }
                }

                else
                {
                    BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                           BaseStateManager.ResponseRectangle1,
                                                                           true, false,
                                                                           SelectedMission.PosResponse));

                    BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                           BaseStateManager.ResponseRectangle2,
                                                                           true, false,
                                                                           SelectedMission.NegResponse));

                    BaseStateManager.ButtonControl = ButtonControl.Response;
                    ResponseCursorIndex            = 0;
                }
            }
        }
        public void MissionEvent()
        {
            BaseStateManager.TextBoxes.Clear();

            if (MissionManager.MissionEventBuffer.Count > 0)
            {
                SetPortraitFromText(MissionManager.MissionEventBuffer[0]);

                SetTextRectangle();

                if (MissionManager.MissionResponseBuffer.Count > 0)
                {
                    tempRect = BaseStateManager.ResponseTextRectangle;
                    BaseState.DisplayOverlay(OverlayType.Response);
                }

                BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                       tempRect,
                                                                       false, true,
                                                                       MissionManager.MissionEventBuffer[0]));

                MissionManager.MissionEventBuffer.RemoveAt(0);

                BaseStateManager.ButtonControl = ButtonControl.Confirm;

                if (MissionManager.MissionResponseBuffer.Count > 0)
                {
                    for (int i = 0; i < MissionManager.MissionResponseBuffer.Count; i++)
                    {
                        BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                               BaseStateManager.ResponseRectangles[i],
                                                                               true, false,
                                                                               TextUtils.WordWrap(BaseState.Game.fontManager.GetFont(14),
                                                                                                  MissionManager.MissionResponseBuffer[i],
                                                                                                  Game1.ScreenSize.X * 2 / 3)
                                                                               ));
                    }

                    BaseStateManager.ButtonControl = ButtonControl.Response;
                }
            }
        }
        public void DisplayMissionStartBufferText()
        {
            BaseStateManager.TextBoxes.Clear();

            SetPortraitFromText(MissionManager.MissionStartBuffer[0]);

            tempRect = BaseStateManager.ResponseTextRectangle;
            BaseState.DisplayOverlay(OverlayType.Response);

            BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                   tempRect,
                                                                   false, true,
                                                                   MissionManager.MissionStartBuffer[0]));

            MissionManager.MissionStartBuffer.Remove(MissionManager.MissionStartBuffer[0]);

            if (MissionManager.MissionStartBuffer.Count > 0)
            {
                BaseStateManager.ButtonControl = ButtonControl.Confirm;
            }

            if (MissionManager.MissionStartBuffer.Count == 0)
            {
                BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                       BaseStateManager.ResponseRectangle1,
                                                                       true, false,
                                                                       SelectedMission.PosResponse));

                BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                       BaseStateManager.ResponseRectangle2,
                                                                       true, false,
                                                                       SelectedMission.NegResponse));

                BaseStateManager.ButtonControl = ButtonControl.Response;
                ResponseCursorIndex            = 0;
            }
        }
        public void DisplayMissionAcceptText()
        {
            if (SelectedMission.AcceptText[0].ToLower().Equals("empty"))
            {
                MissionManager.MarkMissionAsActive(selectedMission.MissionID);
                BaseStateManager.ChangeMenuSubState("Overview");
                BaseStateManager.ActiveButton     = BaseStateManager.AllButtons[BaseStateManager.ActiveButtonIndexY];
                selectedMission.IntroductionText += "/ok";

                return;
            }
            if (selectedMission.RequiresAvailableSlot)
            {
                if (ShipInventoryManager.HasAvailableSlot())
                {
                    String[] temp = SelectedMission.AcceptText[selectedMission.AcceptIndex].Split('#');

                    SetPortraitFromText(temp[0]);

                    BaseStateManager.TextBoxes.Clear();

                    MissionManager.MarkMissionAsActive(selectedMission.MissionID);

                    SetTextRectangle();

                    BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                           tempRect, false, true, temp[0]));

                    if (temp.Length > 1)
                    {
                        for (int i = temp.Length - 1; i > 0; i--)
                        {
                            MissionManager.MissionEventBuffer.Insert(0, temp[i]);
                        }
                    }

                    missionCursorIndex = 0;

                    BaseStateManager.ButtonControl = ButtonControl.Confirm;

                    selectedMission.IntroductionText += "/ok";
                }

                else
                {
                    DisplayMissionAcceptFailedText();
                }
            }

            else
            {
                String[] temp = SelectedMission.AcceptText[selectedMission.AcceptIndex].Split('#');

                SetPortraitFromText(temp[0]);

                BaseStateManager.TextBoxes.Clear();

                MissionManager.MarkMissionAsActive(selectedMission.MissionID);

                SetTextRectangle();

                BaseStateManager.TextBoxes.Add(TextUtils.CreateTextBox(BaseState.Game.fontManager.GetFont(14),
                                                                       tempRect, false, true, temp[0]));

                if (temp.Length > 1)
                {
                    for (int i = temp.Length - 1; i > 0; i--)
                    {
                        MissionManager.MissionEventBuffer.Insert(0, temp[i]);
                    }
                }

                missionCursorIndex = 0;

                BaseStateManager.ButtonControl = ButtonControl.Confirm;

                selectedMission.IntroductionText += "/ok";
            }
        }