Inheritance: PopInOutSprite
示例#1
0
        public CursorArrow(int x, int y, int width, int height, Panel panel)
            : base(x, y, width, height)
        {
            this.panel = panel;
            this.setSmoothMoveType(SmoothMoveType.Sqrt);
            this.setPopDuration(POP_TIME);

            WorldManager.OffsetChanged += updateOffsets;
        }
示例#2
0
 public void moveToActivePanel(Panel panel)
 {
     if (panel == null)
         return;
     this.panel = panel;
     if (panel is IListPanel)
     {
         if (this.targetEntry != ((IListPanel)panel).getCurrentEntry())
         {
             this.targetEntry = ((IListPanel)panel).getCurrentEntry();
             moveToTargetEntry(POP_TIME);
         }
     }
 }
示例#3
0
 public static void goBack()
 {
     if (!menuOpen)
         return;
     nullCheck();
     Panel popped = panelStack.Pop();
     popped.onExit();
     PanelGroupSorter.panelOut(popped);
     if (panelStack.Count == 0)
     {
         close();
     }
     else
     {
         activePanel = panelStack.Peek();
         activePanel.onRefocus();
         menuArrow.moveToActivePanel(activePanel);
     }
 }
示例#4
0
 public ScrollBar(Panel owner)
     : this(owner, DEFAULT_WIDTH)
 {
 }
示例#5
0
 public ScrollBar(Panel owner, int width)
     : base(0, 0, width, width)
 {
     this.owner = owner;
     x_relative = owner.getWidth() - owner.getXMargin() + DEFAULT_X_OFFSET_FROM_RIGHT_MARGIN;
     y_relative = owner.getYMargin();
     x_offset = owner.getX();
     y_offset = owner.getY();
     this.startY = owner.getYMargin();
     this.maxHeight = owner.getHeight() - owner.getYMargin() * 2;
     this.setX(x_offset + x_relative);
     this.setY(y_offset + y_relative);
 }
示例#6
0
        /// <summary>
        /// Initializes all the menu panels and links them togther. Call this in the Game's
        /// create cycle. Lots of hard coding here! - we'll have to adjust it if the game's
        /// viewport size changes.
        /// </summary>
        public static void init()
        {
            if (initialized)
                return;

            //initialize static variables
            components = new List<Sprite>();
            panelStack = new Stack<Panel>();
            activePanel = menuBody;
            menuOpen = false;
            initialized = true;

            // places list
            placesScreen = new PlacesPanel(200, 480, 440, 380);
            placesScreen.setPopLocations(200, 480, 200, 100);
            placesScreen.setScrolling(7, 1);
            placesScreen.loadEntriesFromFile(Directories.TEXTDATA + "PlacesJournalInfo.txt");
            components.Add(placesScreen);

            // people list
            peopleScreen = new PeoplePanel(200, 480, 440, 380);
            peopleScreen.setPopLocations(200, 480, 200, 100);
            peopleScreen.setScrolling(7, 1);
            peopleScreen.loadEntriesFromFile(Directories.TEXTDATA + "PeopleJournalInfo.txt");
            components.Add(peopleScreen);

            // quest list
            questScreen = new QuestPanel(200, 480, 440, 380);
            questScreen.setPopLocations(200, 480, 200, 100);
            questScreen.setScrolling(7, 1);
            questScreen.loadEntriesFromFile(Directories.TEXTDATA + "QuestJournalInfo.txt");
            components.Add(questScreen);

            // journal prompt
            DialogPanel journalPrompt = new DialogPanel(200, -100, 440, 100);
            journalPrompt.setMessage("What type of info do you need?");
            journalPrompt.setRefreshMessage(journalPrompt.getMessage());
            ScreenSpecifierEntry questEntry = new ScreenSpecifierEntry("Quests", journalPrompt, questScreen);
            questEntry.setNewMessage("Looking up past and current quests...");
            questEntry.setOtherPanels(peopleScreen, placesScreen);
            ScreenSpecifierEntry peopleEntry = new ScreenSpecifierEntry("People", journalPrompt, peopleScreen);
            peopleEntry.setNewMessage("Looking up intel on individuals...");
            peopleEntry.setOtherPanels(questScreen, placesScreen);
            ScreenSpecifierEntry placesEntry = new ScreenSpecifierEntry("Places", journalPrompt, placesScreen);
            placesEntry.setNewMessage("Looking up intel on locations...");
            placesEntry.setOtherPanels(questScreen, peopleScreen);
            journalPrompt.loadEntries(questEntry, peopleEntry, placesEntry);
            journalPrompt.setPopLocations(200, -100, 200, 0);
            journalPrompt.setYMargin(20);
            journalPrompt.setYDivider(journalPrompt.getHeight() - 30);
            components.Add(journalPrompt);

            // clues info screen
            TextPanel cluesInfoScreen = new TextPanel(400, -200, 240, 200);
            cluesInfoScreen.setMessage("Info about the clue here.");
            cluesInfoScreen.setPopLocations(400, -200, 400, 0);
            components.Add(cluesInfoScreen);

            // clues list
            ListPanel cluesScreen = new CluePanel(200, 480, 200, 480, cluesInfoScreen);
            cluesScreen.setPopLocations(200, 480, 200, 0);
            components.Add(cluesScreen);

            // inventory item info screen
            TextPanel inventoryInfoScreen = new TextPanel(200, 480, 440, 150);
            inventoryInfoScreen.setMessage("This is where information about the item will appear.");
            inventoryInfoScreen.setPopLocations(200, 480, 200, 330);
            components.Add(inventoryInfoScreen);

            // inventory screen
            inventoryScreen = new InventoryPanel(200, -330, 440, 330);
            inventoryScreen.setMessagePanel(inventoryInfoScreen);
            inventoryScreen.loadEntriesFromFile(Directories.TEXTDATA + "ItemInfo.txt");
            inventoryScreen.setScrolling(5, 2);
            inventoryScreen.setPopLocations(200, -330, 200, 0);
            components.Add(inventoryScreen);

            // reputation screen
            ReputationPanel reputationScreen = new ReputationPanel(200, 480, 440, 480);
            reputationScreen.setPopLocations(200, 480, 200, 0);
            components.Add(reputationScreen);

            // sound config screen
            SoundConfigPanel soundConfigScreen = new SoundConfigPanel(200, 480, 440, 380);
            soundConfigScreen.setPopLocations(200, 480, 200, 100);
            components.Add(soundConfigScreen);

            // key config screen
            KeyConfigPanel keyConfigScreen = new KeyConfigPanel(200, 480, 440, 380);
            KeyModifierEntry keyAction = new KeyModifierEntry("Talk/Action/Confirm", keyConfigScreen, KeyInputType.Action);
            KeyModifierEntry keyCancel = new KeyModifierEntry("Go Back/Cancel", keyConfigScreen, KeyInputType.Cancel);
            KeyModifierEntry keyShoot = new KeyModifierEntry("Shoot", keyConfigScreen, KeyInputType.Shoot);
            KeyModifierEntry keyPickpocket = new KeyModifierEntry("Pickpocket", keyConfigScreen, KeyInputType.Pickpocket);
            KeyModifierEntry keyUp = new KeyModifierEntry("Move Up", keyConfigScreen, KeyInputType.MoveNorth);
            KeyModifierEntry keyDown = new KeyModifierEntry("Move Down", keyConfigScreen, KeyInputType.MoveSouth);
            KeyModifierEntry keyLeft = new KeyModifierEntry("Move Left", keyConfigScreen, KeyInputType.MoveWest);
            KeyModifierEntry keyRight = new KeyModifierEntry("Move Right", keyConfigScreen, KeyInputType.MoveEast);
            KeyModifierEntry keyToggleMenu = new KeyModifierEntry("Toggle Menu", keyConfigScreen, KeyInputType.MenuToggle);
            keyConfigScreen.loadEntries(keyAction, keyCancel, keyShoot, keyPickpocket, keyUp, keyDown, keyLeft, keyRight, keyToggleMenu);
            keyConfigScreen.alignEntriesVertical();
            keyConfigScreen.setPopLocations(200, 480, 200, 100);
            components.Add(keyConfigScreen);

            // config prompt
            DialogPanel configPrompt = new DialogPanel(200, -100, 440, 100);
            keyConfigScreen.setPreviousPanel(configPrompt);
            configPrompt.setMessage("What would you like to configure?");
            configPrompt.setRefreshMessage(configPrompt.getMessage());
            ScreenSpecifierEntry keyEntry = new ScreenSpecifierEntry("Key Controls", configPrompt, keyConfigScreen);
            keyEntry.setNewMessage("Configuring key controls... Press [" +
                Enum.GetName(typeof(Keys), KeyboardManager.getKeyControl(KeyInputType.Action)) +
                "] to modify the key.");
            keyEntry.setOtherPanels(soundConfigScreen);
            ScreenSpecifierEntry soundEntry = new ScreenSpecifierEntry("Sound", configPrompt, soundConfigScreen);
            soundEntry.setNewMessage("Configuring sound settings...");
            soundEntry.setOtherPanels(keyConfigScreen);
            configPrompt.loadEntries(keyEntry, soundEntry);
            configPrompt.setPopLocations(200, -100, 200, 0);
            configPrompt.setYMargin(20);
            configPrompt.setYDivider(configPrompt.getHeight() - 30);
            components.Add(configPrompt);

            // save file data screen
            SaveDataPanel saveScreen = new SaveDataPanel(200, 480, 440, 380);
            saveScreen.setScrolling(5, 1);
            saveScreen.loadSaveData();
            saveScreen.setPopLocations(200, 480, 200, 100);
            components.Add(saveScreen);

            // save/load prompt
            DialogPanel savePrompt = new DialogPanel(200, -100, 440, 100);
            saveScreen.setPreviousPanel(savePrompt);
            savePrompt.setMessage("Would you like to save the current game or load an older game?");
            savePrompt.setRefreshMessage(savePrompt.getMessage());
            SaveTypeSpecifierEntry saveEntry = new SaveTypeSpecifierEntry("Save", savePrompt, saveScreen);
            saveEntry.setSaveType(true);
            saveEntry.setNewMessage("Saving current progress...select a file to overwrite.");
            SaveTypeSpecifierEntry loadEntry = new SaveTypeSpecifierEntry("Load", savePrompt, saveScreen);
            loadEntry.setSaveType(false);
            loadEntry.setNewMessage("Loading another save file...select a file to load.");
            savePrompt.loadEntries(saveEntry, loadEntry);
            //savePrompt.alignEntriesHorizontal();
            savePrompt.setPopLocations(200, -100, 200, 0);
            savePrompt.setYMargin(20);
            savePrompt.setYDivider(savePrompt.getHeight() - 30);
            components.Add(savePrompt);

            // exit game prompt
            DialogPanel exitPrompt = new DialogPanel(200, 480, 350, 200);
            exitPrompt.setMessage("Are you sure you want to exit the game? All unsaved progress will be lost.");
            ExitEntry cancelEntry = new ExitEntry("Cancel", false);
            ExitEntry exitEntry = new ExitEntry("Quit Game", true);
            exitPrompt.loadEntries(cancelEntry, exitEntry);
            exitPrompt.setPopLocations(200, 480, 200, 280);
            components.Add(exitPrompt);

            // main menu
            menuBody = new ListPanel(-200, 0, 200, 480);
            SubMenuFocusEntry menuBodyJournal = new SubMenuFocusEntry("Journal", journalPrompt);
            SubMenuFocusEntry menuBodyClues = new SubMenuFocusEntry("Clues", cluesScreen);
            SubMenuFocusEntry menuBodyInventory = new SubMenuFocusEntry("Inventory", inventoryScreen);
            //SubMenuFocusEntry menuBodyEquip = new SubMenuFocusEntry("Equip", null);
            SubMenuFocusEntry menuBodyReputation = new SubMenuFocusEntry("Reputation", reputationScreen);
            SubMenuFocusEntry menuBodyConfig = new SubMenuFocusEntry("Config", configPrompt);
            SubMenuFocusEntry menuBodySave = new SubMenuFocusEntry("Save/Load", savePrompt);
            SubMenuFocusEntry menuBodyExit = new SubMenuFocusEntry("Exit Game", exitPrompt);
            menuBody.loadEntries(menuBodyJournal, menuBodyClues, menuBodyInventory, /*menuBodyEquip,*/
                menuBodyReputation, menuBodyConfig, menuBodySave, menuBodyExit);
            menuBody.alignEntriesVertical();
            menuBody.setPopLocations(-200, 0, 0, 0);
            components.Add(menuBody);

            // menu cursor
            menuArrow = new CursorArrow(-175, 67);
            menuArrow.setPopLocations(menuBody.getHideX() + 25, menuBody.getHideY() + 67,
                menuBody.getAppearX() + 25, menuBody.getAppearY() + 67);
            components.Add(menuArrow);

            // journal entry info screen
            // this panel "covers" the menu cursor, so it goes last
            components.Add(JournalInfoPanel.instance);

            //group panels that pop in and out together
            PanelGroup pg0 = new PanelGroup(menuBody);
            PanelGroup pg1 = new PanelGroup(journalPrompt, questScreen, peopleScreen, placesScreen);
            PanelGroup pg1a = new PanelGroup(JournalInfoPanel.instance);
            PanelGroup pg2 = new PanelGroup(cluesScreen, cluesInfoScreen);
            PanelGroup pg3 = new PanelGroup(inventoryScreen, inventoryInfoScreen);
            PanelGroup pg4 = new PanelGroup(reputationScreen);
            PanelGroup pg5 = new PanelGroup(configPrompt, keyConfigScreen, soundConfigScreen);
            PanelGroup pg6 = new PanelGroup(saveScreen, savePrompt);
            PanelGroup pg7 = new PanelGroup(exitPrompt);

            PanelGroupSorter.addPanelGroups(pg0, pg1, pg1a, pg2, pg3, pg4, pg5, pg6, pg7);
        }
示例#7
0
        public static void pushActivePanel(Panel panel)
        {
            nullCheck();
            if (panel == null)
                return;

            activePanel.onUnfocus();
            activePanel = panel;
            panelStack.Push(activePanel);
            PanelGroupSorter.panelIn(activePanel);
            activePanel.onFocus();
            menuArrow.moveToActivePanel(activePanel);
        }
示例#8
0
 public BorderSystem(Panel parent)
     : this(parent, DEFAULT_THICKNESS)
 {
 }
示例#9
0
 public static void open()
 {
     if (menuOpen)
         return;
     nullCheck();
     panelStack.Clear();
     activePanel = menuBody;
     panelStack.Push(activePanel);
     menuArrow.moveToActivePanel(activePanel);
     activePanel.setHighlighted(true);
     menuOpen = true;
     popIn();
 }
示例#10
0
 public bool contains(Panel p)
 {
     return this.panels.Contains(p);
 }
示例#11
0
 public BorderSystem(Panel parent, int thickness)
 {
     this.parent = parent;
     this.setThickness(thickness);
 }
示例#12
0
        public static void panelOut(Panel panel)
        {
            nullCheck();
            if (!activePanels.Contains(panel))
                return;
            activePanels.Remove(panel);

            PanelGroup theGroup = null;
            foreach (PanelGroup pg in panelGroups)
                if (pg.contains(panel))
                {
                    theGroup = pg;
                    break;
                }
            foreach (Panel p in theGroup.getPanels())
            {
                if (activePanels.Contains(p))
                    return;
            }
            activeGroups.Remove(theGroup);
            theGroup.popOut();
        }
示例#13
0
        public static void panelIn(Panel panel)
        {
            nullCheck();
            if (activePanels.Contains(panel))
                return;
            activePanels.Add(panel);

            PanelGroup theGroup = null;
            foreach (PanelGroup pg in panelGroups)
                if (pg.contains(panel))
                {
                    theGroup = pg;
                    break;
                }
            if (!activeGroups.Contains(theGroup))
            {
                activeGroups.Add(theGroup);
                theGroup.popIn();
            }
        }
示例#14
0
 public void setNextPanel(Panel next)
 {
     this.nextFocus = next;
 }
示例#15
0
 public SubMenuFocusEntry(string name, Panel next)
     : base(name, 0, 0)
 {
     this.setNextPanel(next);
 }
示例#16
0
 public ScreenSpecifierEntry(string name, IMessagePanel owner, Panel next)
     : base(name, next)
 {
     this.owner = owner;
     this.invisibleOthers = new List<Panel>();
 }