private new void OnSelection(UIBinInfo info) { if (((mFrom != null) && (mFrom != info)) && (info.HouseholdId != ulong.MaxValue)) { mModel.CenterCamera(info.LotId); GameEntryMovingModelEx.MergeHouseholds(EditTownController.Instance, mFrom, info); } else { Simulator.AddObject(new OneShotFunctionWithParams(new FunctionWithParam(WarnCantMergeHouseholds), info)); } }
public static bool PayForLot(EditTownModel ths, UIBinInfo info, ulong lotId) { Lot lot = LotManager.GetLot(lotId); if (lot != null) { ExportBinContents contents = ths.FindExportBinContents(info.ContentId); if (contents != null) { bool flag = contents.IsLoaded(); if (!flag) { ExportBinContentsEx.Import(contents, true); } Household household = contents.Household; if (household != null) { return BinCommonEx.PayForLot(household, lot, true, Mover.GetLotCost); } if (!flag) { ExportBinContentsEx.Flush(contents); } } else if (info.LotId != ulong.MaxValue) { LotContents contents2 = Bin.Singleton.FindLot(info.LotId); if ((contents2 != null) && (contents2.Household != null)) { Household household2 = contents2.Household.Household; if (household2 != null) { return BinCommonEx.PayForLot(household2, lot, true, Mover.GetLotCost); } } } else if (info.HouseholdId != ulong.MaxValue) { Household household3 = Household.Find(info.HouseholdId); if (household3 != null) { return BinCommonEx.PayForLot(household3, lot, true, Mover.GetLotCost); } } } return false; }
public static PlaceResult PlaceFromGameBin(EditTownModel ths, UIBinInfo info, ulong lotId, PlaceAction action) { PlaceResult contentFailure = PlaceResult.ContentFailure; Lot lot = LotManager.GetLot(lotId); if (lot == null) { return PlaceResult.InvalidLot; } else if (lot.Household != null) { return PlaceResult.HouseholdPresent; } ths.GetInWorldHouseholdBinInfoList(); contentFailure = PlaceResult.ContentFailure; if (info.HouseholdId != ulong.MaxValue) { BinCommon.KickSimsOffLot(lot, true); if (info.LotId != ulong.MaxValue) { contentFailure = BinCommonEx.PlaceHouseholdAndContentsFromGameBin(info.ContentId, lot, action, Mover.GetLotCost); } else { contentFailure = BinCommonEx.PlaceHouseholdFromGameBin(info.ContentId, lot, action, Mover.GetLotCost); } if (contentFailure != PlaceResult.Success) { return contentFailure; } ths.mGameBin.Remove(info); if (ths.GameBinChanged != null) { ths.GameBinChanged(ths, null); } info = BinCommon.CreateInWorldBinInfo(lot.Household, lot); if (info != null) { ths.mInWorldHouseholdBin.Add(info); } } return contentFailure; }
private void PlaceHouseholdEx(UIBinInfo householdInfo, ulong lotId) { try { if (householdInfo != null) { if ((!Mover.Settings.mFreeRealEstate) && (!EditTownModelEx.PayForLot(mModel as EditTownModel, householdInfo, lotId))) { WarnInsufficientFunds(householdInfo); return; } if (mFrom == InfoSource.Clipboard) { EditTownModelEx.PlaceFromGameBin(mModel as EditTownModel, householdInfo, lotId, PlaceAction.MoveIn); } else { EditTownModelEx.PlaceFromExportBin(mModel as EditTownModel, householdInfo, lotId, PlaceAction.MoveIn); } mModel.SetCurrentSelection(null, InfoSource.Unknown); } EditTownTool.CurrentTool = EditTownDefaultTool.Instance; } catch (Exception e) { Common.Exception("PlaceHouseholdEx", e); } }
private new void OnSelection(UIBinInfo lotInfo) { if (lotInfo.HouseholdId == ulong.MaxValue) { if ((mInfo != null) && (mFrom != InfoSource.Unknown)) { LotValidity lotValidity = mModel.GetLotValidity(lotInfo.LotId); // EA Standard does not distinguish between vacation and private lots, messing up [StoryProgression] rental systems foreach (PropertyData data in RealEstateManager.AllPropertiesFromAllHouseholds()) { if (data.PropertyType == RealEstatePropertyType.VacationHome) continue; if (data.LotId == lotInfo.LotId) { Simulator.AddObject(new OneShotFunctionWithParams(WarnLotGeneric, lotInfo)); return; } } mModel.CenterCamera(lotInfo.LotId); if (mInfo.LotId != ulong.MaxValue) { bool allow = false; if (lotValidity == LotValidity.Valid) { allow = true; } else if ((Mover.Settings.mAllowGreaterThanEight) && (!mModel.LotContentsWillFit(mInfo, lotInfo.LotId))) { allow = true; } if (allow) { mPlacing = true; EditTownController.Instance.ShowUI(false); UIManager.DarkenBackground(true); Sims3.UI.Responder.Instance.DisableQuit(); Simulator.AddObject(new OneShotFunctionWithParams(PlaceLotTask, lotInfo)); } else if (!mModel.LotContentsWillFit(mInfo, lotInfo.LotId)) { Simulator.AddObject(new OneShotFunctionWithParams(WarnTooBig, lotInfo)); } else { Simulator.AddObject(new OneShotFunctionWithParams(WarnLotGeneric, lotInfo)); } } else if (mInfo.HouseholdId != ulong.MaxValue) { if (lotValidity == LotValidity.Unavailable) { if ((!Mover.Settings.mFreeRealEstate) && (mInfo.HouseholdFunds < lotInfo.LotWorth)) { Simulator.AddObject(new OneShotFunctionWithParams(WarnInsufficientFunds, lotInfo)); return; } } if (lotValidity != LotValidity.Invalid) { mPlacing = true; Simulator.AddObject(new OneShotFunctionWithParams(ConfirmPurchaseTaskEx, lotInfo)); return; } } } } else if (mInfo.LotId == ulong.MaxValue) { if (mFrom == InfoSource.Clipboard) { mModel.CenterCamera(lotInfo.LotId); GameEntryMovingModelEx.MergeHouseholds(EditTownController.Instance, mInfo, lotInfo); } else { mModel.CenterCamera(lotInfo.LotId); Simulator.AddObject(new OneShotFunctionWithParams(PlaceHouseholdTaskEx, lotInfo)); } } }
public static void SplitHousehold(EditTownController ths, UIBinInfo from) { try { if (ths == null) return; Household household = Household.Find(from.HouseholdId); if (household != null) { IMovingModel model = new GameEntryMovingModelEx(household); if (model != null) { EditTownSplitDialog.Show(model); Simulator.AddObject(new OneShotFunctionWithParams(ths.SplitHouseholdsTask, from)); } } } catch (Exception e) { Common.Exception("SplitHousehold", e); } }
public static void MergeHouseholds(EditTownController ths, UIBinInfo from, UIBinInfo to) { try { Household household = Household.Find(from.HouseholdId); if (household != null) { IMovingModel model = new GameEntryMovingModelEx(household); if (model != null) { model.SetTargetLot(to.LotId); EditTownMergeDialog.Show(model); Common.FunctionTask.Perform(ths.MergeHouseholdsTask); } } } catch (Exception e) { Common.Exception("MergeHouseholds", e); } }
public static PlaceResult PlaceFromExportBin(EditTownModel ths, UIBinInfo info, ulong lotId, PlaceAction action, bool showConfirmDialog) { try { PlaceResult contentFailure = PlaceResult.ContentFailure; Lot lot = LotManager.GetLot(lotId); if (lot == null) { return PlaceResult.InvalidLot; } ExportBinContents exportBinItem = ths.FindExportBinContents(info.ContentId); if (exportBinItem != null) { ths.GetInWorldHouseholdBinInfoList(); ths.GetInWorldLotBinInfoList(); Sim newActiveSim = null; if (lot.Household != null) { return BinCommonEx.MergeHouseholdFromExportBin(exportBinItem, lot, showConfirmDialog, Mover.Settings.mAllowGreaterThanEight); } BinCommon.KickSimsOffLot(lot, true); ProgressDialog.Show(Localization.LocalizeString("Ui/Caption/Global:Processing", new object[0x0])); try { try { contentFailure = BinCommonEx.PlaceFromExportBin(exportBinItem, lot, action, true, Mover.GetLotCost, ref newActiveSim); ExportBinContentsEx.Flush(exportBinItem); UIBinInfo item = BinCommon.CreateInWorldBinInfo(lot.Household, lot); if (item != null) { if (info.HouseholdId != ulong.MaxValue) { ths.mInWorldHouseholdBin.Add(item); } else { ths.mInWorldLotBin.Add(item); } } } finally { ProgressDialog.Close(); } } catch (ExecutionEngineException) { } } return contentFailure; } catch (Exception e) { Common.Exception("PlaceFromExportBin", e); return PlaceResult.ContentFailure; } }
public static PlaceResult PlaceFromExportBin(EditTownModel ths, UIBinInfo info, ulong lotId, PlaceAction action) { return PlaceFromExportBin(ths, info, lotId, action, true); }
public static void ChangeLotType(UIBinInfo info) { Simulator.AddObject(new OneShotFunctionWithParams(new FunctionWithParam(ChangeLotTypeTask), info)); }