public static GameObject ReturnRestocableObjectFromRegister(RestockItem rItem, ObjectGuid registerId) { GameObject restockObject = null; bool continueLooping = true; StoreSetRegister register = CMStoreSet.ReturnRegister(registerId, rItem.LotCurrent); if (register != null) { foreach (var stack in register.Inventory.InventoryItems.Values) { if (!continueLooping) { break; } foreach (var item in stack.List) { ItemType type = RestockItemHelperClass.GetItemType((GameObject)item.Object); if (rItem.info.Type == type) { //Does the name match if (rItem.info.Name.Equals(item.Object.GetLocalizedName())) { restockObject = (GameObject)item.Object; continueLooping = false; break; } } } } } return(restockObject); }
public override Tooltip CreateTooltip(Vector2 mousePosition, WindowBase mousedOverWindow, ref Vector2 tooltipPosition) { //StringBuilder sb = new StringBuilder(); //sb.Append(this.info.Name); //sb.Append(" "); //sb.Append(this.info.Price.ToString()); //sb.Append(" §"); return(new SimpleTextTooltip(CMStoreSet.LocalizeString("RestockItemTooltip", new object[] { this.info.Name, this.info.Price.ToString() }))); }
public static GameObject ReturnRestocableObject(RestockItem rItem, ObjectGuid registerId) { StoreSetRegister register = null; GameObject restockObject = null; //If item is linked to a register, restock from the correct inventory if (registerId != ObjectGuid.InvalidObjectGuid) { register = CMStoreSet.ReturnRegister(registerId, rItem.LotCurrent); restockObject = ReturnRestocableObjectFromRegister(rItem, registerId); } if (restockObject != null && register != null && !register.Inventory.TryToRemove(restockObject)) { restockObject = null; } return(restockObject); }
public override bool Run() { if (!this.Actor.RouteToObjectRadialRange(this.Target, UniversityWelcomeKit.kMinRouteDistance, UniversityWelcomeKit.kMaxRouteDistance)) { return(false); } base.StandardEntry(); base.BeginCommodityUpdates(); base.EnterStateMachine("UniversityWelcomeKit", "EnterUniversity", "x"); base.AnimateSim("LoopTest"); bool flag = base.DoTimedLoop(2f, ExitReason.Default); base.AnimateSim("ExitAptituteTest"); base.EndCommodityUpdates(flag); base.StandardExit(); //Replace restock item with the restocked item StoreSetBase b = RestockItemHelperClass.FindParentShopBase(this.Target); GameObject o = RestockItemHelperClass.RecreateSoldObject(this.Target, this.Actor.SimDescription); //If the sim is tending the register, make him go back to tending if (b != null) { b.AddInteractionsToChildObjects(); List <StoreSetRegister> registers = new List <StoreSetRegister>(Sims3.Gameplay.Queries.GetObjects <StoreSetRegister>(b.LotCurrent)); if (registers != null) { foreach (var register in registers) { //Push hired clerk to go back to work. if (CMStoreSet.IsStoreOpen(register) && register.mPreferredClerk == this.Actor.SimDescription.SimDescriptionId) { base.TryPushAsContinuation(StoreSetRegister.PostureIdle.Singleton, register); break; } } } } return(true); }
public static StoreSetBase ReturnStoreSetBase(GameObject gameObject, out bool isRug) { isRug = false; if (gameObject == null) { CMStoreSet.PrintMessage("ReturnStoreSetBase: null"); } GameObject sBase = FindParentShopBase(gameObject); if (sBase != null) { if (sBase.GetType() == typeof(ani_StoreRug)) { isRug = true; } return((StoreSetBase)sBase); } return(null); }
public override bool Test(Sim a, RestockItem target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback) { //If restock from inventory, check does the item exist StoreSetBase sBase = RestockItemHelperClass.FindParentShopBase(target); if (sBase == null) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayNeedsPedestal", new object[0] { })); return(false); } if (sBase.Charred) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayCharred", new object[0] { })); return(false); } if (RestockItemHelperClass.RestockFromInventory(target, sBase.Info.RestockCraftable)) { if (sBase.Info.RegisterId == ObjectGuid.InvalidObjectGuid && !sBase.Info.RestockCraftable) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayNeedsRegister", new object[0] { })); return(false); } if (sBase.Info.RegisterId != ObjectGuid.InvalidObjectGuid && RestockItemHelperClass.ReturnRestocableObjectFromRegister(target, sBase.Info.RegisterId) == null) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayInventoryEmpty", new object[0] { })); return(false); } } else { //Should restock buy items be disabled if (target.info.Type == ItemType.Buy && !sBase.Info.RestockBuyMode) { greyedOutTooltipCallback = InteractionInstance.CreateTooltipCallback(CMStoreSet.LocalizeString("GrayRestockBuyModeDisabled", new object[0] { })); return(false); } } return(true); }
public override string GetInteractionName(Sim a, RestockItem target, InteractionObjectPair interaction) { return(CMStoreSet.LocalizeString("Restock", new object[0] { })); }
public static GameObject RecreateSoldObject(RestockItem restockItem, SimDescription actor) { try { IGameObject gameObject = null; bool restockBuyMode = false; bool restockCraftable = false; StoreSetRegister register = null; bool isRug; StoreSetBase shopBase = ReturnStoreSetBase(restockItem, out isRug); if (shopBase != null) { if (shopBase.Info.RegisterId != ObjectGuid.InvalidObjectGuid) { register = CMStoreSet.ReturnRegister(shopBase.Info.RegisterId, shopBase.LotCurrent); } restockBuyMode = shopBase.Info.RestockBuyMode; restockCraftable = shopBase.Info.RestockCraftable; #region Find the slot bool slotFound = false; Slot slot = Slot.ContainmentSlot_0; if (!isRug) { Slot[] containmentSlots = shopBase.GetContainmentSlots(); if (containmentSlots != null) { for (int i = 0; i < containmentSlots.Length; i++) { GameObject o = shopBase.GetContainedObject(containmentSlots[i]) as GameObject; if (o != null && o.ObjectId == restockItem.ObjectId) { slotFound = true; slot = containmentSlots[i]; break; } } } } #endregion //Restock from inventory only, if not buy object and linked to register bool restockFromInventory = RestockFromInventory(restockItem, restockCraftable); //Restock from buy mode #region Buy Mode if (!restockFromInventory) { if (restockItem.info.Type == ItemType.Buy || restockItem.info.Type == ItemType.Craftable) { gameObject = GlobalFunctions.CreateObject(restockItem.info.Key, restockItem.Position, restockItem.mLevel, restockItem.ForwardVector); if (!(gameObject is FailureObject)) { if (!string.IsNullOrEmpty(restockItem.info.DesignPreset)) { SortedList <string, bool> enabledStencils = new SortedList <string, bool>(); SortedList <string, Complate> patterns = StoreHelperClass.ExtractPatterns(restockItem.info.DesignPreset, enabledStencils); DesignModeSwap designModeSwap = Complate.SetupDesignSwap(gameObject.ObjectId, patterns, false, enabledStencils); if (designModeSwap != null) { designModeSwap.ApplyToObject(); } } } } else { gameObject = ReturnShoppingObject(restockItem, actor, register); gameObject.AddToWorld(); gameObject.SetPosition(restockItem.Position); } #region Pay for Restock //Reduce from base owner or register's owner if (shopBase.Info.Owner != 0uL) { SimDescription sd = CMStoreSet.ReturnSim(shopBase.Info.Owner); if (sd != null) { sd.ModifyFunds(-restockItem.info.Price); } else { CMStoreSet.PrintMessage("Couldn't find owner sim"); } } else if (shopBase.Info.RegisterId != ObjectGuid.InvalidObjectGuid) { //StoreSetRegister register = CMStoreSet.ReturnRegister(shopBase.Info.RegisterId, shopBase.LotCurrent); if (register != null && register.Info.OwnerId != 0uL) { SimDescription sd = CMStoreSet.ReturnSim(register.Info.OwnerId); if (sd != null) { sd.ModifyFunds(-restockItem.info.Price); } } } #endregion } #endregion Buy Mode #region Inventory else { //Restock from Inventory if (shopBase != null && shopBase.Info.RegisterId != ObjectGuid.InvalidObjectGuid) { gameObject = ReturnRestocableObject(restockItem, shopBase.Info.RegisterId); if (gameObject != null) { gameObject.AddToWorld(); gameObject.SetPosition(restockItem.Position); gameObject.SetForward(restockItem.ForwardVector); } else { CMStoreSet.PrintMessage("Restockable object null"); } } } #endregion Inventory //Delete restock object if (restockItem != null) { restockItem.Destroy(); } //Add restocked item back to slot if (slotFound) { IGameObject io = (IGameObject)shopBase; gameObject.ParentToSlot(io, slot); } return((GameObject)gameObject); } else { return(null); } } catch (System.Exception ex) { CMStoreSet.PrintMessage("RecreateSoldObject: " + ex.Message); return(null); } }
public override bool Run() { CMStoreSet.ShowDialogue("", "", this.Target.GetResourceKey().ToString()); return(true); }
public override string GetInteractionName(Sim a, ShoppingMeter target, InteractionObjectPair interaction) { return(CMStoreSet.LocalizeString("TestInteraction", new object[0] { })); }