public override void Awake() { ShowDoppleganger = false; DopplegangerProps.Clear(); DopplegangerMode = WIMode.Stacked; MouseoverHover = false; DisplayMode = SquareDisplayMode.Disabled; base.Awake(); }
public virtual void SetMode(WIMode mode) { if (mDestroyed) { return; } if (!Is(WILoadState.Initialized | WILoadState.PreparingToUnload) || mode == WIMode.None) { return; } if (IsTemplate) { return; } Props.Local.PreviousMode = Props.Local.Mode; Props.Local.Mode = mode; switch (mode) { case WIMode.World: OnSetWorldMode(false); break; case WIMode.Hidden: OnSetHiddenMode(); break; case WIMode.Destroyed: OnSetDestroyedMode(); break; case WIMode.Frozen: OnSetWorldMode(true); break; case WIMode.Equipped: OnSetEquippedMode(); break; case WIMode.RemovedFromGame: StartCoroutine(OnSetRemovedMode()); break; default: //stacked, crafting, etc. all handle themselves //just set the mode break; } //we don't bother to check if we're already in this mode //sometimes calling mode is like a 'reset' button and we //don't want to prevent that from happening if (mode != WIMode.RemovedFromGame) { try { OnModeChange.SafeInvoke(); } catch (Exception e) { Debug.LogError("Exception when changing mode, proceeding normally: " + e.ToString()); } } }
public bool Is(WIMode mode) { return(Frontiers.Flags.Check((uint)Props.Local.Mode, (uint)mode, Frontiers.Flags.CheckType.MatchAny)); }
public override GameObject GetDoppleganger(WorldItem item, Transform dopplegangerParent, string dopplegangerName, WIMode mode, string state, string subcat, float scaleMultiplier, TimeOfDay tod, TimeOfYear toy) { GameObject doppleganger = dopplegangerParent.gameObject.FindOrCreateChild(dopplegangerName).gameObject; Books.Get.InitializeBookAvatarGameObject(doppleganger, item.StackName, subcat); WorldItems.ApplyDopplegangerMode(item, doppleganger, mode, scaleMultiplier); return(doppleganger); }
public StackItem GetStackItem(WIMode stackItemMode) { return(this); }
//custom doppleganger script for plants public override GameObject GetDoppleganger(WorldItem item, Transform dopplegangerParent, string dopplegangerName, WIMode mode, string state, string subcat, float scaleMultiplier, TimeOfDay tod, TimeOfYear toy) { GameObject doppleganger = dopplegangerParent.gameObject.FindOrCreateChild(dopplegangerName).gameObject; Vector3 offset = Vector3.zero; //we have a lookup based on season so this has to be in season form toy = WorldClock.TimeOfYearToSeason(toy); Plants.Get.InitializeWorldPlantGameObject(doppleganger, subcat, toy); if (Flags.Check((uint)mode, (uint)(WIMode.Stacked | WIMode.Selected | WIMode.Crafting | WIMode.Wear), Flags.CheckType.MatchAny)) { WorldItems.AutoScaleDoppleganger(dopplegangerParent, doppleganger, item.BaseObjectBounds, ref scaleMultiplier, ref offset); } //TODO debug so this isn't necessary... offset.y = 0f; WorldItems.ApplyDopplegangerMode(item, doppleganger, mode, scaleMultiplier, offset); return(doppleganger); }
{ //used by WorldItems manager to create a custom doppleganger public virtual GameObject GetDoppleganger(WorldItem item, Transform dopplegangerParent, string dopplegangerName, WIMode mode, string state, string subcat, float scaleMultiplier, TimeOfDay tod, TimeOfYear toy) { return(null); }
public override GameObject GetDoppleganger(WorldItem item, Transform dopplegangerParent, string dopplegangerName, WIMode mode, string state, string subcat, float scaleMultiplier, TimeOfDay tod, TimeOfYear toy) { GameObject doppleganger = dopplegangerParent.gameObject.FindOrCreateChild(dopplegangerName).gameObject; //use the subcat to get our blueprint result Vector3 offset = Vector3.zero; ItemBounds.size = Vector3.one; ItemBounds.center = Vector3.zero; doppleganger.transform.parent = null; doppleganger.transform.ResetLocal(); PreparedFoods.InitializePreparedFoodGameObject(doppleganger, subcat, true, ref ItemBounds); doppleganger.transform.parent = dopplegangerParent; if (Flags.Check((uint)mode, (uint)(WIMode.Stacked | WIMode.Selected | WIMode.Crafting | WIMode.Wear), Flags.CheckType.MatchAny)) { WorldItems.AutoScaleDoppleganger(dopplegangerParent, doppleganger, ItemBounds, ref scaleMultiplier, ref offset); } WorldItems.ApplyDopplegangerMode(item, doppleganger, mode, scaleMultiplier, offset); WorldItems.ApplyDopplegangerMaterials(doppleganger, mode); return(doppleganger); }