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(); }
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); }