Ejemplo n.º 1
0
 private static void JournalList_BuildEnemyList_Static(On.JournalList.orig_BuildEnemyList orig, JournalList self)
 {
     orig(self);
     try
     {
         var current = ReflectionHelper.GetField <JournalList, GameObject[]>(self, "currentList");
         if (current == null)
         {
             self.UpdateEnemyList();
             current = ReflectionHelper.GetField <JournalList, GameObject[]>(self, "currentList");
         }
         PlayerData.instance.lastJournalItem = Mathf.Clamp(PlayerData.instance.lastJournalItem, 0, current.Length - 1);
     }
     catch (Exception e)
     {
         Ext.Extensions.Log("Journal Helper", e);
     }
     PlayerData.instance.CountJournalEntries();
 }
Ejemplo n.º 2
0
        private void JournalList_BuildEnemyList(On.JournalList.orig_BuildEnemyList orig, JournalList self)
        {
            #region modifyFSM
            ListInstance = self;
            var fsm  = self.gameObject.LocateMyFSM("Item List Control");
            var skip = false;
            foreach (var state in fsm.FsmStates)
            {
                if (state.Name == "Custom Check" || state.Name == "Custom")
                {
                    skip = true;
                }
            }
            if (!skip)
            {
                var custom = fsm.CopyState("Normal", "Custom");
                var state  = fsm.CreateState("Custom Check");
                void Check()
                {
                    var list        = ReflectionHelper.GetField <JournalList, GameObject[]>(self, "currentList");
                    var currentitem = list[fsm.FsmVariables.GetFsmInt("Current Item").Value];

                    if (currentitem.GetComponent <JournalEntryStats>().grimmEntry&& currentitem.GetComponent <JournalEntryStats>().warriorGhost)
                    {
                        if (currentitem.GetComponent <JournalTracker>() != null)
                        {
                            if (currentitem.GetComponent <JournalTracker>().CustomEntrySprite != null)
                            {
                                custom.GetAction <SetSpriteRendererSprite>(0).sprite = currentitem.GetComponent <JournalTracker>().CustomEntrySprite;
                                fsm.SetState("Custom");
                                return;
                            }
                        }
                    }
                    else
                    {
                        fsm.SetState("Normal");
                    }
                    fsm.SetState("Type");
                }

                state.AddAction(new CustomCallMethod(Check));
                fsm.ChangeTransition("Display Kills", "FINISHED", "Custom Check");
                fsm.ChangeTransition("Get Notes", "FINISHED", "Custom Check");
            }
            #endregion
            GameObject tmpGo = null;
            try
            {
                tmpGo = self.list.First(x => x.GetComponent <JournalEntryStats>().convoName == GetEntryName());
            }
            catch { }
            if (tmpGo == null)
            {
                //entrynumber = self.list.Length + 1;
                var go       = GameObject.Instantiate(self.list[0]);
                var listitem = go.GetComponent <JournalEntryStats>();
                listitem.convoName = GetEntryName();
                listitem.sprite    = picturesprite;
                go.transform.Find("Portrait").GetComponent <SpriteRenderer>().sprite       = portraitsprite;
                go.transform.Find("Name").GetComponent <SetTextMeshProGameText>().convName = GetEntryName();
                listitem.playerDataName = GetEntryName();
                switch (EType)
                {
                case EntryType.Normal:
                    listitem.warriorGhost = false;
                    listitem.grimmEntry   = false;
                    break;

                case EntryType.Dream:
                    listitem.warriorGhost = true;
                    listitem.grimmEntry   = false;
                    break;

                case EntryType.Grimm:
                    listitem.warriorGhost = false;
                    listitem.grimmEntry   = true;
                    break;

                case EntryType.Custom:
                    listitem.warriorGhost = true;
                    listitem.grimmEntry   = true;
                    break;
                }
                if (addingtracker)
                {
                    tracker = go.AddComponent <JournalTracker>();
                    trackers.Add(tracker);
                    go.GetComponent <JournalTracker>().entrynumber = entrynumber;
                    if (CustomSprite != null && EType == EntryType.Custom)
                    {
                        go.GetComponent <JournalTracker>().CustomEntrySprite = CustomSprite;
                    }
                }
                if (string.IsNullOrEmpty(InsertAfter))
                {
                    Ext.Extensions.Log("Journal Helper", "NO Insert After present(not a error), defaulting to the end of the list on custom entry " + entrynumber);
                    self.list = self.list.Append(go).ToArray();
                }
                else
                {
                    bool containsbool = false;
                    tmpGo = null;
                    try
                    {
                        tmpGo        = self.list.First(x => x.GetComponent <JournalEntryStats>().playerDataName == InsertAfter);
                        containsbool = tmpGo != null;
                    }
                    catch { }
                    int index = containsbool ? Array.IndexOf(self.list, tmpGo) : 0;
                    if (containsbool)
                    {
                        Ext.Extensions.Log("Journal Helper", "Insert After found, adding custom entry " + entrynumber);
                        //var tmpList = self.list.Insert(index + 1, go).ToList();
                        //if ((tmpList[tmpList.Count - 1] = go) && (tmpList.IndexOf(go) != tmpList.Count - 1))
                        //tmpList.RemoveAt(tmpList.Count - 1); //for when vasi was broken
                        //self.list = tmpList.ToArray();
                        self.list = self.list.Insert(index + 1, go).ToArray();
                    }
                    else
                    {
                        Ext.Extensions.Log("Journal Helper", "Insert After present, but NOT found, defaulting to the end of the list on custom entry " + entrynumber);
                        self.list = self.list.Append(go).ToArray();
                    }
                }
            }
            orig(self);
        }