public async Task <ModeEnum> GetAccessAreaMode(AccountTicket ticket, AreaEnum area)
        {
            var response = new ModeEnum();

            var lst = await _repository.GetAreaAccess(ticket, (int)area);

            foreach (var item in lst)
            {
                if (item.CanCreate)
                {
                    response |= ModeEnum.Create;
                }

                if (item.CanDelete)
                {
                    response |= ModeEnum.Delete;
                }

                if (item.CanModify)
                {
                    response |= ModeEnum.Modify;
                }

                if (item.CanRead)
                {
                    response |= ModeEnum.Read;
                }
            }

            return(response);
        }
 public static String GetServiceAddress(AreaEnum areaOfService, ApiServicesEnum apiService)
 {
     return String.Format("{0}://{1}:{2}/apiarea/" + areaOfService.ToString() + "/" + apiService.ToString() + "/",
        Application.Current.Host.Source.Scheme,
        Application.Current.Host.Source.Host,
        Application.Current.Host.Source.Port);
 }
Exemple #3
0
        public static bool CheckStash()
        {
            AreaEnum areaN = (AreaEnum)AreaManager.Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);

            if (!StashAreaToStashUID.Keys.Contains(areaN))
            {
                if (DEBUG)
                {
                    MyLogger.LogDebug($" > Unknown area");
                }
                return(false);
            }

            if (CharacterManager.Instance.PlayerCharacters.Count == 0)
            {
                if (DEBUG)
                {
                    MyLogger.LogDebug($" > PlayerCharacters=0");
                }
                return(false);
            }
            if (CharacterManager.Instance.PlayerCharacters.Values.Count == 0)
            {
                if (DEBUG)
                {
                    MyLogger.LogDebug($" > PlayerCharacters.Values=0");
                }
                return(false);
            }
            return(true);
        }
    static void Main(string[] args)
    {
        Console.WriteLine("Please select what type of shape you wish to find the area of:\n1. Square\n2. Rectangle\n3. Triangle\n4. Circle\n");
        int      x             = Convert.ToInt16(Console.ReadLine());
        AreaEnum myValueAsEnum = (AreaEnum)x;

        Calculate(myValueAsEnum);
    }
Exemple #5
0
 public void FadeIn(AreaEnum areaEnum)
 {
     if (_currentArea == areaEnum)
     {
         return;
     }
     _taskManager.Do(FadeOutTask());
     _taskManager.Do(FadeInTask(areaEnum));
 }
 public static void RefreshDisplay(ItemDetailsDisplay __instance, IItemDisplay _itemDisplay)
 {
     try
     {
         AreaEnum areaN         = (AreaEnum)AreaManager.Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);
         Text     m_lblItemName = (Text)AccessTools.Field(typeof(ItemDetailsDisplay), "m_lblItemName").GetValue(__instance);
         if (m_lblItemName == null || _itemDisplay == null || _itemDisplay.RefItem == null)
         {
             return;
         }
         #region Show inventory and stash quantities in the name
         if (!(_itemDisplay.RefItem is Skill))
         {
             int invQty   = __instance.LocalCharacter.Inventory.ItemCount(_itemDisplay.RefItem.ItemID);
             int stashQty = 0;
             if (InnRentStash.StashAreaToStashUID.ContainsKey(areaN) && InnRentStash.Instance.ConfigStashSharing.Value)
             {
                 TreasureChest stash = (TreasureChest)ItemManager.Instance.GetItem(InnRentStash.StashAreaToStashUID[areaN]);
                 if (stash != null)
                 {
                     stashQty = stash.ItemStackCount(_itemDisplay.RefItem.ItemID);
                 }
             }
             if (invQty + stashQty > 0)
             {
                 //InnRentStash.MyLogger.LogDebug($"{_itemDisplay.RefItem.DisplayName}: invQty={invQty} / stashQty={stashQty}");
                 m_lblItemName.text += $" ({invQty + stashQty})";
             }
         }
         #endregion
         #region Add Value/Weight Ratio information
         if (_itemDisplay.RefItem.Value > 0 && _itemDisplay.RefItem.Weight > 0 && _itemDisplay.RefItem.IsSellable)
         {
             List <ItemDetailRowDisplay> m_detailRows = (List <ItemDetailRowDisplay>)AccessTools.Field(typeof(ItemDetailsDisplay), "m_detailRows").GetValue(__instance);
             //ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(__instance, new object[] { m_detailRows.Count });
             //row.SetInfo("Value rate", Math.Round(_itemDisplay.RefItem.Value / _itemDisplay.RefItem.Weight, 2).ToString());
         }
         #endregion
         #region Add Durability information
         if (_itemDisplay.RefItem.IsPerishable && _itemDisplay.RefItem.CurrentDurability > 0 &&
             !_itemDisplay.RefItem.DisplayedInfos.ToList().Contains(DisplayedInfos.Durability))
         {
             List <ItemDetailRowDisplay> m_detailRows = (List <ItemDetailRowDisplay>)AccessTools.Field(typeof(ItemDetailsDisplay), "m_detailRows").GetValue(__instance);
             //ItemDetailRowDisplay row = (ItemDetailRowDisplay)AccessTools.Method(typeof(ItemDetailsDisplay), "GetRow").Invoke(__instance, new object[] { m_detailRows.Count });
             //row.SetInfo(LocalizationManager.Instance.GetLoc("ItemStat_Durability"), GameTimetoDays(_itemDisplay.RefItem.CurrentDurability / _itemDisplay.RefItem.PerishScript.DepletionRate));
         }
         #endregion
     }
     catch (Exception ex)
     {
         //InnRentStash.MyLogger.LogError("RefreshDisplay: " + ex.Message);
     }
 }
Exemple #7
0
        public static double ConversionFactor(this AreaEnum unitEnum)
        {
            switch (unitEnum)
            {
            case AreaEnum.SquareInches: return(1);

            case AreaEnum.SquareFeet: return(144);

            case AreaEnum.Acre: return(6272640);

            default: throw new ArgumentOutOfRangeException(nameof(unitEnum), unitEnum, null);
            }
        }
Exemple #8
0
        public static string Abbreviation(this AreaEnum unitEnum)
        {
            switch (unitEnum)
            {
            case AreaEnum.SquareInches: return("sq. in.");

            case AreaEnum.SquareFeet: return("sq. ft.");

            case AreaEnum.Acre: return("acres");

            default: throw new ArgumentOutOfRangeException(nameof(unitEnum), unitEnum, null);
            }
        }
        public static void AddEvent(string _eventUID, bool __result)
        {
            //InnRentStash.MyLogger.LogDebug($"AddEvent({_eventUID})={__result}");
            if (!__result)
            {
                return;
            }
            try
            {
                AreaEnum areaN = (AreaEnum)Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);
                //if (string.IsNullOrEmpty(m_currentArea)) return res;
                if (!InnRentStash.StashAreaToQuestEvent.ContainsKey(areaN))
                {
                    return;
                }
                if (InnRentStash.CurrentStash == null)
                {
                    return;
                }
                // If event is house buying, cancel previous rent event

                /*if (QuestEventManager.Instance.GetQuestEvent(_eventUID).Name == $"PlayerHouse_{m_currentArea}_HouseAvailable" &&
                 *  QuestEventManager.Instance.HasQuestEvent(StashAreaToQuestEvent[m_currentArea].QuestEvent))
                 * {
                 *  QuestEventManager.Instance.RemoveEvent(StashAreaToQuestEvent[m_currentArea].QuestEvent.EventUID);
                 *  m_currentStash.SetCanInteract(true);
                 *  //character.CharacterUI.SmallNotificationPanel.ShowNotification($"Rent canceled", 5f);
                 *  //DoLog("  Rent canceled (house bought)");
                 * }*/
                // If event is rent, activate the stash
                if (_eventUID == InnRentStash.StashAreaToQuestEvent[areaN].QuestEvent.EventUID)
                {
                    InnRentStash.CurrentStash.SetCanInteract(true);
                    //InnRentStash.MyLogger.LogDebug("Activate stash");
                }
            }
            catch (Exception ex)
            {
                InnRentStash.MyLogger.LogError("AddEvent: " + ex.Message);
            }
        }
Exemple #10
0
    private DelegateTask FadeInTask(AreaEnum areaEnum)
    {
        float _elapsedTime = 0f;

        _curASIndex = OtherASIndex;
        AudioSource _curAS = _audioSources[_curASIndex];

        _curAS.clip = areaToClip[areaEnum];
        _curAS.Play();
        _curAS.time  = OtherAS.time % _curAS.clip.length;
        _currentArea = areaEnum;
        return(new DelegateTask(
                   () => { },
                   () => {
            _elapsedTime += Time.deltaTime;
            _curAS.volume = _elapsedTime / _fadeDuration;
            _curAS.volume = Mathf.Lerp(0, _musicVolume, _elapsedTime / _fadeDuration);
            return _elapsedTime >= _fadeDuration;
        }
                   ));
    }
    static double Calculate(AreaEnum a)
    {
        int x, i, j;

        i = 0;
        j = 0;
        Area area = new Area();

        switch (a)
        {
        case AreaEnum.Square:
        {
            return(Area.Square(i));
        }

        case AreaEnum.Rectangle:
        {
            return(Area.Rectangle(j, i));
        }

        case AreaEnum.Triangle:
        {
            return(Area.Triangle(j, i));
        }

        case AreaEnum.Circle:
        {
            return(Area.Circle(i));
        }

        default:
        {
            Console.WriteLine("That is an invalid choice");
            return(0);
        }
        }
    }
 /// <summary>
 /// Autorização por área de acesso
 /// </summary>
 public AuthorizeFilter(AreaEnum area, ModeEnum mode)
 {
     Area = area;
     Mode = mode;
 }
Exemple #13
0
        public static void CheckRentStatus()
        {
            try
            {
                AreaEnum areaN = (AreaEnum)AreaManager.Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);
                if (DEBUG)
                {
                    MyLogger.LogDebug($"CheckRentStatus={areaN}");
                }
                if (!CheckStash())
                {
                    return;
                }
                Character character = CharacterManager.Instance.GetCharacter(CharacterManager.Instance.PlayerCharacters.Values[0]);
                CurrentStash = (TreasureChest)ItemManager.Instance.GetItem(StashAreaToStashUID[areaN]);
                if (!StashAreaToStashUID.Values.Contains(CurrentStash.UID))
                {
                    CurrentStash = null;
                    if (DEBUG)
                    {
                        MyLogger.LogDebug($" > Unknown stash");
                    }
                    return;
                }
                if (CurrentStash == null)
                {
                    if (DEBUG)
                    {
                        MyLogger.LogDebug($" > NullStash");
                    }
                    return;
                }

                //OLogger.Log($"Silver={m_currentStash.ContainedSilver}");
                // If we are in Cierzo, check quest failure
                if (areaN == AreaEnum.CierzoVillage)
                {
                    if (QuestEventManager.Instance.CurrentQuestEvents.Count(q => q.Name == $"General_NotLighthouseOwner") > 0)
                    {
                        CurrentStash = null;
                    }
                    return;
                }

                if (QuestEventManager.Instance.CurrentQuestEvents.Count(q => q.Name == $"PlayerHouse_{areaN}_HouseAvailable") > 0)
                {
                    // House has been bought here, cancel rent event if present
                    if (DEBUG)
                    {
                        MyLogger.LogDebug(" > House bought here");
                    }
                    if (QuestEventManager.Instance.HasQuestEvent(StashAreaToQuestEvent[areaN].QuestEvent))
                    {
                        QuestEventManager.Instance.RemoveEvent(StashAreaToQuestEvent[areaN].QuestEvent.EventUID);
                    }
                    return;
                }

                #region Move stash to inn
                Vector3    newPos = StashAreaToQuestEvent[areaN].StashPosition;
                Quaternion newRot = StashAreaToQuestEvent[areaN].StashRotation;
                CurrentStash.transform.SetPositionAndRotation(newPos, newRot);
                //ItemVisual iv2 = ItemManager.GetVisuals(m_currentStash.ItemID);
                //ItemVisual iv2 = ItemManager.GetVisuals(m_currentStash);
                Transform  transform = UnityEngine.Object.Instantiate(CurrentStash.GetItemVisual());
                ItemVisual iv2       = transform.GetComponent <ItemVisual>();
                //ItemVisual iv2 = UnityEngine.Object.Instantiate(m_currentStash.LoadedVisual);
                iv2.ItemID = CurrentStash.ItemID;
                //ItemVisual iv2 = m_currentStash.LoadedVisual;
                iv2.transform.SetPositionAndRotation(newPos, newRot);
                #endregion

                CurrentStash.SetCanInteract(false);
                if (QuestEventManager.Instance.HasQuestEvent(StashAreaToQuestEvent[areaN].QuestEvent))
                {
                    if (QuestEventManager.Instance.CheckEventExpire(StashAreaToQuestEvent[areaN].QuestEvent.EventUID, Instance.ConfigRentDuration.Value * 24))
                    {
                        //m_notification = $"Rent has expired!";
                        character.CharacterUI.SmallNotificationPanel.ShowNotification("Rent has expired!", 8f);
                        QuestEventManager.Instance.RemoveEvent(StashAreaToQuestEvent[areaN].QuestEvent.EventUID);
                        if (DEBUG)
                        {
                            MyLogger.LogDebug(" > Rent expired!");
                        }
                    }
                    else
                    {
                        //m_notification = "Rent ongoing";
                        character.CharacterUI.SmallNotificationPanel.ShowNotification("Rent ongoing", 8f);
                        CurrentStash.SetCanInteract(true);
                        if (DEBUG)
                        {
                            MyLogger.LogDebug(" > Rent still valid");
                        }
                    }
                }
                else
                {
                    if (DEBUG)
                    {
                        MyLogger.LogDebug($" > NoQuestEvent");
                    }
                }
            }
            catch (Exception ex)
            {
                MyLogger.LogError("CheckRentStatus: " + ex.Message);
            }
        }
        public static void OnActivate(NPCInteraction __instance)
        {
            try
            {
                //SoroboreanTravelAgency.Instance.MyLogger.LogDebug(__instance.ActorLocKey);
                Character character = CharacterManager.Instance.GetCharacter(CharacterManager.Instance.PlayerCharacters.Values[0]);
                if (character == null)
                {
                    return;
                }
                if (StoreManager.Instance.IsDlcInstalled(OTWStoreAPI.DLCs.Soroboreans))
                {
                    return;
                }
                AreaEnum areaN = (AreaEnum)AreaManager.Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);
                if (!SoroboreanTravelAgency.StartAreaToTravel.ContainsKey(areaN))
                {
                    return;
                }
                SoroboreanTravelAgency.TravelDayCost = (int)(float)SoroboreanTravelAgency.Instance.MyConfig.GetValue("Travel Day Cost"); // 80 - 100 - 120
                if (areaN == AreaEnum.Levant)                                                                                            // TODO: check quest "Blood under the Sun"
                {
                    SoroboreanTravelAgency.TravelDayCost = (int)(SoroboreanTravelAgency.TravelDayCost * 1.75);                           // 140 - 175 - 210
                }
                // TODO: HallowPeaceGuardBlock
                if (__instance.ActorLocKey == "name_unpc_caravantrader_01")
                {
                    var graphOwner = __instance.NPCDialogue.DialogueController;
                    var graph      = (Graph)graphOwner.GetType().BaseType.GetField("_graph", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(graphOwner as GraphOwner <DialogueTreeExt>);
                    var nodes      = typeof(Graph).GetField("_nodes", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(graph as Graph) as List <Node>;
                    var firstNode  = (nodes.First(n => n.GetType().Name == "MultipleChoiceNodeExt") as MultipleChoiceNodeExt);

                    if (SoroboreanTravelAgency.DialogIsSet)
                    {
                        foreach (var node in graph.allNodes.Where(n => n.tag == "SoroboreanTravelAgency").ToList())
                        {
                            graph.RemoveNode(node);
                        }
                        firstNode.availableChoices.RemoveAll(c => c.statement.meta == "TRAVEL");
                    }

                    int cnt = firstNode.availableChoices.Count - 2;
                    firstNode.availableChoices.Insert(cnt, new MultipleChoiceNodeExt.Choice(new Statement("I want to travel, please.", GlobalAudioManager.Sounds.BGM_Empty, "TRAVEL")));
                    StatementNodeExt nStart = graph.AddNode <StatementNodeExt>();
                    nStart.tag       = "SoroboreanTravelAgency";
                    nStart.statement = new Statement($"Where do you want to go?");
                    nStart.SetActorName(__instance.ActorLocKey);

                    StatementNodeExt nResultMoneyBad = graph.AddNode <StatementNodeExt>();
                    nResultMoneyBad.tag       = "SoroboreanTravelAgency";
                    nResultMoneyBad.statement = new Statement("Sorry, you don't have enough silver. Come back when you can afford it!");
                    nResultMoneyBad.SetActorName(__instance.ActorLocKey);
                    StatementNodeExt nResultRationsBad = graph.AddNode <StatementNodeExt>();
                    nResultRationsBad.tag       = "SoroboreanTravelAgency";
                    nResultRationsBad.statement = new Statement("Sorry, you don't have enough rations to travel this far.");
                    nResultRationsBad.SetActorName(__instance.ActorLocKey);
                    StatementNodeExt nCancel = graph.AddNode <StatementNodeExt>();
                    nCancel.tag       = "SoroboreanTravelAgency";
                    nCancel.statement = new Statement("See you soon!");
                    nCancel.SetActorName(__instance.ActorLocKey);
                    FinishNode nFinish = graph.AddNode <FinishNode>();
                    nFinish.tag = "SoroboreanTravelAgency";
                    StatementNodeExt nNoDestination = graph.AddNode <StatementNodeExt>();
                    nNoDestination.tag       = "SoroboreanTravelAgency";
                    nNoDestination.statement = new Statement("Sorry, you have not discovered any other town... You can only travel to places you visited at least once!");
                    nNoDestination.SetActorName(__instance.ActorLocKey);

                    bool hasEntry = false;
                    MultipleChoiceNodeExt nChoose = graph.AddNode <MultipleChoiceNodeExt>();
                    nChoose.tag = "SoroboreanTravelAgency";
                    foreach (StrTravel travel in SoroboreanTravelAgency.StartAreaToTravel[areaN])
                    {
                        //if (!QuestEventManager.Instance.HasQuestEvent(SoroboreanTravelAgency.AreaToQuestEvent[travel.TargetArea]))
                        if (!(bool)SoroboreanTravelAgency.Instance.MyConfig.GetValue(travel.TargetArea + "Visited"))
                        {
                            continue; // This town has not been visited yet
                        }

                        hasEntry = true;
                        string areaLabel = travel.TargetArea.ToString();
                        if (travel.TargetArea == AreaEnum.CierzoVillage)
                        {
                            areaLabel = "Cierzo";
                        }
                        int    rationsCost = travel.DurationDays;
                        int    moneyCost   = travel.DurationDays * SoroboreanTravelAgency.TravelDayCost;
                        string msgCost     = $"{areaLabel} ({moneyCost} silver and {rationsCost} rations).";
                        if (travel.DurationDays == 0)
                        {
                            rationsCost = 0;
                            moneyCost   = SoroboreanTravelAgency.TravelDayCost;
                            msgCost     = $"{areaLabel} ({moneyCost} silver).";
                        }
                        nChoose.availableChoices.Add(new MultipleChoiceNodeExt.Choice(new Statement(msgCost)));

                        ConditionNode nCheckMoney = graph.AddNode <ConditionNode>();
                        nCheckMoney.tag       = "SoroboreanTravelAgency";
                        nCheckMoney.condition = new Condition_OwnsItem()
                        {
                            character = character,
                            item      = new ItemReference {
                                ItemID = 9000010
                            },
                            minAmount = moneyCost
                        };
                        ConditionNode nCheckRations = graph.AddNode <ConditionNode>();
                        nCheckRations.tag       = "SoroboreanTravelAgency";
                        nCheckRations.condition = new Condition_OwnsItem()
                        {
                            character = character,
                            item      = new ItemReference {
                                ItemID = 4100550
                            },                                             // Travel Ration
                            minAmount = rationsCost
                        };
                        graph.ConnectNodes(nChoose, nCheckMoney);

                        ActionNode nWishRent = graph.AddNode <ActionNode>();
                        nWishRent.tag = "SoroboreanTravelAgency";
                        ActionList actions = new ActionList();
                        actions.AddAction(new NodeCanvas.Tasks.Actions.PlaySound()
                        {
                            Sound = GlobalAudioManager.Sounds.UI_MERCHANT_CompleteTransaction
                        });
                        actions.AddAction(new NodeCanvas.Tasks.Actions.FadeOut()
                        {
                            fadeTime = 1.0f
                        });
                        actions.AddAction(new SetTravelArea()
                        {
                            Script     = SoroboreanTravelAgency.Instance,
                            TargetArea = travel.TargetArea
                        });
                        actions.AddAction(new AreaSwitchPlayersTime()
                        {
                            Character    = new BBParameter <Character>(character),
                            Area         = travel.TargetArea,
                            IncreaseTime = travel.DurationDays * 24
                        });
                        actions.AddAction(new NodeCanvas.Tasks.Actions.RemoveItem()
                        {
                            fromCharacter = new BBParameter <Character>(character),
                            Items         = new List <BBParameter <ItemReference> >()
                            {
                                new ItemReference {
                                    ItemID = 9000010
                                }, new ItemReference {
                                    ItemID = 4100550
                                }
                            },
                            Amount = new List <BBParameter <int> >()
                            {
                                new BBParameter <int>(moneyCost), new BBParameter <int>(rationsCost)
                            },
                        });
                        nWishRent.action = actions;
                        graph.ConnectNodes(nCheckMoney, nCheckRations);
                        graph.ConnectNodes(nCheckMoney, nResultMoneyBad);
                        graph.ConnectNodes(nCheckRations, nWishRent);
                        graph.ConnectNodes(nCheckRations, nResultRationsBad);
                        graph.ConnectNodes(nWishRent, nFinish);
                    }
                    if (hasEntry)
                    {
                        graph.ConnectNodes(firstNode, nStart, cnt);
                        nChoose.availableChoices.Add(new MultipleChoiceNodeExt.Choice(new Statement("Changed my mind.")));
                        graph.ConnectNodes(nStart, nChoose);
                        graph.ConnectNodes(nChoose, nCancel);
                    }
                    else
                    {
                        graph.ConnectNodes(firstNode, nNoDestination, cnt);
                    }

                    graph.ConnectNodes(nResultMoneyBad, nFinish);
                    graph.ConnectNodes(nResultRationsBad, nFinish);
                    graph.ConnectNodes(nNoDestination, nFinish);
                    graph.ConnectNodes(nCancel, nFinish);//*/

                    SoroboreanTravelAgency.DialogIsSet = true;
                }
            }
            catch (Exception ex)
            {
                SoroboreanTravelAgency.Instance.MyLogger.LogError(ex.Message);
            }
        }
Exemple #15
0
        protected virtual int GetTurnCost(Point at, Point move)
        {
            int      cost     = int.MaxValue;
            AreaEnum tipeArea = map[at.X, at.Y].AreaType;

            switch (tipeArea)
            {
            case AreaEnum.LowDensity:
                cost = 1;
                break;

            case AreaEnum.MediumDensity:
                cost = 2;
                break;

            case AreaEnum.HighDensity:
                cost = 3;
                break;
            }
            BloodStream bs = map.IsInStream(at.X, at.Y);

            if (bs != null)
            {
                if (bs.Direction == BloodStreamDirection.EstWest)
                {
                    if (move.X == -1)
                    {
                        cost -= 2;
                    }
                    else if (move.X == 1)
                    {
                        cost += 2;
                    }
                }
                else if (bs.Direction == BloodStreamDirection.NorthSouth)
                {
                    if (move.Y == 1)
                    {
                        cost -= 2;
                    }
                    else if (move.Y == -1)
                    {
                        cost += 2;
                    }
                }
                else if (bs.Direction == BloodStreamDirection.SouthNorth)
                {
                    if (move.Y == -1)
                    {
                        cost -= 2;
                    }
                    else if (move.Y == 1)
                    {
                        cost += 2;
                    }
                }
                else if (bs.Direction == BloodStreamDirection.WestEst)
                {
                    if (move.X == 1)
                    {
                        cost -= 2;
                    }
                    else if (move.X == -1)
                    {
                        cost += 2;
                    }
                }
            }
            if (cost <= 0)
            {
                cost = 1;
            }
            return(cost);
        }
        public static void UnPauseGameplay(NetworkLevelLoader __instance, string _identifier)
        {
            try
            {
                AreaEnum areaN = (AreaEnum)AreaManager.Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);
                foreach (var aqe in SoroboreanTravelAgency.AreaToQuestEvent)
                {
                    if (!QuestEventManager.Instance.HasQuestEvent(aqe.Value) && (
                            aqe.Key == areaN ||
                            aqe.Key == AreaEnum.CierzoVillage ||
                            aqe.Key == AreaEnum.Monsoon && QuestEventManager.Instance.CurrentQuestEvents.Any(e => e.Name == "PlayerHouse_Monsoon_HouseAvailable" || e.Name == "Faction_HolyMission") ||
                            aqe.Key == AreaEnum.Berg && QuestEventManager.Instance.CurrentQuestEvents.Any(e => e.Name == "PlayerHouse_Berg_HouseAvailable" || e.Name == "Faction_BlueChamber") ||
                            aqe.Key == AreaEnum.Levant && QuestEventManager.Instance.CurrentQuestEvents.Any(e => e.Name == "PlayerHouse_Levant_HouseAvailable" || e.Name == "Faction_HeroicKingdom")
                            ))
                    {
                        SoroboreanTravelAgency.Instance.MyLogger.LogDebug("AddEvent=" + aqe.Key);
                        QuestEventManager.Instance.AddEvent(SoroboreanTravelAgency.AreaToQuestEvent[aqe.Key]);
                        SoroboreanTravelAgency.Instance.MyConfig.SetValue(aqe.Key + "Visited", true);
                    }
                }

                if (SoroboreanTravelAgency.TravelArea > -1)
                {
                    Character character = CharacterManager.Instance.GetCharacter(CharacterManager.Instance.PlayerCharacters.Values[0]);
                    if (character == null)
                    {
                        return;
                    }
                    Vector3    position = Vector3.up;
                    Quaternion rotation = Quaternion.identity;
                    switch ((AreaEnum)SoroboreanTravelAgency.TravelArea)
                    {
                    case AreaEnum.CierzoVillage:
                        position = new Vector3(1410.4f, 5.9f, 1664.0f);
                        rotation = Quaternion.Euler(0.0f, 240.9f, 0.0f);
                        break;

                    case AreaEnum.Monsoon:
                        position = new Vector3(61.8f, -4.9f, 179.2f);
                        rotation = Quaternion.Euler(0.0f, 286.7f, 0.0f);
                        break;

                    case AreaEnum.Berg:
                        position = new Vector3(1201.5f, -13.7f, 1375.6f);
                        rotation = Quaternion.Euler(0.0f, 311.5f, 0.0f);
                        break;

                    case AreaEnum.Levant:
                        position = new Vector3(-53.9f, 0.1f, 81.0f);
                        rotation = Quaternion.Euler(0.0f, 173.9f, 0.0f);
                        break;

                    default:
                        throw new Exception("unk");
                    }
                    character.transform.SetPositionAndRotation(position, rotation);
                    character.CharacterCamera.ResetCameraToPlayer();
                }
                SoroboreanTravelAgency.TravelArea  = -1;
                SoroboreanTravelAgency.DialogIsSet = false;
            }
            catch (Exception ex)
            {
                SoroboreanTravelAgency.Instance.MyLogger.LogError(ex.Message);
            }
        }
Exemple #17
0
 AreaType(AreaEnum unitEnum)
 {
     UnitEnum = unitEnum;
 }
Exemple #18
0
        public static void OnActivate(NPCInteraction __instance)
        {
            try
            {
                AreaEnum areaN = (AreaEnum)AreaManager.Instance.GetAreaIndexFromSceneName(SceneManagerHelper.ActiveSceneName);
                if (!InnRentStash.StashAreaToQuestEvent.ContainsKey(areaN) || CharacterManager.Instance.PlayerCharacters.Count == 0)
                {
                    return;
                }
                Character character = CharacterManager.Instance.GetCharacter(CharacterManager.Instance.PlayerCharacters.Values[0]);
                if (character == null)
                {
                    return;
                }
                if (__instance.ActorLocKey != InnRentStash.StashAreaToQuestEvent[areaN].NpcName)
                {
                    return;
                }
                var graphOwner = __instance.NPCDialogue.DialogueController;
                var graph      = (Graph)graphOwner.GetType().BaseType.GetField("_graph", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(graphOwner as GraphOwner <DialogueTreeExt>);
                var nodes      = typeof(Graph).GetField("_nodes", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(graph as Graph) as List <Node>;
                var firstNode  = nodes.First(n => n.GetType().Name == "MultipleChoiceNodeExt") as MultipleChoiceNodeExt;

                foreach (var node in graph.allNodes.Where(n => n.tag == "InnRentStash").ToList())
                {
                    graph.RemoveNode(node);
                }
                firstNode.availableChoices.RemoveAll(c => c.statement.meta == "RENT");

                //TreeNode<Node>.DebugDialogue(nodes[0], 0);

                /* Un dialogue c'est: afficher un texte + action(optionnel) + choix(optionnel)
                 *
                 * Outil de conversion Graph --> ma structure
                 */
                firstNode.availableChoices.Insert(1, new MultipleChoiceNodeExt.Choice(new Statement("I want to rent a stash, please.", GlobalAudioManager.Sounds.BGM_Empty, "RENT")));
                StatementNodeExt nStart = graph.AddNode <StatementNodeExt>();
                nStart.tag       = "InnRentStash";
                nStart.statement = new Statement($"Of course! Renting a stash costs only {InnRentStash.Instance.ConfigRentPrice.Value} silver for one week.");
                nStart.SetActorName(__instance.ActorLocKey);
                MultipleChoiceNodeExt nChoose = graph.AddNode <MultipleChoiceNodeExt>();
                nChoose.tag = "InnRentStash";
                nChoose.availableChoices.Add(new MultipleChoiceNodeExt.Choice(new Statement("Sh*t up and take my money!")));
                nChoose.availableChoices.Add(new MultipleChoiceNodeExt.Choice(new Statement("I will be back.")));
                ConditionNode nCheckMoney = graph.AddNode <ConditionNode>();
                nCheckMoney.tag       = "InnRentStash";
                nCheckMoney.condition = new Condition_OwnsItem()
                {
                    character = character,
                    item      = new ItemReference {
                        ItemID = 9000010
                    },
                    minAmount = InnRentStash.Instance.ConfigRentPrice.Value
                };
                ConditionNode nCheckHouse = graph.AddNode <ConditionNode>();
                nCheckHouse.tag       = "InnRentStash";
                nCheckHouse.condition = new Condition_QuestEventOccured()
                {
                    QuestEventRef = new QuestEventReference {
                        EventUID = InnRentStash.StashAreaToQuestEvent[areaN].PlayerHouseQuestEventUID
                    }
                };
                StatementNodeExt nCheckHouseBad = graph.AddNode <StatementNodeExt>();
                nCheckHouseBad.tag       = "InnRentStash";
                nCheckHouseBad.statement = new Statement("You have a house, no need to rent a stash anymore.");
                nCheckHouseBad.SetActorName(__instance.ActorLocKey);
                ConditionNode nCheckAlready = graph.AddNode <ConditionNode>();
                nCheckAlready.tag       = "InnRentStash";
                nCheckAlready.condition = new Condition_QuestEventOccured()
                {
                    QuestEventRef = new QuestEventReference {
                        EventUID = InnRentStash.StashAreaToQuestEvent[areaN].QuestEvent.EventUID
                    }
                };
                StatementNodeExt nCheckAlreadyBad = graph.AddNode <StatementNodeExt>();
                nCheckAlreadyBad.tag       = "InnRentStash";
                nCheckAlreadyBad.statement = new Statement("You've already rented a stash for the week! Just use it.");
                nCheckAlreadyBad.SetActorName(__instance.ActorLocKey);

                ActionNode nWishRent = graph.AddNode <ActionNode>();
                nWishRent.tag = "InnRentStash";
                ActionList action = new ActionList();
                action.AddAction(new NodeCanvas.Tasks.Actions.RemoveItem()
                {
                    fromCharacter = new BBParameter <Character>(character),
                    Items         = new List <BBParameter <ItemReference> >()
                    {
                        new ItemReference {
                            ItemID = 9000010
                        }
                    },
                    Amount = new List <BBParameter <int> >()
                    {
                        new BBParameter <int>(InnRentStash.Instance.ConfigRentPrice.Value)
                    },
                });
                action.AddAction(new NodeCanvas.Tasks.Actions.SendQuestEvent()
                {
                    QuestEventRef = new QuestEventReference {
                        EventUID = InnRentStash.StashAreaToQuestEvent[areaN].QuestEvent.EventUID
                    }
                });
                action.AddAction(new NodeCanvas.Tasks.Actions.PlaySound()
                {
                    Sound = GlobalAudioManager.Sounds.UI_MERCHANT_CompleteTransaction
                });
                nWishRent.action = action;

                StatementNodeExt nResultOk = graph.AddNode <StatementNodeExt>();
                nResultOk.tag       = "InnRentStash";
                nResultOk.statement = new Statement("Thanks, I've unlocked the stash for you.");
                nResultOk.SetActorName(__instance.ActorLocKey);
                StatementNodeExt nResultBad = graph.AddNode <StatementNodeExt>();
                nResultBad.tag       = "InnRentStash";
                nResultBad.statement = new Statement("Sorry, you don't have enough silver. Come back when you can afford it!");
                nResultBad.SetActorName(__instance.ActorLocKey);
                StatementNodeExt nCancel = graph.AddNode <StatementNodeExt>();
                nCancel.tag       = "InnRentStash";
                nCancel.statement = new Statement("See you soon!");
                nCancel.SetActorName(__instance.ActorLocKey);
                FinishNode nFinish = graph.AddNode <FinishNode>();
                nFinish.tag = "InnRentStash";

                graph.ConnectNodes(firstNode, nCheckHouse, 1);       // Check if the player owns the house of the town
                graph.ConnectNodes(nCheckHouse, nCheckHouseBad);     // The player owns it --> exit
                graph.ConnectNodes(nCheckHouse, nCheckAlready);      // Check if the player has already a rent ongoing in the town
                graph.ConnectNodes(nCheckAlready, nCheckAlreadyBad); // The player already has the rent --> exit
                graph.ConnectNodes(nCheckAlready, nStart);           // All checks successfull, we can show the pricefor the rent
                graph.ConnectNodes(nStart, nChoose);                 // Show the choices for the player (to rent or not)
                graph.ConnectNodes(nChoose, nCheckMoney);            // Check if the player has enough money
                graph.ConnectNodes(nChoose, nCancel);                // The player doesn't want to rent --> exit
                graph.ConnectNodes(nCheckMoney, nWishRent);          // The player has enough money, go activate the rent
                graph.ConnectNodes(nCheckMoney, nResultBad);         // The player doesn't have enough money --> exit
                graph.ConnectNodes(nWishRent, nResultOk);            // Activate the rent!

                graph.ConnectNodes(nCheckHouseBad, nFinish);
                graph.ConnectNodes(nCheckAlreadyBad, nFinish);
                graph.ConnectNodes(nResultBad, nFinish);
                graph.ConnectNodes(nResultOk, nFinish);
                graph.ConnectNodes(nCancel, nFinish);//*/
            }
            catch (Exception ex)
            {
                InnRentStash.MyLogger.LogError("OnActivate: " + ex.Message);
            }
        }
 /// <summary>
 /// converts specific enum to hebrew
 /// </summary>
 /// <param name="myEnum"></param>
 /// <returns></returns>
 public static string Area(AreaEnum myEnum)
 {
     return(getListStrings <AreaEnum>().ToList()[(int)myEnum]);
 }