public int Add(PickupObject value, bool updateSpriteCollections = false, string floor = "ANY") { int id = PickupObjectDatabase.Instance.Objects.Count; PickupObjectDatabase.Instance.Objects.Add(value); ModItems.Add(value); if (value != null) { UnityEngine.Object.DontDestroyOnLoad(value.gameObject); ModItemMap[value.name] = value; value.PickupObjectId = id; EncounterDatabaseEntry edbEntry = new EncounterDatabaseEntry(value.encounterTrackable); edbEntry.ProxyEncounterGuid = edbEntry.myGuid = value.encounterTrackable.EncounterGuid; edbEntry.path = "Assets/Resources/ITEMDB:" + value.name + ".prefab"; EncounterDatabase.Instance.Entries.Add(edbEntry); WeightedGameObject lootGameObject = new WeightedGameObject() { // gameObject = value.gameObject, weight = 1f, additionalPrerequisites = new DungeonPrerequisite[0] }; lootGameObject.SetGameObject(value.gameObject); if (value is Gun) { GameManager.Instance.RewardManager.GunsLootTable.defaultItemDrops.Add(lootGameObject); } else { GameManager.Instance.RewardManager.ItemsLootTable.defaultItemDrops.Add(lootGameObject); } List <WeightedGameObject> loot; if (!ModLootPerFloor.TryGetValue(floor, out loot)) { loot = new List <WeightedGameObject>(); } loot.Add(lootGameObject); ModLootPerFloor[floor] = loot; } if (updateSpriteCollections) { AmmonomiconController.ForceInstance.EncounterIconCollection.Handle(); if (value is Gun) { WeaponCollection.Handle(); WeaponCollection02.Handle(); ProjectileCollection.Handle(); } else { ItemCollection.Handle(); } } return(id); }
public static void SetupSprite(this Gun gun, tk2dSpriteCollectionData collection = null, string defaultSprite = null, int fps = 0) { AmmonomiconController.ForceInstance.EncounterIconCollection.Handle(); ETGMod.Databases.Items.ProjectileCollection.Handle(); collection = collection ?? ETGMod.Databases.Items.WeaponCollection; collection.Handle(); if (defaultSprite != null) { gun.encounterTrackable.journalData.AmmonomiconSprite = defaultSprite; } gun.UpdateAnimations(collection); gun.GetSprite().SetSprite(collection, gun.DefaultSpriteID = collection.GetSpriteIdByName(gun.encounterTrackable.journalData.AmmonomiconSprite)); if (fps != 0) { gun.SetAnimationFPS(fps); } }