using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using Alexandria.CharacterAPI;
using Alexandria.ItemAPI;
using Alexandria.NPCAPI;
using AmmonomiconAPI.Code.Misc;
using BepInEx;
using HarmonyLib;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using MonoMod.RuntimeDetour;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("Mod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Mod")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("d6d7a494-722e-4763-959b-c2d6b6a42b01")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace AmmonomiconAPI
{
public class AmmonomiconAPIHooks
{
public static void Init()
{
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Expected O, but got Unknown
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Expected O, but got Unknown
try
{
Hook val = new Hook((MethodBase)typeof(AmmonomiconPageRenderer).GetMethod("DelayedBuildPage", BindingFlags.Instance | BindingFlags.NonPublic), typeof(AmmonomiconAPIHooks).GetMethod("DelayedBuildPageHook", BindingFlags.Static | BindingFlags.NonPublic));
Hook val2 = new Hook((MethodBase)typeof(AmmonomiconInstanceManager).GetMethod("HandleOpenAmmonomiconDeath", BindingFlags.Instance | BindingFlags.Public), typeof(AmmonomiconAPIHooks).GetMethod("HandleOpenAmmonomiconDeathHook", BindingFlags.Static | BindingFlags.Public));
}
catch (Exception ex)
{
ETGModConsole.Log((object)("oh no thats not good (AmmonomiconHooks broke)\n\n" + ex), false);
}
}
private static IEnumerator DelayedBuildPageHook(Func<AmmonomiconPageRenderer, IEnumerator> orig, AmmonomiconPageRenderer self)
{
bool isInvoked = true;
Delegate[] invokers = CustomActions.OnPreAnyPageBuild?.GetInvocationList();
if (invokers != null)
{
Delegate[] array = invokers;
foreach (Delegate entry2 in array)
{
isInvoked = (bool)entry2.DynamicInvoke(self);
}
}
if (!isInvoked)
{
yield break;
}
if ((int)self.pageType == 1)
{
while (GameManager.Instance.IsSelectingCharacter)
{
yield return null;
}
}
PageType pageType = self.pageType;
PageType val = pageType;
switch (val - 1)
{
case 0:
self.InitializeEquipmentPageLeft();
yield break;
case 1:
self.InitializeEquipmentPageRight();
yield break;
case 2:
self.InitializeGunsPageLeft();
yield break;
case 3:
self.SetPageDataUnknown(self);
yield break;
case 4:
self.InitializeItemsPageLeft();
yield break;
case 5:
self.SetPageDataUnknown(self);
yield break;
case 6:
self.InitializeEnemiesPageLeft();
yield break;
case 7:
self.SetPageDataUnknown(self);
yield break;
case 8:
self.InitializeBossesPageLeft();
yield break;
case 9:
self.SetPageDataUnknown(self);
yield break;
case 10:
self.InitializeDeathPageLeft();
yield break;
case 11:
self.InitializeDeathPageRight();
yield break;
}
foreach (AmmonomiconPageKey entry in StaticData.customBookmarks)
{
if (self.pageType == entry.Left)
{
entry.ammonomiconPageTag.InitializeItemsPageLeft(self);
break;
}
if (self.pageType == entry.Right)
{
entry.ammonomiconPageTag.InitializeItemsPageRight(self);
break;
}
}
}
public static IEnumerator HandleOpenAmmonomiconDeathHook(Func<AmmonomiconInstanceManager, IEnumerator> orig, AmmonomiconInstanceManager self)
{
float v = 0.5f / (float)self.bookmarks.Count();
AmmonomiconBookmarkController[] bookmarks = self.bookmarks;
foreach (AmmonomiconBookmarkController entry in bookmarks)
{
entry.TriggerAppearAnimation();
if ((int)entry.LeftPageType != 11 && (int)entry.RightPageType != 12)
{
entry.Disable();
yield return ((MonoBehaviour)self).StartCoroutine(self.InvariantWait(v));
}
}
yield return ((MonoBehaviour)self).StartCoroutine(self.InvariantWait(0.025f));
AmmonomiconBookmarkController elemt = self.bookmarks.Where((AmmonomiconBookmarkController na) => ((Object)na).name == "Death").FirstOrDefault();
elemt.IsCurrentPage = true;
object[] bookmarks2 = self.bookmarks;
self.m_currentlySelectedBookmark = ETGMod.IndexOf(bookmarks2, (object)elemt);
}
}
public class CustomActions
{
public static Action<AmmonomiconPageRenderer, bool> OnAnyPageOpened;
public static Action<AmmonomiconController, bool, bool, EncounterTrackable> OnAmmonomiconStartOpened;
public static Action<AmmonomiconPageRenderer> OnAnyPageRefreshData;
public static Action<AmmonomiconController, AmmonomiconInstanceManager> OnAmmonomiconPrecache;
public static Action<AmmonomiconPageRenderer> OnEquipmentPageRebuilt;
public static Action<AmmonomiconDeathPageController, bool> OnDeathPageRebuiltLeft;
public static Action<AmmonomiconDeathPageController, bool> OnDeathPageRebuiltRight;
public static Func<AmmonomiconPageRenderer, bool> OnPreEquipmentPageBuild;
public static Func<AmmonomiconPageRenderer, bool> OnPreItemPageBuild;
public static Func<AmmonomiconPageRenderer, bool> OnPreGunPageBuild;
public static Func<AmmonomiconPageRenderer, bool> OnPreEnemyPageBuild;
public static Func<AmmonomiconPageRenderer, bool> OnPreBossPageBuild;
public static Func<AmmonomiconDeathPageController, bool> OnPreDeathPageBuildLeft;
public static Func<AmmonomiconDeathPageController, bool> OnPreDeathPageBuildRight;
public static Action<AmmonomiconPageRenderer, List<tk2dBaseSprite>> OnDeathPageFinalizing;
public static Func<AmmonomiconPageRenderer, bool> OnPreAnyPageBuild;
}
internal class AmmonomiconAPIPatches
{
[HarmonyPatch(typeof(EncounterDatabaseEntry), "GetSecondTapeDescriptor")]
public class Patch_GetSecondTapeDescriptor_Class
{
[HarmonyPrefix]
private static bool GetSecondTapeDescriptor(EncounterDatabaseEntry __instance, ref string __result)
{
if (StaticData.Stored2ndTapeTexts.ContainsKey(__instance.shootStyleInt))
{
__result = StringTableManager.GetItemsString(StaticData.Stored2ndTapeTexts[__instance.shootStyleInt], -1);
return false;
}
return true;
}
}
[HarmonyPatch(typeof(AmmonomiconController), "PrecacheAllData")]
public class Patch_PrecacheAllData_Class
{
[HarmonyPostfix]
private static void PrecacheAllData(AmmonomiconController __instance)
{
CustomActions.OnAmmonomiconPrecache?.Invoke(__instance, __instance.m_AmmonomiconInstance);
}
}
[HarmonyPatch(typeof(AmmonomiconController), "Awake")]
public class Patch_Awake_Class
{
[HarmonyPrefix]
private static bool Awake(AmmonomiconController __instance)
{
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
int length = Enum.GetValues(typeof(PageType)).Length;
float num = -20 - length;
int num2 = length + 4;
for (int i = 0; i < num2; i++)
{
__instance.m_offsetInUse.Add(item: false);
__instance.m_offsets.Add(new Vector3(-200f + num * (float)i, -200f + num * (float)i, 0f));
}
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "InitializeDeathPageRight")]
public class Patch_InitializeDeathPageRight_Class
{
[HarmonyPrefix]
private static bool PrecacheAllData(AmmonomiconPageRenderer __instance)
{
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0308: Unknown result type (might be due to invalid IL or missing references)
//IL_0317: Unknown result type (might be due to invalid IL or missing references)
//IL_0190: Unknown result type (might be due to invalid IL or missing references)
//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
//IL_0237: Unknown result type (might be due to invalid IL or missing references)
//IL_0267: Unknown result type (might be due to invalid IL or missing references)
AmmonomiconDeathPageController component = ((Component)__instance.guiManager).GetComponent<AmmonomiconDeathPageController>();
component.DoInitialize();
dfScrollPanel component2 = ((Component)((Component)component).transform.Find("Scroll Panel").Find("Footer").Find("ScrollItemsPanel")).GetComponent<dfScrollPanel>();
dfPanel component3 = ((Component)((Component)component2).transform.Find("AllItemsPanel")).GetComponent<dfPanel>();
for (int i = 0; i < ((Component)component3).transform.childCount; i++)
{
Object.Destroy((Object)(object)((Component)((Component)component3).transform.GetChild(i)).gameObject);
}
List<tk2dBaseSprite> list = new List<tk2dBaseSprite>();
for (int j = 0; j < GameManager.Instance.AllPlayers.Length; j++)
{
PlayerController val = GameManager.Instance.AllPlayers[j];
for (int k = 0; k < val.inventory.AllGuns.Count; k++)
{
Gun val2 = val.inventory.AllGuns[k];
tk2dClippedSprite val3 = __instance.AddSpriteToPage<tk2dClippedSprite>(val2.GetSprite().Collection, val2.DefaultSpriteID);
SpriteOutlineManager.AddScaledOutlineToSprite<tk2dClippedSprite>((tk2dBaseSprite)(object)val3, Color.black, 0.1f, 0.01f);
((BraveBehaviour)val3).transform.parent = ((Component)component3).transform;
((BraveBehaviour)val3).transform.position = ((dfControl)component3).GetCenter();
list.Add((tk2dBaseSprite)(object)val3);
}
for (int l = 0; l < val.activeItems.Count; l++)
{
tk2dClippedSprite val4 = __instance.AddSpriteToPage<tk2dClippedSprite>(((BraveBehaviour)val.activeItems[l]).sprite.Collection, ((BraveBehaviour)val.activeItems[l]).sprite.spriteId);
SpriteOutlineManager.AddScaledOutlineToSprite<tk2dClippedSprite>((tk2dBaseSprite)(object)val4, Color.black, 0.1f, 0.01f);
((BraveBehaviour)val4).transform.parent = ((Component)component3).transform;
((BraveBehaviour)val4).transform.position = ((dfControl)component3).GetCenter();
list.Add((tk2dBaseSprite)(object)val4);
}
for (int m = 0; m < val.passiveItems.Count; m++)
{
tk2dClippedSprite val5 = __instance.AddSpriteToPage<tk2dClippedSprite>(((BraveBehaviour)val.passiveItems[m]).sprite.Collection, ((BraveBehaviour)val.passiveItems[m]).sprite.spriteId);
SpriteOutlineManager.AddScaledOutlineToSprite<tk2dClippedSprite>((tk2dBaseSprite)(object)val5, Color.black, 0.1f, 0.01f);
((BraveBehaviour)val5).transform.parent = ((Component)component3).transform;
((BraveBehaviour)val5).transform.position = ((dfControl)component3).GetCenter();
list.Add((tk2dBaseSprite)(object)val5);
}
}
CustomActions.OnDeathPageFinalizing?.Invoke(__instance, list);
list = ttLinq.ttOrderBy<tk2dBaseSprite, float>((IEnumerable<tk2dBaseSprite>)list, (Func<tk2dBaseSprite, float>)delegate(tk2dBaseSprite a)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
Bounds bounds = a.GetBounds();
return ((Bounds)(ref bounds)).size.y;
});
List<tk2dBaseSprite> list2 = new List<tk2dBaseSprite>();
__instance.BoxArrangeItems(component3, list, new Vector2(0f, 6f), new Vector2(6f, 3f), ref list2);
((MonoBehaviour)__instance).StartCoroutine(__instance.HandleDeathItemsClipping(component3, list));
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconController), "LoadPageUIAtPath")]
public class Patch_LoadPageUIAtPath_Class
{
[HarmonyPrefix]
private static bool Patch_LoadPageUIAtPath(AmmonomiconController __instance, string path, PageType pageType, bool isPreCache, bool isVictory, ref AmmonomiconPageRenderer __result)
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Expected O, but got Unknown
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
//IL_015e: Unknown result type (might be due to invalid IL or missing references)
//IL_0161: Invalid comparison between Unknown and I4
//IL_0163: Unknown result type (might be due to invalid IL or missing references)
//IL_0166: Invalid comparison between Unknown and I4
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Invalid comparison between Unknown and I4
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Invalid comparison between Unknown and I4
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_0197: Unknown result type (might be due to invalid IL or missing references)
//IL_03f1: Unknown result type (might be due to invalid IL or missing references)
//IL_03b2: Unknown result type (might be due to invalid IL or missing references)
//IL_021a: Unknown result type (might be due to invalid IL or missing references)
//IL_021d: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
//IL_0495: Unknown result type (might be due to invalid IL or missing references)
//IL_022f: Unknown result type (might be due to invalid IL or missing references)
//IL_0230: Unknown result type (might be due to invalid IL or missing references)
//IL_0241: Unknown result type (might be due to invalid IL or missing references)
//IL_044e: Unknown result type (might be due to invalid IL or missing references)
InstancePlusManager component = ((Component)__instance.m_AmmonomiconInstance).GetComponent<InstancePlusManager>();
bool arg = false;
AmmonomiconPageRenderer val;
if (__instance.m_extantPageMap.ContainsKey(pageType))
{
foreach (KeyValuePair<PageType, AmmonomiconPageRenderer> item in __instance.m_extantPageMap)
{
if (StaticData.AllCustomEnums.Contains(item.Key))
{
((Renderer)item.Value.targetRenderer).enabled = false;
}
}
val = __instance.m_extantPageMap[pageType];
if ((int)pageType == 11 || (int)pageType == 12)
{
AmmonomiconDeathPageController component2 = ((Component)((Component)val).transform.parent).GetComponent<AmmonomiconDeathPageController>();
component2.isVictoryPage = isVictory;
}
val.EnableRendering();
val.DoRefreshData();
}
else
{
GameObject val2 = (GameObject)Object.Instantiate(BraveResources.Load(path, ".prefab"));
val = val2.GetComponentInChildren<AmmonomiconPageRenderer>();
dfGUIManager component3 = __instance.m_AmmonomiconBase.GetComponent<dfGUIManager>();
GameObject val3 = Object.Instantiate<GameObject>(((Component)__instance.m_LowerRenderTargetPrefab).gameObject);
val3.transform.parent = ((Component)component3).transform.Find("Core");
val3.transform.localPosition = Vector3.zero;
val3.layer = LayerMask.NameToLayer("SecondaryGUI");
if (Object.op_Implicit((Object)(object)component) && (int)pageType != 11 && (int)pageType != 12)
{
foreach (AmmonomiconPageKey customBookmark in StaticData.customBookmarks)
{
if (pageType == customBookmark.Left)
{
val.pageType = pageType;
((Object)val2.gameObject).name = $"Page {pageType}";
((Object)val3.gameObject).name = "Page " + customBookmark.UniqueKey + " Left";
val.guiManager = component3;
((Component)val).transform.parent.parent = __instance.m_AmmonomiconBase.transform.parent;
break;
}
if (pageType != customBookmark.Right)
{
continue;
}
val.pageType = pageType;
((Object)val2.gameObject).name = $"Page {pageType}";
((Object)val3.gameObject).name = "Page " + customBookmark.UniqueKey + " Right";
val.guiManager = component3;
((Component)val).transform.parent.parent = __instance.m_AmmonomiconBase.transform.parent;
if (customBookmark.DFGUI_BackingImage != string.Empty)
{
val.HeaderBGSprite.spriteName = customBookmark.DFGUI_BackingImage;
if ((Object)(object)customBookmark.CustomAtlas != (Object)null)
{
val.HeaderBGSprite.atlas = customBookmark.CustomAtlas;
}
}
break;
}
}
MeshRenderer component4 = val3.GetComponent<MeshRenderer>();
if (isVictory)
{
AmmonomiconDeathPageController component5 = ((Component)((Component)val).transform.parent).GetComponent<AmmonomiconDeathPageController>();
component5.isVictoryPage = true;
}
int length = Enum.GetValues(typeof(PageType)).Length;
int num = length + 4;
float num2 = -20 - length;
for (int i = __instance.m_offsets.Count - 2; i < num; i++)
{
if (__instance.m_offsets.Count > i)
{
__instance.m_offsets[i] = new Vector3(-200f + num2 * (float)i, -200f + num2 * (float)i, 0f);
continue;
}
__instance.m_offsetInUse.Add(item: false);
__instance.m_offsets.Add(new Vector3(-200f + num2 * (float)i, -200f + num2 * (float)i, 0f));
}
for (int j = 0; j < __instance.m_offsets.Count; j++)
{
if (!__instance.m_offsetInUse[j])
{
__instance.m_offsetInUse[j] = true;
val2.transform.position = __instance.m_offsets[j];
val.offsetIndex = j;
break;
}
}
val.Initialize(component4);
val.EnableRendering();
__instance.m_extantPageMap.Add(pageType, val);
if (isPreCache)
{
arg = true;
val.Disable(isPreCache);
}
else
{
((Component)val).transform.parent.parent = __instance.m_AmmonomiconBase.transform.parent;
}
}
CustomActions.OnAnyPageOpened?.Invoke(val, arg);
__result = val;
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "UpdateOnBecameActive")]
public class Patch_UpdateOnBecameActive_Class
{
[HarmonyPrefix]
private static bool Patch_UpdateOnBecameActive(AmmonomiconPageRenderer __instance)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Expected I4, but got Unknown
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
__instance.ForceUpdateLanguageFonts();
if ((Object)(object)AmmonomiconController.Instance.ImpendingLeftPageRenderer == (Object)null || AmmonomiconController.Instance.ImpendingLeftPageRenderer.LastFocusTarget == null)
{
PageType pageType = __instance.pageType;
PageType val = pageType;
switch (val - 4)
{
case 0:
__instance.SetFirstVisibleTexts();
break;
case 2:
__instance.SetFirstVisibleTexts();
break;
case 4:
__instance.SetFirstVisibleTexts();
break;
case 6:
__instance.SetFirstVisibleTexts();
break;
default:
foreach (AmmonomiconPageKey customBookmark in StaticData.customBookmarks)
{
if (__instance.pageType == customBookmark.Left)
{
customBookmark.ammonomiconPageTag.InitializeName(__instance);
customBookmark.ammonomiconPageTag.OnPageOpenedLeft(__instance);
break;
}
if (__instance.pageType == customBookmark.Right)
{
customBookmark.ammonomiconPageTag.OnPageOpenedRight(__instance);
break;
}
}
break;
}
}
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconInstanceManager), "OpenDeath")]
public class Patch_OpenDeathHook_Class
{
[HarmonyPrefix]
private static bool Patch_OpenDeathHook(AmmonomiconInstanceManager __instance)
{
AmmonomiconBookmarkController val = __instance.bookmarks.Where((AmmonomiconBookmarkController na) => ((Object)na).name == "Death").FirstOrDefault();
object[] bookmarks = __instance.bookmarks;
__instance.m_currentlySelectedBookmark = ETGMod.IndexOf(bookmarks, (object)val);
val.IsCurrentPage = true;
((MonoBehaviour)__instance).StartCoroutine(__instance.HandleOpenAmmonomiconDeath());
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "CheckLanguageFonts")]
public class Patch_CheckLanguageFonts_Class
{
[HarmonyPrefix]
private static bool Patch_CheckLanguageFonts(AmmonomiconPageRenderer __instance, dfLabel mainText)
{
//IL_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Invalid comparison between Unknown and I4
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0177: Unknown result type (might be due to invalid IL or missing references)
//IL_017d: Invalid comparison between Unknown and I4
//IL_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_0185: Invalid comparison between Unknown and I4
//IL_0187: Unknown result type (might be due to invalid IL or missing references)
//IL_018e: Invalid comparison between Unknown and I4
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0190: Unknown result type (might be due to invalid IL or missing references)
//IL_0197: Invalid comparison between Unknown and I4
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f7: Expected I4, but got Unknown
if ((Object)(object)__instance.EnglishFont == (Object)null)
{
__instance.EnglishFont = mainText.Font;
__instance.OtherLanguageFont = GameUIRoot.Instance.Manager.DefaultFont;
}
__instance.AdjustForChinese();
if (__instance.m_cachedLanguage != GameManager.Options.CurrentLanguage)
{
__instance.m_cachedLanguage = GameManager.Options.CurrentLanguage;
bool flag = false;
foreach (AmmonomiconPageKey customBookmark in StaticData.customBookmarks)
{
if (customBookmark.Right == __instance.pageType)
{
__instance.SetPageDataUnknown(__instance);
flag = true;
}
}
if (flag)
{
PageType pageType = __instance.pageType;
PageType val = pageType;
switch (val - 4)
{
case 0:
__instance.SetPageDataUnknown(__instance);
break;
case 2:
__instance.SetPageDataUnknown(__instance);
break;
case 4:
__instance.SetPageDataUnknown(__instance);
break;
case 6:
__instance.SetPageDataUnknown(__instance);
break;
default:
__instance.SetPageDataUnknown(__instance);
break;
}
}
}
if ((int)StringTableManager.CurrentLanguage == 0)
{
if ((Object)(object)mainText.Font != (Object)(object)__instance.EnglishFont)
{
mainText.Atlas = __instance.guiManager.DefaultAtlas;
mainText.Font = __instance.EnglishFont;
}
}
else if ((int)StringTableManager.CurrentLanguage != 7 && (int)StringTableManager.CurrentLanguage != 8 && (int)StringTableManager.CurrentLanguage != 11 && (int)StringTableManager.CurrentLanguage != 9 && (Object)(object)mainText.Font != (Object)(object)__instance.OtherLanguageFont)
{
mainText.Atlas = GameUIRoot.Instance.Manager.DefaultAtlas;
mainText.Font = __instance.OtherLanguageFont;
}
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconController), "OpenInternal")]
public class Patch_OpenInternal_Class
{
[HarmonyILManipulator]
private static void Patch_OpenInternalIL(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[5]
{
(Instruction instr) => ILPatternMatchingExt.MatchLdfld<AmmonomiconInstanceManager>(instr, "bookmarks"),
(Instruction instr) => ILPatternMatchingExt.MatchLdlen(instr),
(Instruction instr) => ILPatternMatchingExt.MatchConvI4(instr),
(Instruction instr) => ILPatternMatchingExt.MatchLdcI4(instr, 1),
(Instruction instr) => ILPatternMatchingExt.MatchSub(instr)
}))
{
val.RemoveRange(5);
val.CallPrivate(typeof(Patch_OpenInternal_Class), "GetActualDeathPageIndex");
}
}
private static int GetActualDeathPageIndex(AmmonomiconInstanceManager aim)
{
object[] bookmarks = aim.bookmarks;
return ETGMod.IndexOf(bookmarks, (object)aim.bookmarks.Where((AmmonomiconBookmarkController na) => ((Object)na).name == "Death").FirstOrDefault());
}
[HarmonyPostfix]
private static void Patch_OpenInternal(AmmonomiconController __instance, bool isDeath, bool isVictory, EncounterTrackable targetTrackable)
{
CustomActions.OnAmmonomiconStartOpened?.DynamicInvoke(__instance, isDeath, isVictory, targetTrackable);
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "ToggleHeaderImage")]
public class Patch_ToggleHeaderImage_Class
{
[HarmonyPrefix]
private static bool ToggleHeaderImage(AmmonomiconPageRenderer __instance)
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Invalid comparison between Unknown and I4
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Invalid comparison between Unknown and I4
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: Invalid comparison between Unknown and I4
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Invalid comparison between Unknown and I4
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Invalid comparison between Unknown and I4
foreach (AmmonomiconPageKey customBookmark in StaticData.customBookmarks)
{
if (customBookmark.Left == __instance.pageType)
{
if ((int)GameManager.Options.CurrentLanguage != 0 && (Object)(object)__instance.HeaderBGSprite != (Object)null)
{
((dfControl)__instance.HeaderBGSprite).IsVisible = false;
}
else if ((Object)(object)__instance.HeaderBGSprite != (Object)null)
{
((dfControl)__instance.HeaderBGSprite).IsVisible = true;
}
return false;
}
}
if ((int)__instance.pageType == 1 || (int)__instance.pageType == 3 || (int)__instance.pageType == 5 || (int)__instance.pageType == 7 || (int)__instance.pageType == 9)
{
if ((int)GameManager.Options.CurrentLanguage != 0 && (Object)(object)__instance.HeaderBGSprite != (Object)null)
{
((dfControl)__instance.HeaderBGSprite).IsVisible = false;
}
else if ((Object)(object)__instance.HeaderBGSprite != (Object)null)
{
((dfControl)__instance.HeaderBGSprite).IsVisible = true;
}
}
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconBookmarkController), "TriggerAppearAnimation")]
public class Patch_Enable_Class
{
[HarmonyPrefix]
private static bool TriggerAppearAnimation(AmmonomiconBookmarkController __instance)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
InstancePlusManager component = ((Component)AmmonomiconController.Instance.m_AmmonomiconInstance).GetComponent<InstancePlusManager>();
foreach (AmmonomiconPageKey customBookmark in StaticData.customBookmarks)
{
if (__instance.LeftPageType == customBookmark.Left && __instance.RightPageType == customBookmark.Right)
{
if (customBookmark.ammonomiconPageTag.ShouldBeActive())
{
return true;
}
__instance.Disable();
dfScrollPanel component2 = ((Component)((Component)__instance).transform.parent).GetComponent<dfScrollPanel>();
((dfControl)component2).Localize();
return false;
}
}
return true;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "DoRefreshData")]
public class Patch_DoRefreshData_Class
{
[HarmonyPrefix]
private static bool DoRefreshData(AmmonomiconPageRenderer __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Invalid comparison between Unknown and I4
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Invalid comparison between Unknown and I4
if ((int)__instance.pageType == 1)
{
for (int i = 0; i < __instance.m_pokedexEntries.Count; i++)
{
Object.Destroy((Object)(object)((Component)__instance.m_pokedexEntries[i]).gameObject);
}
__instance.LastFocusTarget = null;
__instance.m_pokedexEntries.Clear();
__instance.InitializeEquipmentPageLeft();
CustomActions.OnAnyPageRefreshData?.Invoke(__instance);
if (__instance.m_pokedexEntries.Count > 0)
{
__instance.LastFocusTarget = (IAmmonomiconFocusable)(object)((Component)__instance.m_pokedexEntries[0]).GetComponent<dfButton>();
}
__instance.guiManager.UIScaleLegacyMode = true;
__instance.guiManager.UIScaleLegacyMode = false;
}
else if ((int)__instance.pageType == 11)
{
__instance.InitializeDeathPageLeft();
CustomActions.OnAnyPageRefreshData?.Invoke(__instance);
}
else if ((int)__instance.pageType == 12)
{
__instance.InitializeDeathPageRight();
CustomActions.OnAnyPageRefreshData?.Invoke(__instance);
}
else
{
for (int j = 0; j < __instance.m_pokedexEntries.Count; j++)
{
__instance.m_pokedexEntries[j].UpdateEncounterState();
}
CustomActions.OnAnyPageRefreshData?.Invoke(__instance);
}
return false;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "SetPageDataUnknown")]
public class Patch_SetPageDataUnknown_Class
{
[HarmonyPrefix]
private static bool SetPageDataUnknown(AmmonomiconPageRenderer __instance)
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)__instance == (Object)null)
{
return false;
}
foreach (AmmonomiconPageKey customBookmark in StaticData.customBookmarks)
{
if (customBookmark.Right == __instance.pageType)
{
customBookmark.ammonomiconPageTag.OnSetDataUnknown(__instance);
return false;
}
}
return true;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "InitializeEquipmentPageLeft")]
public class PostPatch_InitializeEquipmentPageLeft_Class
{
[HarmonyPostfix]
private static void InitializeEquipmentPageLeft(AmmonomiconPageRenderer __instance)
{
CustomActions.OnEquipmentPageRebuilt?.Invoke(__instance);
}
}
[HarmonyPatch(typeof(AmmonomiconDeathPageController), "InitializeLeftPage")]
public class PostPatch_InitializeLeftPage_Class
{
[HarmonyPostfix]
private static void InitializeLeftPage(AmmonomiconDeathPageController __instance)
{
CustomActions.OnDeathPageRebuiltLeft?.Invoke(__instance, __instance.isVictoryPage);
}
}
[HarmonyPatch(typeof(AmmonomiconDeathPageController), "InitializeRightPage")]
public class PostPatch_InitializeRightPage_Class
{
[HarmonyPostfix]
private static void InitializeRightPage(AmmonomiconDeathPageController __instance)
{
CustomActions.OnDeathPageRebuiltRight?.Invoke(__instance, __instance.isVictoryPage);
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "InitializeEquipmentPageLeft")]
public class PrePatch_InitializeEquipmentPageLeft_Class
{
[HarmonyPrefix]
private static bool InitializeEquipmentPageLeft(AmmonomiconPageRenderer __instance)
{
bool result = true;
Delegate[] array = CustomActions.OnPreEquipmentPageBuild?.GetInvocationList();
if (array != null)
{
Delegate[] array2 = array;
foreach (Delegate @delegate in array2)
{
result = (bool)@delegate.DynamicInvoke(__instance);
}
}
return result;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "InitializeItemsPageLeft")]
public class PrePatch_InitializeItemsPageLeft_Class
{
[HarmonyPrefix]
private static bool InitializeItemsPageLeft(AmmonomiconPageRenderer __instance)
{
bool result = true;
Delegate[] array = CustomActions.OnPreItemPageBuild?.GetInvocationList();
if (array != null)
{
Delegate[] array2 = array;
foreach (Delegate @delegate in array2)
{
result = (bool)@delegate.DynamicInvoke(__instance);
}
}
return result;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "InitializeGunsPageLeft")]
public class PrePatch_InitializeGunsPageLeft_Class
{
[HarmonyPrefix]
private static bool InitializeGunsPageLeft(AmmonomiconPageRenderer __instance)
{
bool result = true;
Delegate[] array = CustomActions.OnPreGunPageBuild?.GetInvocationList();
if (array != null)
{
Delegate[] array2 = array;
foreach (Delegate @delegate in array2)
{
result = (bool)@delegate.DynamicInvoke(__instance);
}
}
return result;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "InitializeEnemiesPageLeft")]
public class PrePatch_InitializeEnemiesPageLeft_Class
{
[HarmonyPrefix]
private static bool InitializeEnemiesPageLeft(AmmonomiconPageRenderer __instance)
{
bool result = true;
Delegate[] array = CustomActions.OnPreEnemyPageBuild?.GetInvocationList();
if (array != null)
{
Delegate[] array2 = array;
foreach (Delegate @delegate in array2)
{
result = (bool)@delegate.DynamicInvoke(__instance);
}
}
return result;
}
}
[HarmonyPatch(typeof(AmmonomiconPageRenderer), "InitializeBossesPageLeft")]
public class PrePatch_InitializeBossesPageLeft_Class
{
[HarmonyPrefix]
private static bool InitializeBossesPageLeft(AmmonomiconPageRenderer __instance)
{
bool result = true;
Delegate[] array = CustomActions.OnPreBossPageBuild?.GetInvocationList();
if (array != null)
{
Delegate[] array2 = array;
foreach (Delegate @delegate in array2)
{
result = (bool)@delegate.DynamicInvoke(__instance);
}
}
return result;
}
}
[HarmonyPatch(typeof(AmmonomiconDeathPageController), "InitializeLeftPage")]
public class PrePatch_InitializeLeftPage_Class
{
[HarmonyPrefix]
private static bool InitializeLeftPage(AmmonomiconDeathPageController __instance)
{
bool result = true;
Delegate[] array = CustomActions.OnPreDeathPageBuildLeft?.GetInvocationList();
if (array != null)
{
Delegate[] array2 = array;
foreach (Delegate @delegate in array2)
{
result = (bool)@delegate.DynamicInvoke(__instance);
}
}
return result;
}
}
[HarmonyPatch(typeof(AmmonomiconDeathPageController), "InitializeRightPage")]
public class PrePatch_InitializeRightPage_Class
{
[HarmonyPrefix]
private static bool InitializeRightPage(AmmonomiconDeathPageController __instance)
{
bool result = true;
Delegate[] array = CustomActions.OnPreDeathPageBuildRight?.GetInvocationList();
if (array != null)
{
Delegate[] array2 = array;
foreach (Delegate @delegate in array2)
{
result = (bool)@delegate.DynamicInvoke(__instance);
}
}
return result;
}
}
}
public class CustomCallbacks
{
internal static Dictionary<string, CustomAmmonomiconPageController> AllCustomControllers = new Dictionary<string, CustomAmmonomiconPageController>();
internal static Dictionary<string, List<EncounterDatabaseEntry>> CachedDatabases = new Dictionary<string, List<EncounterDatabaseEntry>>();
public static void AddStoredPage(string Key, CustomAmmonomiconPageController customAmmonomiconPageController)
{
if (!AllCustomControllers.ContainsKey(Key))
{
AllCustomControllers.Add(Key, customAmmonomiconPageController);
}
}
public static CustomAmmonomiconPageController GetStoredCustomPage(string Key)
{
if (AllCustomControllers.ContainsKey(Key))
{
return AllCustomControllers[Key];
}
return null;
}
public static void TryAddEntryToStoredPage(string Key, EncounterDatabaseEntry EntryToAdd)
{
if (AllCustomControllers.ContainsKey(Key))
{
AllCustomControllers[Key].AddAdditionalEntry(EntryToAdd);
}
}
public static void AddEntryToStoredDatabase(string Key, EncounterDatabaseEntry EntryToAdd)
{
if (CachedDatabases.ContainsKey(Key))
{
CachedDatabases[Key].Add(EntryToAdd);
return;
}
CachedDatabases.Add(Key, new List<EncounterDatabaseEntry> { EntryToAdd });
}
public static void AddEntriesToStoredDatabase(string Key, List<EncounterDatabaseEntry> EntriesToAdd)
{
if (CachedDatabases.ContainsKey(Key))
{
CachedDatabases[Key].AddRange(EntriesToAdd);
return;
}
List<EncounterDatabaseEntry> list = new List<EncounterDatabaseEntry>();
list.AddRange(EntriesToAdd);
CachedDatabases.Add(Key, list);
}
}
public class UIBuilder
{
public static string GetItemNamesFromIdList(string baseString, string prefix, List<int> list)
{
if (list != null && list.Count > 0)
{
prefix += ((list.Count > 1) ? "s: " : ": ");
baseString += prefix;
for (int i = 0; i < list.Count; i++)
{
baseString = baseString + PickupObjectDatabase.GetById(list[i]).EncounterNameOrDisplayName + ((i == list.Count - 1) ? "." : ", ");
}
baseString += "\n";
}
return baseString;
}
public static void BuildBookmark(string ModPrefix, string EnumName, CustomAmmonomiconPageController CustomTagData, SpriteContainer spriteContainer, Assembly assemblyToUse = null)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_0352: Unknown result type (might be due to invalid IL or missing references)
//IL_0359: Expected O, but got Unknown
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_01ee: Expected O, but got Unknown
assemblyToUse = assemblyToUse ?? Assembly.GetExecutingAssembly();
PageType val = ETGModCompatibility.ExtendEnum<PageType>("bobot_and_bunny.etg.ammonomiconapi", ModPrefix + "_" + EnumName + "_(PageLeft)");
PageType val2 = ETGModCompatibility.ExtendEnum<PageType>("bobot_and_bunny.etg.ammonomiconapi", ModPrefix + "_" + EnumName + "_(PageRight)");
StaticData.AllCustomEnums.Add(val);
StaticData.AllCustomEnums.Add(val2);
AmmonomiconBookmarkController val3 = StaticData.InstanceManagerCached.bookmarks[2];
GameObject val4 = FakePrefab.Clone(((Component)val3).gameObject);
val4.SetActive(false);
if (Object.op_Implicit((Object)(object)val4.transform.parent))
{
Object.Destroy((Object)(object)((Component)val4.transform.parent).gameObject);
}
val4.transform.parent = null;
AmmonomiconBookmarkController component = val4.GetComponent<AmmonomiconBookmarkController>();
component.LeftPageType = val;
component.RightPageType = val2;
AmmonomiconPageKey ammonomiconPageKey = val4.AddComponent<AmmonomiconPageKey>();
ammonomiconPageKey.UniqueKey = EnumName;
ammonomiconPageKey.bookmarkController = component;
ammonomiconPageKey.Left = val;
ammonomiconPageKey.Right = val2;
ammonomiconPageKey.ammonomiconPageTag = CustomTagData ?? new CustomAmmonomiconPageController("[ERR]: NULL AmmonomiconPageTag", 1);
dfButton val5 = (component.m_sprite = (ammonomiconPageKey.dfButton = val4.GetComponent<dfButton>()));
dfSpriteAnimation component2 = val4.GetComponent<dfSpriteAnimation>();
component.m_animator = component2;
((Object)((Component)component).gameObject).name = ModPrefix + "_" + EnumName;
if (spriteContainer != null)
{
if ((Object)(object)spriteContainer.customDFAtlas == (Object)null)
{
dfAtlas ammonomiconAtlas = StaticData.AmmonomiconAtlas;
List<string> list = new List<string>();
ItemInfo val6 = ToolsCharApi.AddNewItemToAtlas(ammonomiconAtlas, ResourceExtractor.GetTextureFromResource(spriteContainer.HoverFrame, assemblyToUse), spriteContainer.HoverFrame);
ItemInfo val7 = ToolsCharApi.AddNewItemToAtlas(ammonomiconAtlas, ResourceExtractor.GetTextureFromResource(spriteContainer.SelectHoverFrame, assemblyToUse), spriteContainer.SelectHoverFrame);
component.SelectSpriteName = val6.name;
component.DeselectSelectedSpriteName = val7.name;
GameObject val8 = new GameObject("AmmonomiconBookmarkAnimationController");
val8.transform.parent = val4.transform;
dfAnimationClip val9 = val8.AddComponent<dfAnimationClip>();
val9.Atlas = val3.AppearClip.Atlas;
string[] appearFrames = spriteContainer.AppearFrames;
foreach (string text in appearFrames)
{
list.Add(ToolsCharApi.AddNewItemToAtlas(ammonomiconAtlas, ResourceExtractor.GetTextureFromResource(text, assemblyToUse), text).name);
}
((dfInteractiveBase)val5).backgroundSprite = list.Last();
val9.sprites = list;
List<string> list2 = new List<string>();
dfAnimationClip val10 = val8.AddComponent<dfAnimationClip>();
val10.Atlas = val3.AppearClip.Atlas;
string[] selectFrames = spriteContainer.SelectFrames;
foreach (string text2 in selectFrames)
{
list2.Add(ToolsCharApi.AddNewItemToAtlas(ammonomiconAtlas, ResourceExtractor.GetTextureFromResource(text2, assemblyToUse), text2).name);
}
val10.sprites = list2;
component.AppearClip = val9;
component.SelectClip = val10;
if (spriteContainer.BackingIcon != string.Empty)
{
ammonomiconPageKey.DFGUI_BackingImage = ToolsCharApi.AddNewItemToAtlas(ammonomiconAtlas, ResourceExtractor.GetTextureFromResource(spriteContainer.BackingIcon, assemblyToUse), spriteContainer.BackingIcon).name;
}
}
else
{
((dfInteractiveBase)val5).Atlas = spriteContainer.customDFAtlas;
GameObject val11 = new GameObject("AmmonomiconBookmarkAnimationController");
val11.transform.parent = val4.transform;
dfAnimationClip val12 = val11.AddComponent<dfAnimationClip>();
val12.Atlas = spriteContainer.customDFAtlas;
val12.sprites = spriteContainer.AppearFrames.ToList();
component.AppearClip = val12;
dfAnimationClip val13 = val11.AddComponent<dfAnimationClip>();
val13.Atlas = spriteContainer.customDFAtlas;
val13.sprites = spriteContainer.SelectFrames.ToList();
component.SelectClip = val13;
((dfInteractiveBase)val5).backgroundSprite = spriteContainer.AppearFrames.Last();
component.DeselectSelectedSpriteName = spriteContainer.SelectHoverFrame;
component.SelectSpriteName = spriteContainer.HoverFrame;
if (spriteContainer.BackingIcon != string.Empty)
{
ammonomiconPageKey.DFGUI_BackingImage = spriteContainer.BackingIcon;
ammonomiconPageKey.CustomAtlas = spriteContainer.customDFAtlas;
}
}
}
StaticData.customBookmarks.Add(ammonomiconPageKey);
}
}
public class CustomAmmonomiconPageController
{
private List<EncounterDatabaseEntry> AdditionalEntries = new List<EncounterDatabaseEntry>();
public string Name = "Balls";
public string StringLocalization = "Balls";
public bool isLocalized = false;
public int ZOrder;
public void AddAdditionalEntry(EncounterDatabaseEntry encounterDatabaseEntry)
{
AdditionalEntries.Add(encounterDatabaseEntry);
}
public CustomAmmonomiconPageController(string PageName, int Order, bool Localized = false, string LocalizationKey = "")
{
Name = PageName;
ZOrder = Order;
StringLocalization = LocalizationKey;
isLocalized = Localized;
}
public virtual void OnFirstAdd(AmmonomiconBookmarkController self)
{
}
public virtual List<EncounterDatabaseEntry> GetEntriesForPage(AmmonomiconPageRenderer renderer)
{
return new List<EncounterDatabaseEntry>();
}
public virtual void InitializeName(AmmonomiconPageRenderer self)
{
dfScrollPanel component = ((Component)((Component)self).transform.parent.Find("Scroll Panel")).GetComponent<dfScrollPanel>();
Transform val = ((Component)component).transform.Find("Header");
dfLabel[] componentsInChildren = ((Component)val).GetComponentsInChildren<dfLabel>();
dfLabel[] array = componentsInChildren;
foreach (dfLabel val2 in array)
{
((dfControl)val2).IsLocalized = isLocalized;
((dfControl)val2).localizationKey = StringLocalization;
val2.text = Name;
}
}
public virtual void InitializeItemsPageLeft(AmmonomiconPageRenderer self)
{
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
List<EncounterDatabaseEntry> entriesForPage = GetEntriesForPage(self);
Transform val = ((Component)self.guiManager).transform.Find("Scroll Panel").Find("Scroll Panel");
dfPanel component = ((Component)val.Find("Guns Panel")).GetComponent<dfPanel>();
dfPanel component2 = ((Component)((Component)component).transform.GetChild(0)).GetComponent<dfPanel>();
((MonoBehaviour)self).StartCoroutine(self.ConstructRectanglePageLayout(component2, entriesForPage, new Vector2(12f, 20f), new Vector2(20f, 20f), false, (List<AdvancedSynergyEntry>)null));
((dfControl)component2).Anchor = (dfAnchorStyle)67;
((dfControl)component).Height = ((dfControl)component2).Height;
((dfControl)component2).Height = ((dfControl)component).Height;
}
public virtual void InitializeItemsPageRight(AmmonomiconPageRenderer rightPage)
{
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)rightPage == (Object)null)
{
return;
}
dfScrollPanel component = ((Component)((Component)rightPage.guiManager).transform.Find("Scroll Panel")).GetComponent<dfScrollPanel>();
Transform val = ((Component)component).transform.Find("Header");
if (Object.op_Implicit((Object)(object)val))
{
dfLabel component2 = ((Component)val.Find("Label")).GetComponent<dfLabel>();
component2.Text = ((dfControl)component2).ForceGetLocalizedValue("#AMMONOMICON_UNKNOWN");
((dfControl)component2).PerformLayout();
dfSprite component3 = ((Component)val.Find("Sprite")).GetComponent<dfSprite>();
if (Object.op_Implicit((Object)(object)component3))
{
component3.FillDirection = (dfFillDirection)1;
component3.FillAmount = (((int)GameManager.Options.CurrentLanguage != 0) ? 0.8f : 1f);
component3.InvertFill = true;
}
}
dfLabel component4 = ((Component)((Component)component).transform.Find("Tape Line One").Find("Label")).GetComponent<dfLabel>();
component4.Text = ((dfControl)component4).ForceGetLocalizedValue("#AMMONOMICON_QUESTIONS");
((dfControl)component4).PerformLayout();
dfSlicedSprite componentInChildren = ((Component)((Component)component).transform.Find("Tape Line One")).GetComponentInChildren<dfSlicedSprite>();
((dfControl)componentInChildren).Width = component4.GetAutosizeWidth() / 4f + 12f;
dfLabel component5 = ((Component)((Component)component).transform.Find("Tape Line Two").Find("Label")).GetComponent<dfLabel>();
component5.Text = ((dfControl)component4).ForceGetLocalizedValue("#AMMONOMICON_QUESTIONS");
((dfControl)component5).PerformLayout();
dfSlicedSprite componentInChildren2 = ((Component)((Component)component).transform.Find("Tape Line Two")).GetComponentInChildren<dfSlicedSprite>();
((dfControl)componentInChildren2).Width = component5.GetAutosizeWidth() / 4f + 12f;
dfPanel component6 = ((Component)((Component)component).transform.Find("ThePhoto").Find("Photo").Find("tk2dSpriteHolder")).GetComponent<dfPanel>();
dfSprite component7 = ((Component)((Component)component).transform.Find("ThePhoto").Find("Photo").Find("ItemShadow")).GetComponent<dfSprite>();
((dfControl)component7).IsVisible = false;
tk2dSprite componentInChildren3 = ((Component)component6).GetComponentInChildren<tk2dSprite>();
dfTextureSprite componentInChildren4 = ((Component)((Component)component).transform.Find("ThePhoto")).GetComponentInChildren<dfTextureSprite>();
if ((Object)(object)componentInChildren4 != (Object)null)
{
((dfControl)componentInChildren4).IsVisible = false;
}
if (!((Object)(object)componentInChildren3 == (Object)null))
{
if (SpriteOutlineManager.HasOutline((tk2dBaseSprite)(object)componentInChildren3))
{
SpriteOutlineManager.RemoveOutlineFromSprite((tk2dBaseSprite)(object)componentInChildren3, true);
}
((BraveBehaviour)componentInChildren3).renderer.enabled = false;
}
dfLabel component8 = ((Component)((Component)component).transform.Find("Scroll Panel").Find("Panel").Find("Label")).GetComponent<dfLabel>();
rightPage.CheckLanguageFonts(component8);
component8.Text = ((dfControl)component8).ForceGetLocalizedValue("#AMMONOMICON_MYSTERIOUS");
((dfControl)((Component)((Component)component8).transform.parent).GetComponent<dfPanel>()).Height = ((dfControl)component8).Height;
((Component)((Component)component).transform.Find("Scroll Panel")).GetComponent<dfScrollPanel>().ScrollPosition = Vector2.zero;
}
public virtual void OnPageOpenedLeft(AmmonomiconPageRenderer rightPage)
{
}
public virtual void OnPageOpenedRight(AmmonomiconPageRenderer rightPage)
{
SetPreExistingEncounteredObjectifPossible(rightPage);
}
public void SetPreExistingEncounteredObjectifPossible(AmmonomiconPageRenderer rightPage)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Invalid comparison between Unknown and I4
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Invalid comparison between Unknown and I4
if (!((Object)(object)AmmonomiconController.Instance.ImpendingLeftPageRenderer != (Object)null))
{
return;
}
for (int i = 0; i < AmmonomiconController.Instance.ImpendingLeftPageRenderer.m_pokedexEntries.Count; i++)
{
AmmonomiconPokedexEntry val = AmmonomiconController.Instance.ImpendingLeftPageRenderer.m_pokedexEntries[i];
if ((int)val.encounterState == 0)
{
rightPage.SetRightDataPageTexts((tk2dBaseSprite)(object)val.ChildSprite, val.linkedEncounterTrackable);
if (AmmonomiconController.Instance.ImpendingLeftPageRenderer.LastFocusTarget == null)
{
AmmonomiconController.Instance.ImpendingLeftPageRenderer.LastFocusTarget = (IAmmonomiconFocusable)(object)((Component)val).GetComponent<dfControl>();
}
break;
}
if ((int)val.encounterState == 1)
{
rightPage.SetPageDataUnknown(rightPage);
rightPage.SetRightDataPageName((tk2dBaseSprite)(object)val.ChildSprite, val.linkedEncounterTrackable);
if (AmmonomiconController.Instance.ImpendingLeftPageRenderer.LastFocusTarget == null)
{
AmmonomiconController.Instance.ImpendingLeftPageRenderer.LastFocusTarget = (IAmmonomiconFocusable)(object)((Component)val).GetComponent<dfControl>();
}
break;
}
}
}
public virtual bool ShouldBeActive()
{
return true;
}
public virtual void OnActivate()
{
}
public virtual void OnDeactivate()
{
}
public void OnSetDataUnknown(AmmonomiconPageRenderer rightPage)
{
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
dfScrollPanel component = ((Component)((Component)rightPage.guiManager).transform.Find("Scroll Panel")).GetComponent<dfScrollPanel>();
Transform val = ((Component)component).transform.Find("Header");
if (Object.op_Implicit((Object)(object)val))
{
dfLabel component2 = ((Component)val.Find("Label")).GetComponent<dfLabel>();
component2.Text = ((dfControl)component2).ForceGetLocalizedValue("#AMMONOMICON_UNKNOWN");
((dfControl)component2).PerformLayout();
dfSprite component3 = ((Component)val.Find("Sprite")).GetComponent<dfSprite>();
if (Object.op_Implicit((Object)(object)component3))
{
component3.FillDirection = (dfFillDirection)1;
component3.FillAmount = (((int)GameManager.Options.CurrentLanguage != 0) ? 0.8f : 1f);
component3.InvertFill = true;
}
}
dfLabel component4 = ((Component)((Component)component).transform.Find("Tape Line One").Find("Label")).GetComponent<dfLabel>();
component4.Text = ((dfControl)component4).ForceGetLocalizedValue("#AMMONOMICON_QUESTIONS");
((dfControl)component4).PerformLayout();
dfSlicedSprite componentInChildren = ((Component)((Component)component).transform.Find("Tape Line One")).GetComponentInChildren<dfSlicedSprite>();
((dfControl)componentInChildren).Width = component4.GetAutosizeWidth() / 4f + 12f;
dfLabel component5 = ((Component)((Component)component).transform.Find("Tape Line Two").Find("Label")).GetComponent<dfLabel>();
component5.Text = ((dfControl)component4).ForceGetLocalizedValue("#AMMONOMICON_QUESTIONS");
((dfControl)component5).PerformLayout();
dfSlicedSprite componentInChildren2 = ((Component)((Component)component).transform.Find("Tape Line Two")).GetComponentInChildren<dfSlicedSprite>();
((dfControl)componentInChildren2).Width = component5.GetAutosizeWidth() / 4f + 12f;
dfPanel component6 = ((Component)((Component)component).transform.Find("ThePhoto").Find("Photo").Find("tk2dSpriteHolder")).GetComponent<dfPanel>();
dfSprite component7 = ((Component)((Component)component).transform.Find("ThePhoto").Find("Photo").Find("ItemShadow")).GetComponent<dfSprite>();
((dfControl)component7).IsVisible = false;
tk2dSprite componentInChildren3 = ((Component)component6).GetComponentInChildren<tk2dSprite>();
dfTextureSprite componentInChildren4 = ((Component)((Component)component).transform.Find("ThePhoto")).GetComponentInChildren<dfTextureSprite>();
if ((Object)(object)componentInChildren4 != (Object)null)
{
((dfControl)componentInChildren4).IsVisible = false;
}
if (!((Object)(object)componentInChildren3 == (Object)null))
{
if (SpriteOutlineManager.HasOutline((tk2dBaseSprite)(object)componentInChildren3))
{
SpriteOutlineManager.RemoveOutlineFromSprite((tk2dBaseSprite)(object)componentInChildren3, true);
}
((BraveBehaviour)componentInChildren3).renderer.enabled = false;
}
dfLabel component8 = ((Component)((Component)component).transform.Find("Scroll Panel").Find("Panel").Find("Label")).GetComponent<dfLabel>();
rightPage.CheckLanguageFonts(component8);
component8.Text = ((dfControl)component8).ForceGetLocalizedValue("#AMMONOMICON_MYSTERIOUS");
((dfControl)((Component)((Component)component8).transform.parent).GetComponent<dfPanel>()).Height = ((dfControl)component8).Height;
((Component)((Component)component).transform.Find("Scroll Panel")).GetComponent<dfScrollPanel>().ScrollPosition = Vector2.zero;
}
}
[HarmonyPatch(typeof(AmmonomiconInstanceManager), "Open")]
public class NopeOutVisibility
{
private static bool Prefix(AmmonomiconInstanceManager __instance)
{
//IL_011d: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
//IL_01be: Unknown result type (might be due to invalid IL or missing references)
//IL_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_022d: Expected O, but got Unknown
//IL_0237: Unknown result type (might be due to invalid IL or missing references)
//IL_0241: Expected O, but got Unknown
InstancePlusManager component = ((Component)__instance).GetComponent<InstancePlusManager>();
if ((Object)(object)component == (Object)null)
{
Debug.Log((object)"[AmmonomiconAPI] Adding new InstancePlusManager!");
component = ((Component)__instance).gameObject.AddComponent<InstancePlusManager>();
component.InitInstance(__instance);
}
List<AmmonomiconBookmarkController> list = __instance.bookmarks.ToList();
dfScrollPanel component2 = ((Component)((Component)__instance.bookmarks[0]).transform.parent).GetComponent<dfScrollPanel>();
InstancePlusManager component3 = ((Component)__instance).GetComponent<InstancePlusManager>();
if ((Object)(object)component3 != (Object)null)
{
foreach (AmmonomiconPageKey customBookmark in StaticData.customBookmarks)
{
if (component3.AttemptAddBookmark(customBookmark.bookmarkController, ((Component)customBookmark.bookmarkController).GetComponent<AmmonomiconPageKey>()))
{
AmmonomiconPageKey ammonomiconPageKey = Object.Instantiate<AmmonomiconPageKey>(customBookmark);
((Component)ammonomiconPageKey).gameObject.SetActive(true);
AmmonomiconBookmarkController component4 = ((Component)ammonomiconPageKey).GetComponent<AmmonomiconBookmarkController>();
customBookmark.ammonomiconPageTag.OnFirstAdd(component4);
((Component)ammonomiconPageKey).transform.parent = ((Component)__instance.bookmarks[0]).gameObject.transform.parent;
((Component)ammonomiconPageKey).transform.position = ((Component)__instance.bookmarks[0]).gameObject.transform.position;
((Component)ammonomiconPageKey).transform.localPosition = new Vector3(0f, -1.2f, 0f);
dfButton val = (component4.m_sprite = ((Component)ammonomiconPageKey).GetComponent<dfButton>());
component3.AllBookmarks.Add(component4);
component3.AllKeys.Add(customBookmark.UniqueKey, component4);
((dfControl)val).cachedManager = ((dfControl)__instance.bookmarks[0].m_sprite).cachedManager;
((dfControl)val).size = new Vector2(86f, 64f);
val.startSize = new Vector2(86f, 64f);
((dfControl)val).cachedPixelSize = ((dfControl)__instance.bookmarks[0].m_sprite).cachedPixelSize;
((dfControl)val).ZOrder = customBookmark.ammonomiconPageTag.ZOrder;
((dfControl)val).OnSizeChanged();
AmmonomiconPageKey component5 = ((Component)ammonomiconPageKey).GetComponent<AmmonomiconPageKey>();
component5.instancePlusManager = component3;
list.Insert(list.Count - 2, component4);
((dfControl)val).MouseEnter += new MouseEventHandler(component3.OnMouseEnter);
((dfControl)val).MouseLeave += new MouseEventHandler(component3.OnMouseLeave);
}
}
component3.UpdateSizes();
__instance.bookmarks = list.ToArray();
__instance.m_currentlySelectedBookmark = 0;
((MonoBehaviour)__instance).StartCoroutine(HandleOpenAmmonomiconHook(__instance));
}
else
{
Debug.Log((object)"[AmmonomiconAPI] InstancePlusManager not FOUND! This should not happen!");
}
return false;
}
public static IEnumerator HandleOpenAmmonomiconHook(AmmonomiconInstanceManager self)
{
float waitPer = 0.3f / (float)self.bookmarks.Length;
dfGUIManager.SetFocus((dfControl)null, true);
self.bookmarks[self.m_currentlySelectedBookmark].IsCurrentPage = true;
InstancePlusManager inst = ((Component)self).GetComponent<InstancePlusManager>();
inst?.UpdateSizes();
for (int currentBookmark = 0; currentBookmark < self.bookmarks.Length; currentBookmark++)
{
if (!AmmonomiconController.Instance.IsOpen)
{
yield break;
}
bool isCustom = false;
if ((int)self.bookmarks[currentBookmark].LeftPageType == 11 || (int)self.bookmarks[currentBookmark].LeftPageType == 12)
{
continue;
}
inst?.UpdateSizes();
AmmonomiconBookmarkController currentBookmarkInst = self.bookmarks[currentBookmark];
foreach (AmmonomiconPageKey entry in StaticData.customBookmarks)
{
if (currentBookmarkInst.LeftPageType == entry.Left && currentBookmarkInst.RightPageType == entry.Right)
{
isCustom = true;
if (!entry.ammonomiconPageTag.ShouldBeActive())
{
currentBookmarkInst.Disable();
dfScrollPanel scroller = ((Component)((Component)currentBookmarkInst).transform.parent).GetComponent<dfScrollPanel>();
((dfControl)scroller).Localize();
entry.ammonomiconPageTag.OnDeactivate();
}
else
{
entry.ammonomiconPageTag.OnActivate();
currentBookmarkInst.TriggerAppearAnimation();
}
}
}
if (!isCustom)
{
self.bookmarks[currentBookmark].TriggerAppearAnimation();
}
yield return ((MonoBehaviour)self).StartCoroutine(self.InvariantWait(waitPer));
}
self.bookmarks[self.m_currentlySelectedBookmark].IsCurrentPage = true;
yield return null;
}
}
public class InstancePlusManager : MonoBehaviour
{
public List<AmmonomiconBookmarkController> AllBookmarks;
public Dictionary<string, AmmonomiconBookmarkController> AllKeys;
public AmmonomiconInstanceManager ammonomiconInstanceManager;
public float PixelSize = 0.0017f;
public Vector2 Size;
public Dictionary<dfControl, Coroutine> keyValuePairs = new Dictionary<dfControl, Coroutine>();
public Vector2 SizeConst = new Vector2(86f, 64f);
public float SizeCalc
{
get
{
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Invalid comparison between Unknown and I4
float num = 0f;
foreach (AmmonomiconBookmarkController allBookmark in AllBookmarks)
{
if ((int)allBookmark.LeftPageType != 11)
{
num += 1f;
continue;
}
AmmonomiconPageKey component = ((Component)allBookmark).GetComponent<AmmonomiconPageKey>();
if (Object.op_Implicit((Object)(object)component) && component.ammonomiconPageTag.ShouldBeActive())
{
num += 1f;
}
}
return Mathf.Min(6f / num * 0.96f, 1f);
}
}
public float SizeCalc_Size
{
get
{
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Invalid comparison between Unknown and I4
float num = 0f;
foreach (AmmonomiconBookmarkController allBookmark in AllBookmarks)
{
if ((int)allBookmark.LeftPageType != 11)
{
num += 1f;
continue;
}
AmmonomiconPageKey component = ((Component)allBookmark).GetComponent<AmmonomiconPageKey>();
if (Object.op_Implicit((Object)(object)component) && component.ammonomiconPageTag.ShouldBeActive())
{
num += 1f;
}
}
return Mathf.Min(12f / num * 0.96f, 1f);
}
}
public void InitInstance(AmmonomiconInstanceManager inst)
{
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Expected O, but got Unknown
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Expected O, but got Unknown
ammonomiconInstanceManager = inst;
AllBookmarks = new List<AmmonomiconBookmarkController>();
AllBookmarks.AddRange(inst.bookmarks.ToList());
AllKeys = new Dictionary<string, AmmonomiconBookmarkController>();
foreach (AmmonomiconBookmarkController allBookmark in AllBookmarks)
{
AllKeys.Add(((Object)allBookmark).name, allBookmark);
((dfControl)allBookmark.m_sprite).MouseEnter += new MouseEventHandler(OnMouseEnter);
((dfControl)allBookmark.m_sprite).MouseLeave += new MouseEventHandler(OnMouseLeave);
}
}
public bool AttemptAddBookmark(AmmonomiconBookmarkController ammonomiconBookmarkController, AmmonomiconPageKey key)
{
if ((Object)(object)key != (Object)null)
{
if (!AllKeys.ContainsKey(key.UniqueKey))
{
return true;
}
}
else if (!AllKeys.ContainsKey(((Object)ammonomiconBookmarkController).name))
{
AllBookmarks.Add(ammonomiconBookmarkController);
AllKeys.Add(((Object)ammonomiconBookmarkController).name, ammonomiconBookmarkController);
return true;
}
return false;
}
public void UpdateSizes()
{
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
float sizeCalc = SizeCalc;
dfScrollPanel component = ((Component)((Component)AllBookmarks[0]).transform.parent).GetComponent<dfScrollPanel>();
component.ScrollPadding.left = (int)(86f * (1f - sizeCalc));
float num = 60f * (1f - sizeCalc);
for (int num2 = AllBookmarks.Count() - 1; num2 > -1; num2--)
{
AmmonomiconBookmarkController val = AllBookmarks[num2];
((dfControl)val.m_sprite).maxSize = new Vector2(-1f, -1f);
((dfControl)val.m_sprite).size = new Vector2(86f, 64f) * sizeCalc;
((dfControl)val.m_sprite).OnSizeChanged();
}
}
public void OnMouseEnter(dfControl control, dfMouseEventArgs mouseEvent)
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
float sizeCalc_Size = SizeCalc_Size;
if (!(sizeCalc_Size >= 1f))
{
control.Size = SizeConst * (1f / sizeCalc_Size * 0.8f);
control.OnSizeChanged();
}
}
public void OnMouseLeave(dfControl control, dfMouseEventArgs mouseEvent)
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
float sizeCalc_Size = SizeCalc_Size;
if (!(sizeCalc_Size >= 1f))
{
control.Size = SizeConst * sizeCalc_Size;
control.OnSizeChanged();
}
}
}
public class SpriteContainer
{
public dfAtlas customDFAtlas = null;
public string SelectHoverFrame;
public string HoverFrame;
public string[] SelectFrames;
public string[] AppearFrames;
public string BackingIcon = string.Empty;
public SpriteContainer()
{
}
public SpriteContainer(dfAtlas dfAtlasToUse)
{
customDFAtlas = dfAtlasToUse;
}
}
public static class StaticData
{
internal static AmmonomiconInstanceManager InstanceManagerCached;
public static dfPanel HeaderObject;
public static dfPanel GunsItemsHeader;
public static dfPanel ActiveItemsHeader;
public static dfPanel ItemsHeader;
public static dfPanel ItemsPanel;
public static dfPanel LeftPageFooter;
public static dfPanel HeaderObjectRightPage;
public static dfPanel ThePhotoGraph;
public static dfPanel RightPageDivider;
public static dfPanel RightPageFooter;
public static dfPanel RightPageScrollPanel;
public static dfPanel TapeLine;
public static dfAtlas AmmonomiconAtlas;
public static List<AmmonomiconPageKey> customBookmarks = new List<AmmonomiconPageKey>();
public static List<PageType> AllCustomEnums = new List<PageType>();
private static string[] BundlePrereqs = new string[30]
{
"brave_resources_001", "dungeon_scene_001", "encounters_base_001", "enemies_base_001", "flows_base_001", "foyer_001", "foyer_002", "foyer_003", "shared_auto_001", "shared_auto_002",
"shared_base_001", "dungeons/base_bullethell", "dungeons/base_castle", "dungeons/base_catacombs", "dungeons/base_cathedral", "dungeons/base_forge", "dungeons/base_foyer", "dungeons/base_gungeon", "dungeons/base_mines", "dungeons/base_nakatomi",
"dungeons/base_resourcefulrat", "dungeons/base_sewer", "dungeons/base_tutorial", "dungeons/finalscenario_bullet", "dungeons/finalscenario_convict", "dungeons/finalscenario_coop", "dungeons/finalscenario_guide", "dungeons/finalscenario_pilot", "dungeons/finalscenario_robot", "dungeons/finalscenario_soldier"
};
internal static Dictionary<int, string> Stored2ndTapeTexts = new Dictionary<int, string>();
public static void InitStaticData()
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Expected O, but got Unknown
//IL_017d: Unknown result type (might be due to invalid IL or missing references)
//IL_0184: Expected O, but got Unknown
dfAtlas component = StaticData.LoadAssetFromAnywhere<GameObject>("Ammonomicon Atlas").GetComponent<dfAtlas>();
AmmonomiconAtlas = component;
AmmonomiconController component2 = ((GameObject)BraveResources.Load("Ammonomicon Controller", ".prefab")).GetComponent<AmmonomiconController>();
InstanceManagerCached = component2.AmmonomiconBasePrefab.GetComponent<AmmonomiconInstanceManager>();
GameObject val = (GameObject)Object.Instantiate(BraveResources.Load(InstanceManagerCached.bookmarks[0].TargetNewPageLeft, ".prefab"));
AmmonomiconPageRenderer componentInChildren = val.GetComponentInChildren<AmmonomiconPageRenderer>();
Transform val2 = ((Component)((Component)((Component)componentInChildren).transform.parent).GetComponent<dfGUIManager>()).transform.Find("Scroll Panel");
HeaderObject = FakePrefab.Clone(((Component)val2.Find("Header")).gameObject).GetComponent<dfPanel>();
LeftPageFooter = FakePrefab.Clone(((Component)val2.Find("Footer")).gameObject).GetComponent<dfPanel>();
Transform val3 = val2.Find("Scroll Panel");
ActiveItemsHeader = FakePrefab.Clone(((Component)val3.Find("Active Items Header")).gameObject).GetComponent<dfPanel>();
GunsItemsHeader = FakePrefab.Clone(((Component)val3.Find("Guns Header")).gameObject).GetComponent<dfPanel>();
ItemsHeader = FakePrefab.Clone(((Component)val3.Find("Passive Items Header")).gameObject).GetComponent<dfPanel>();
ItemsPanel = FakePrefab.Clone(((Component)val3.Find("Passive Items Panel")).gameObject).GetComponent<dfPanel>();
GameObject val4 = (GameObject)Object.Instantiate(BraveResources.Load(InstanceManagerCached.bookmarks[0].TargetNewPageRight, ".prefab"));
AmmonomiconPageRenderer componentInChildren2 = val4.GetComponentInChildren<AmmonomiconPageRenderer>();
Transform val5 = ((Component)((Component)((Component)componentInChildren2).transform.parent).GetComponent<dfGUIManager>()).transform.Find("Scroll Panel");
HeaderObjectRightPage = FakePrefab.Clone(((Component)val5.Find("Header")).gameObject).GetComponent<dfPanel>();
ThePhotoGraph = FakePrefab.Clone(((Component)val5.Find("ThePhoto")).gameObject).GetComponent<dfPanel>();
RightPageDivider = FakePrefab.Clone(((Component)val5.Find("Divider")).gameObject).GetComponent<dfPanel>();
RightPageFooter = FakePrefab.Clone(((Component)val5.Find("Footer")).gameObject).GetComponent<dfPanel>();
RightPageScrollPanel = FakePrefab.Clone(((Component)val5.Find("Scroll Panel")).gameObject).GetComponent<dfPanel>();
TapeLine = FakePrefab.Clone(((Component)val5.Find("Tape Line One")).gameObject).GetComponent<dfPanel>();
Object.Destroy((Object)(object)val.gameObject);
Object.Destroy((Object)(object)val4.gameObject);
}
public static T LoadAssetFromAnywhere<T>(string path) where T : Object
{
T val = default(T);
string[] bundlePrereqs = BundlePrereqs;
foreach (string text in bundlePrereqs)
{
try
{
val = ResourceManager.LoadAssetBundle(text).LoadAsset<T>(path);
}
catch
{
}
if ((Object)(object)val != (Object)null)
{
break;
}
}
return val;
}
}
public static class HelperTools
{
private static int _AutoStringCounter = 0;
private static int _AutoStringCounter2ndTape = -1;
public static PlayerController LastPlayerOpenedUI()
{
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
PlayerController result = null;
if (GameManager.Instance.IsSelectingCharacter)
{
if (Object.op_Implicit((Object)(object)Foyer.Instance.CurrentSelectedCharacterFlag))
{
result = ((GameObject)BraveResources.Load(Foyer.Instance.CurrentSelectedCharacterFlag.CharacterPrefabPath, ".prefab")).GetComponent<PlayerController>();
}
}
else
{
result = GameManager.Instance.PrimaryPlayer;
for (int i = 0; i < GameManager.Instance.AllPlayers.Length; i++)
{
if (GameManager.Instance.AllPlayers[i].PlayerIDX == GameManager.Instance.LastPausingPlayerID)
{
result = GameManager.Instance.AllPlayers[i];
}
}
}
return result;
}
public static dfScrollPanel PageRendererScrollParentObject(this AmmonomiconPageRenderer ammonomiconPageRenderer)
{
int childCount = ((Component)ammonomiconPageRenderer).transform.parent.childCount;
for (int i = 0; i < childCount; i++)
{
dfScrollPanel component = ((Component)((Component)ammonomiconPageRenderer).transform.parent.GetChild(i)).gameObject.GetComponent<dfScrollPanel>();
if ((Object)(object)component == (Object)null)
{
return component;
}
}
return null;
}
public static EncounterDatabaseEntry CreateDummyEncounterDatabaseEntry(JournalEntry journalEntry, string EncounterGUID = null, bool autoEncounter = true)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
EncounterGUID = EncounterGUID ?? Guid.NewGuid().ToString();
EncounterDatabaseEntry val = new EncounterDatabaseEntry();
val.journalData = journalEntry;
((AssetBundleDatabaseEntry)val).path = string.Empty;
((AssetBundleDatabaseEntry)val).myGuid = EncounterGUID;
if (autoEncounter)
{
GameStatsManager.Instance.HandleEncounteredObjectRaw(EncounterGUID);
}
return val;
}
public static EncounterDatabaseEntry CreateDummyEncounterDatabaseEntry(string OverrideShootStyleString, JournalEntry journalEntry, string EncounterGUID = null, bool autoEncounter = true)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
EncounterGUID = EncounterGUID ?? Guid.NewGuid().ToString();
EncounterDatabaseEntry val = new EncounterDatabaseEntry();
val.journalData = journalEntry;
((AssetBundleDatabaseEntry)val).path = string.Empty;
((AssetBundleDatabaseEntry)val).myGuid = EncounterGUID;
if (OverrideShootStyleString != null)
{
val.shootStyleInt = OverrideShootStyleString.To2ndTapeDatabase();
}
if (autoEncounter)
{
GameStatsManager.Instance.HandleEncounteredObjectRaw(EncounterGUID);
}
return val;
}
public static EncounterDatabaseEntry CreateDummyEncounterDatabaseEntry(int? OverrideShootStyleValue, JournalEntry journalEntry, string EncounterGUID = null, bool autoEncounter = true)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
EncounterGUID = EncounterGUID ?? Guid.NewGuid().ToString();
EncounterDatabaseEntry val = new EncounterDatabaseEntry();
val.journalData = journalEntry;
((AssetBundleDatabaseEntry)val).path = string.Empty;
((AssetBundleDatabaseEntry)val).myGuid = EncounterGUID;
if (OverrideShootStyleValue.HasValue)
{
val.shootStyleInt = OverrideShootStyleValue.Value;
}
if (autoEncounter)
{
GameStatsManager.Instance.HandleEncounteredObjectRaw(EncounterGUID);
}
return val;
}
public static JournalEntry CreateJournalEntryData(string DisplayNameKey, string AmmonomiconSprite, string Tagline, string FullEntry, bool isEnemy = false, Texture2D PortraitTexture = null)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
JournalEntry val = new JournalEntry();
val.PrimaryDisplayName = DisplayNameKey.ToDatabase();
val.NotificationPanelDescription = Tagline.ToDatabase();
val.AmmonomiconFullEntry = FullEntry.ToDatabase();
val.AmmonomiconSprite = AmmonomiconSprite;
val.enemyPortraitSprite = PortraitTexture;
val.IsEnemy = isEnemy;
return val;
}
private static string ToDatabase(this string s)
{
if (s.Length == 0 || s[0] == '#')
{
return s;
}
string text = $"#AMMONOMICON_AUTO_DB_STRING_{++_AutoStringCounter}";
NpcTools.AddComplex(Databases.Strings.Items, text, s);
return text;
}
public static int To2ndTapeDatabase(this string s)
{
string text = "";
if (s.Length == 0)
{
return -1;
}
_AutoStringCounter2ndTape--;
if (s[0] == '#')
{
text = s;
}
else
{
text = "#AMMONOMICON_AUTO_DB_STRING_TAPE_" + s;
NpcTools.AddComplex(Databases.Strings.Items, text, s);
}
StaticData.Stored2ndTapeTexts.Add(_AutoStringCounter2ndTape, text);
return _AutoStringCounter2ndTape;
}
internal static void CallPrivate(this ILCursor cursor, Type t, string name)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
cursor.Emit(OpCodes.Call, (MethodBase)t.GetMethod(name, BindingFlags.Static | BindingFlags.NonPublic));
}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("bobot_and_bunny.etg.ammonomiconapi", "[[ AmmonomiconAPI ]]", "1.0.2")]
public class AmmonomiconAPIModule : BaseUnityPlugin
{
public const string GUID = "bobot_and_bunny.etg.ammonomiconapi";
public const string NAME = "[[ AmmonomiconAPI ]]";
public const string VERSION = "1.0.2";
public const string TEXT_COLOR = "#FF0000";
public void Start()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
new Harmony("bobot_and_bunny.etg.ammonomiconapi").PatchAll();
ETGModMainBehaviour.WaitForGameManagerStart((Action<GameManager>)GMStart);
}
public void GMStart(GameManager g)
{
StaticData.InitStaticData();
AmmonomiconAPIHooks.Init();
Log("[[ AmmonomiconAPI ]] v1.0.2 started successfully.", "#FF0000");
}
public static void Log(string text, string color = "#FFFFFF")
{
ETGModConsole.Log((object)("<color=" + color + ">" + text + "</color>"), false);
}
}
}
namespace AmmonomiconAPI.Code
{
internal class ExampleSetup
{
public class ExampleCustomAmmonomiconPageController : CustomAmmonomiconPageController
{
public ExampleCustomAmmonomiconPageController()
: base("ExampleName", 3)
{
}
public override List<EncounterDatabaseEntry> GetEntriesForPage(AmmonomiconPageRenderer renderer)
{
List<EncounterDatabaseEntry> list = new List<EncounterDatabaseEntry>();
list.Add(HelperTools.CreateDummyEncounterDatabaseEntry(HelperTools.CreateJournalEntryData("ExampleEntryName", "YourAmmonomiconSprite", "Tagline", "OOOOOOOOOO thats a lot")));
list.Add(HelperTools.CreateDummyEncounterDatabaseEntry("Your Second Tape Line", HelperTools.CreateJournalEntryData("ExampleEntryName", "YourAmmonomiconSprite", "Tagline", "text text text")));
string s = "hey this is a 2nd key";
int value = s.To2ndTapeDatabase();
list.Add(HelperTools.CreateDummyEncounterDatabaseEntry(value, HelperTools.CreateJournalEntryData("ExampleEntryName", "YourAmmonomiconSprite", "Tagline", "text text text")));
return list;
}
public override bool ShouldBeActive()
{
return true;
}
}
private static void ExampleSetupMyPage()
{
SpriteContainer spriteContainer = new SpriteContainer();
spriteContainer.AppearFrames = new string[4] { "ExampleFramePath_1_Appear", "ExampleFramePath_2_Appear", "ExampleFramePath_3_Appear", "ExampleFramePath_4_Appear" };
spriteContainer.SelectFrames = new string[3] { "ExampleFramePath_1_Select", "ExampleFramePath_2_Select", "ExampleFramePath_3_Select" };
spriteContainer.HoverFrame = "ExampleFramePath_1_Hover";
spriteContainer.SelectHoverFrame = "ExampleFramePath_1_SelectHover";
UIBuilder.BuildBookmark("ExamplePrefix", "ExampleEnumNames", new ExampleCustomAmmonomiconPageController(), spriteContainer, Assembly.GetExecutingAssembly());
}
private static void ExampleAction()
{
CustomActions.OnPreEquipmentPageBuild = (Func<AmmonomiconPageRenderer, bool>)Delegate.Combine(CustomActions.OnPreEquipmentPageBuild, new Func<AmmonomiconPageRenderer, bool>(BuildEquipmentPage));
}
private static bool BuildEquipmentPage(AmmonomiconPageRenderer ammonomiconPageRenderer)
{
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
Transform val = ((Component)ammonomiconPageRenderer.guiManager).transform.Find("Scroll Panel").Find("Scroll Panel");
if ((Object)(object)val.Find("MyNewTab") == (Object)null)
{
dfPanel headerObject = StaticData.HeaderObject;
dfPanel val2 = Object.Instantiate<dfPanel>(StaticData.ActiveItemsHeader, val);
((Object)val2).name = "MyNewTab";
dfLabel componentInChildren = ((Component)val2).GetComponentInChildren<dfLabel>();
((dfControl)componentInChildren).isLocalized = false;
((dfControl)componentInChildren).localizationKey = "";
componentInChildren.Text = "My Tab";
ConditionalTranslator component = ((Component)componentInChildren).gameObject.GetComponent<ConditionalTranslator>();
((Behaviour)component).enabled = false;
dfPanel component2 = ((Component)val2).GetComponent<dfPanel>();
((dfControl)component2).ZOrder = 9;
dfPanel val3 = Object.Instantiate<dfPanel>(StaticData.ItemsPanel, val);
((Object)val3).name = "MyNewPanel";
((dfControl)val3).ZOrder = 10;
}
List<EncounterDatabaseEntry> list = new List<EncounterDatabaseEntry>();
if (list.Count > 0)
{
dfPanel component3 = ((Component)val.Find("MyNewPanel")).GetComponent<dfPanel>();
dfPanel component4 = ((Component)((Component)component3).transform.GetChild(0)).GetComponent<dfPanel>();
((MonoBehaviour)ammonomiconPageRenderer).StartCoroutine(ammonomiconPageRenderer.ConstructRectanglePageLayout(component4, list, new Vector2(12f, 16f), new Vector2(8f, 8f), true, (List<AdvancedSynergyEntry>)null));
((dfControl)component3).Anchor = (dfAnchorStyle)67;
((dfControl)component3).Height = ((dfControl)component4).Height;
((dfControl)component4).Height = ((dfControl)component3).Height;
}
return true;
}
}
}
namespace AmmonomiconAPI.Code.Misc
{
public class AmmonomiconPageKey : MonoBehaviour
{
public string UniqueKey = "Test";
public AmmonomiconBookmarkController bookmarkController;
public CustomAmmonomiconPageController ammonomiconPageTag;
public PageType Left;
public PageType Right;
public dfButton dfButton;
public InstancePlusManager instancePlusManager;
public string DFGUI_BackingImage = string.Empty;
public dfAtlas CustomAtlas = null;
}
internal class OldCode
{
}
}