terraria-source-code/GameContent/Bestiary/GoldCritterUICollectionInfoProvider.cs
2021-10-26 12:45:26 -04:00

67 lines
2.9 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Terraria.GameContent.Bestiary.GoldCritterUICollectionInfoProvider
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Terraria.ID;
namespace Terraria.GameContent.Bestiary
{
public class GoldCritterUICollectionInfoProvider : IBestiaryUICollectionInfoProvider
{
private string[] _normalCritterPersistentId;
private string _goldCritterPersistentId;
public GoldCritterUICollectionInfoProvider(
int[] normalCritterPersistentId,
string goldCritterPersistentId)
{
this._normalCritterPersistentId = new string[normalCritterPersistentId.Length];
for (int index = 0; index < normalCritterPersistentId.Length; ++index)
this._normalCritterPersistentId[index] = ContentSamples.NpcBestiaryCreditIdsByNpcNetIds[normalCritterPersistentId[index]];
this._goldCritterPersistentId = goldCritterPersistentId;
}
public BestiaryUICollectionInfo GetEntryUICollectionInfo()
{
BestiaryEntryUnlockState unlockStateForCritter1 = this.GetUnlockStateForCritter(this._goldCritterPersistentId);
BestiaryEntryUnlockState entryUnlockState = BestiaryEntryUnlockState.NotKnownAtAll_0;
if (unlockStateForCritter1 > entryUnlockState)
entryUnlockState = unlockStateForCritter1;
foreach (string persistentId in this._normalCritterPersistentId)
{
BestiaryEntryUnlockState unlockStateForCritter2 = this.GetUnlockStateForCritter(persistentId);
if (unlockStateForCritter2 > entryUnlockState)
entryUnlockState = unlockStateForCritter2;
}
BestiaryUICollectionInfo uiCollectionInfo = new BestiaryUICollectionInfo()
{
UnlockState = entryUnlockState
};
if (entryUnlockState == BestiaryEntryUnlockState.NotKnownAtAll_0 || this.TryFindingOneGoldCritterThatIsAlreadyUnlocked())
return uiCollectionInfo;
return new BestiaryUICollectionInfo()
{
UnlockState = BestiaryEntryUnlockState.NotKnownAtAll_0
};
}
private bool TryFindingOneGoldCritterThatIsAlreadyUnlocked()
{
for (int index = 0; index < NPCID.Sets.GoldCrittersCollection.Count; ++index)
{
int goldCritters = NPCID.Sets.GoldCrittersCollection[index];
if (this.GetUnlockStateForCritter(ContentSamples.NpcBestiaryCreditIdsByNpcNetIds[goldCritters]) > BestiaryEntryUnlockState.NotKnownAtAll_0)
return true;
}
return false;
}
private BestiaryEntryUnlockState GetUnlockStateForCritter(
string persistentId)
{
return !Main.BestiaryTracker.Sights.GetWasNearbyBefore(persistentId) ? BestiaryEntryUnlockState.NotKnownAtAll_0 : BestiaryEntryUnlockState.CanShowDropsWithDropRates_4;
}
}
}