コード例 #1
0
        public void DetermineEventOutcome(PlayerHandler player, GameMain game, TravelHandler travel, Random rando, UI_Helper uihelper)
        {
            //determine success or failure of the outcome and return the outcome
            EventOptionOutcomes thisOutcome = CheckForSuccessOrFail(player, rando);


            //take actions depending on what the event outcome's transition is
            if (thisOutcome.thisNextTransition == EventOptionOutcomes.NextTransition.BackToTravelSilent)
            {
                travel.ClearWorldEvent();
            }
            else if (thisOutcome.thisNextTransition == EventOptionOutcomes.NextTransition.Combat)
            {
                //TODO: Add Combat
                //game.ChangeGameState(GameMain.GameState.Combat);
                travel.ClearWorldEvent();
            }
            else if (thisOutcome.thisNextTransition == EventOptionOutcomes.NextTransition.PassiveEvent)
            {
                Event thisPassiveEvent = game.dataManager.passiveEventData[thisOutcome.GetPassiveEventString()];
                thisPassiveEvent.DetermineValidText(rando);
                travel.SetCurrentPassiveEvent(thisPassiveEvent, false, rando, player, travel.GetWorldEventCreatureName());
                travel.ClearWorldEvent();
                travel.RunCurrentPassiveEvent(player, rando, uihelper);
            }
        }
コード例 #2
0
        public void Update(MouseHandler mouse, PlayerHandler party, Vector2 offset, DataManager datamanager, TravelHandler travel, WorldMap world, Random rando, GameMain game)
        {
            travelFeed.Update();

            if (mouse.isLeftClickDown == true)
            {
                //Hovercards
                hoverCards.Clear();

                //UI Event Windows
                for (int i = 0; i < uiEventWindows.Count; ++i)
                {
                    foreach (KeyValuePair <Rectangle, EventOption> o in uiEventWindows[i].eventOptionCollisions)
                    {
                        if (mouse.leftMouseClickPosition.Intersects(getUIPosition(o.Key, offset)) &&
                            o.Value.IsAvailable() == true)
                        {
                            //determine event outcome
                            o.Value.DetermineEventOutcome(party, game, travel, rando, this);
                            uiEventWindows.Clear();
                        }
                    }
                }

                //UI Map Selections
                for (int i = 0; i < uiMapSelections.Count; ++i)
                {
                    if (mouse.leftMouseClickPosition.Intersects(uiMapSelections[i].travelCollision))
                    {
                        travel.TravelToDestination(travel.currentGridLocation, uiMapSelections[i].thisGridLocation, world, rando);
                        uiMapSelections.Clear();
                        game.ChangeGameState(GameMain.GameState.Traveling);
                    }
                    else if (mouse.leftMouseClickPosition.Intersects(uiMapSelections[i].infoCollision))
                    {
                        //do an info thing
                    }
                    else if (mouse.leftMouseClickPosition.Intersects(uiMapSelections[i].restCollision))
                    {
                        uiMapSelections.Clear();
                        game.ChangeGameState(GameMain.GameState.Resting);
                    }
                    else
                    {
                        uiMapSelections.Clear();
                        travel.clearTravelPath();
                    }
                }

                //UI Windows
                for (int i = 0; i < uiWindows.Count; ++i)
                {
                    foreach (KeyValuePair <Rectangle, UIHoverCard> r in uiWindows[i].hoverCardCollision)
                    {
                        if (mouse.leftMouseClickPosition.Intersects(getUIPosition(r.Key, offset)))
                        {
                            createHoverCard(r.Value);
                        }
                    }

                    for (int t = 0; t < uiWindows[i].uiWindowTabs.Count; ++t)
                    {
                        if (mouse.leftMouseClickPosition.Intersects(getUIPosition(uiWindows[i].uiWindowTabs[t], uiWindows[i].uiWindowPosition, offset)))
                        {
                            ClickTabs(i, uiWindows[i].partymember, uiWindows[i].isTheMark, uiWindows[i].uiWindowsTabsText[t], party, datamanager);
                            break;
                        }
                    }

                    if (mouse.leftMouseClickPosition.Intersects(uiWindows[i].publicxButtonPosition) == true && hoverCards.Count == 0)
                    {
                        uiWindows.RemoveAt(i);
                        fullcharacterposition = Vector2.Zero;
                    }
                }
            }


            //Character Bubbles
            for (int i = 0; i < uiCharacterBubbles.Count; ++i)
            {
                if (mouse.isLeftClickDown == true)
                {
                    if (mouse.leftMouseClickPosition.Intersects(getUIPosition(uiCharacterBubbles[i].bubblePosition, offset)) == true &&
                        uiCharacterBubbles[i].isActive == true &&
                        uiWindows.Count == 0)
                    {
                        if (i == 0)
                        {
                            createUIWindow(UIWindowCreationTypes.CharacterStatWindow, true, 0, party, datamanager);
                        }
                        else
                        {
                            createUIWindow(UIWindowCreationTypes.CharacterStatWindow, false, i, party, datamanager);
                        }
                    }
                }
                if (i == 0)
                {
                    uiCharacterBubbles[i].HealthScale  = party.returnHealthValuesForMark().Item3;
                    uiCharacterBubbles[i].StaminaScale = party.returnStaminaValuesForMark().Item3;
                    uiCharacterBubbles[i].StressScale  = party.returnStressValuesForMark().Item3;
                }
                else if (uiCharacterBubbles[i].isActive == true)
                {
                    uiCharacterBubbles[i].HealthScale  = party.returnHealthValuesForPartyMember(i).Item3;
                    uiCharacterBubbles[i].StaminaScale = party.returnStaminaValuesForPartyMember(i).Item3;
                    uiCharacterBubbles[i].StressScale  = party.returnStressValuesForPartyMember(i).Item3;
                }
            }
        }