private void HandleConfirmSetNameResponse(int responseID) { switch (responseID) { case 1: // Confirm Description Change var data = _base.GetPlayerTempData(GetPC()); int buildingTypeID = data.TargetArea.GetLocalInt("BUILDING_TYPE"); Enumeration.BuildingType buildingType = buildingTypeID <= 0 ? Enumeration.BuildingType.Exterior : (Enumeration.BuildingType)buildingTypeID; data.BuildingType = buildingType; NWPlayer sender = (_.GetPCSpeaker()); if (buildingType == Enumeration.BuildingType.Apartment) { Guid pcBaseID = new Guid(data.TargetArea.GetLocalString("PC_BASE_ID")); var pcBase = _data.Get <PCBase>(pcBaseID); pcBase.CustomName = GetPC().GetLocalString("NEW_DESCRIPTION_TO_SET"); _data.SubmitDataChange(pcBase, DatabaseActionType.Update); sender.SendMessage("Name is now set to " + pcBase.CustomName); } else if (buildingType == Enumeration.BuildingType.Interior) { Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = _data.Get <PCBaseStructure>(pcBaseStructureID); structure.CustomName = GetPC().GetLocalString("NEW_DESCRIPTION_TO_SET"); _data.SubmitDataChange(structure, DatabaseActionType.Update); sender.SendMessage("Name is now set to " + structure.CustomName); } EndConversation(); break; } }
private void LoadMainPage() { ClearPageResponses("MainPage"); var data = _base.GetPlayerTempData(GetPC()); int cellX = (int)(_.GetPositionFromLocation(data.TargetLocation).m_X / 10.0f); int cellY = (int)(_.GetPositionFromLocation(data.TargetLocation).m_Y / 10.0f); string sector = _base.GetSectorOfLocation(data.TargetLocation); Area dbArea = _data.Single <Area>(x => x.Resref == data.TargetArea.Resref); bool hasUnclaimed = false; Guid playerID = GetPC().GlobalID; int buildingTypeID = data.TargetArea.GetLocalInt("BUILDING_TYPE"); Enumeration.BuildingType buildingType = buildingTypeID <= 0 ? Enumeration.BuildingType.Exterior : (Enumeration.BuildingType)buildingTypeID; data.BuildingType = buildingType; bool canEditBasePermissions = false; bool canEditBuildingPermissions = false; bool canEditStructures; bool canEditPrimaryResidence = false; bool canRemovePrimaryResidence = false; if (buildingType == Enumeration.BuildingType.Interior) { Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); canEditStructures = _perm.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanPlaceEditStructures); canEditBuildingPermissions = _perm.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanAdjustPermissions); canEditPrimaryResidence = _perm.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanEditPrimaryResidence); canRemovePrimaryResidence = _perm.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanRemovePrimaryResidence); data.StructureID = pcBaseStructureID; } else if (buildingType == Enumeration.BuildingType.Apartment) { Guid pcBaseID = new Guid(data.TargetArea.GetLocalString("PC_BASE_ID")); canEditStructures = _perm.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanPlaceEditStructures); canEditBasePermissions = _perm.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanAdjustPermissions); canEditPrimaryResidence = _perm.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanEditPrimaryResidence); canRemovePrimaryResidence = _perm.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanRemovePrimaryResidence); data.PCBaseID = pcBaseID; } else if (buildingType == Enumeration.BuildingType.Exterior) { var pcBase = _data.SingleOrDefault <PCBase>(x => x.AreaResref == data.TargetArea.Resref && x.Sector == sector); canEditStructures = pcBase != null && _perm.HasBasePermission(GetPC(), pcBase.ID, BasePermission.CanPlaceEditStructures); canEditBasePermissions = pcBase != null && _perm.HasBasePermission(GetPC(), pcBase.ID, BasePermission.CanAdjustPermissions); if (pcBase != null) { data.PCBaseID = pcBase.ID; } } else { throw new Exception("BaseManagementTool -> Cannot locate building type with ID " + buildingTypeID); } string header = _color.Green("Base Management Menu\n\n"); header += _color.Green("Area: ") + data.TargetArea.Name + " (" + cellX + ", " + cellY + ")\n\n"; if (!dbArea.IsBuildable) { header += "Land in this area cannot be claimed. However, you can still manage any leases you own from the list below."; } else if (buildingType == Enumeration.BuildingType.Interior) { Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = _data.Single <PCBaseStructure>(x => x.ID == pcBaseStructureID); var baseStructure = _data.Get <BaseStructure>(structure.BaseStructureID); int itemLimit = baseStructure.Storage + structure.StructureBonus; var childStructures = _data.Where <PCBaseStructure>(x => x.ParentPCBaseStructureID == structure.ID); header += _color.Green("Item Limit: ") + childStructures.Count() + " / " + itemLimit + "\n"; } else if (buildingType == Enumeration.BuildingType.Apartment) { Guid pcBaseID = new Guid(data.TargetArea.GetLocalString("PC_BASE_ID")); var pcBase = _data.Get <PCBase>(pcBaseID); var buildingStyle = _data.Get <BuildingStyle>(pcBase.BuildingStyleID); int itemLimit = buildingStyle.FurnitureLimit; var structures = _data.Where <PCBaseStructure>(x => x.PCBaseID == pcBase.ID); header += _color.Green("Item Limit: ") + structures.Count() + " / " + itemLimit + "\n"; } else if (buildingType == Enumeration.BuildingType.Exterior) { var northeastOwner = dbArea.NortheastOwner == null ? null : _data.Get <Player>(dbArea.NortheastOwner); var northwestOwner = dbArea.NorthwestOwner == null ? null : _data.Get <Player>(dbArea.NorthwestOwner); var southeastOwner = dbArea.SoutheastOwner == null ? null : _data.Get <Player>(dbArea.SoutheastOwner); var southwestOwner = dbArea.SouthwestOwner == null ? null : _data.Get <Player>(dbArea.SouthwestOwner); if (northeastOwner != null) { header += _color.Green("Northeast Owner: ") + "Claimed"; if (dbArea.NortheastOwner == playerID) { header += " (" + northeastOwner.CharacterName + ")"; } header += "\n"; } else { header += _color.Green("Northeast Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } if (northwestOwner != null) { header += _color.Green("Northwest Owner: ") + "Claimed"; if (dbArea.NorthwestOwner == playerID) { header += " (" + northwestOwner.CharacterName + ")"; } header += "\n"; } else { header += _color.Green("Northwest Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } if (southeastOwner != null) { header += _color.Green("Southeast Owner: ") + "Claimed"; if (dbArea.SoutheastOwner == playerID) { header += " (" + southeastOwner.CharacterName + ")"; } header += "\n"; } else { header += _color.Green("Southeast Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } if (southwestOwner != null) { header += _color.Green("Southwest Owner: ") + "Claimed"; if (dbArea.SouthwestOwner == playerID) { header += " (" + southwestOwner.CharacterName + ")"; } header += "\n"; } else { header += _color.Green("Southwest Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } } SetPageHeader("MainPage", header); bool showManage = _data.GetAll <PCBase>().Count(x => x.PlayerID == playerID) > 0; AddResponseToPage("MainPage", "Manage My Leases", showManage); AddResponseToPage("MainPage", "Purchase Territory", hasUnclaimed && dbArea.IsBuildable); AddResponseToPage("MainPage", "Edit Nearby Structures", canEditStructures); AddResponseToPage("MainPage", "Edit Base Permissions", canEditBasePermissions); AddResponseToPage("MainPage", "Edit Building Permissions", canEditBuildingPermissions); AddResponseToPage("MainPage", "Edit Primary Residence", canEditPrimaryResidence || canRemovePrimaryResidence); }