private void HandleConfirmSetNameResponse(int responseID) { switch (responseID) { case 1: // Confirm Description Change var data = BaseService.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) { // Update the base name. Guid pcBaseID = new Guid(data.TargetArea.GetLocalString("PC_BASE_ID")); var pcBase = DataService.PCBase.GetByID(pcBaseID); pcBase.CustomName = GetPC().GetLocalString("NEW_DESCRIPTION_TO_SET"); DataService.SubmitDataChange(pcBase, DatabaseActionType.Update); sender.SendMessage("Name is now set to " + pcBase.CustomName); } else if (buildingType == Enumeration.BuildingType.Interior) { // Update the structure name. Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = DataService.PCBaseStructure.GetByID(pcBaseStructureID); structure.CustomName = GetPC().GetLocalString("NEW_DESCRIPTION_TO_SET"); DataService.SubmitDataChange(structure, DatabaseActionType.Update); sender.SendMessage("Name is now set to " + structure.CustomName); } else if (buildingType == Enumeration.BuildingType.Starship) { // Note - starships need to record the name in both the base and the structure entries. Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = DataService.PCBaseStructure.GetByID(pcBaseStructureID); structure.CustomName = GetPC().GetLocalString("NEW_DESCRIPTION_TO_SET"); DataService.SubmitDataChange(structure, DatabaseActionType.Update); var pcBase = DataService.PCBase.GetByID(structure.PCBaseID); pcBase.CustomName = GetPC().GetLocalString("NEW_DESCRIPTION_TO_SET"); DataService.SubmitDataChange(pcBase, DatabaseActionType.Update); sender.SendMessage("Name is now set to " + structure.CustomName); } EndConversation(); break; } }
private void LoadMainPage() { ClearPageResponses("MainPage"); var data = BaseService.GetPlayerTempData(GetPC()); int cellX = (int)(_.GetPositionFromLocation(data.TargetLocation).m_X / 10.0f); int cellY = (int)(_.GetPositionFromLocation(data.TargetLocation).m_Y / 10.0f); string sector = BaseService.GetSectorOfLocation(data.TargetLocation); Area dbArea = DataService.Area.GetByResref(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 canEditBuildingPublicPermissions = false; bool canEditStructures = false; bool canEditPrimaryResidence = false; bool canRemovePrimaryResidence = false; bool canRenameStructure = false; bool canChangeStructureMode = false; bool canEditPublicBasePermissions = false; string header = ColorTokenService.Green("Base Management Menu\n\n"); header += ColorTokenService.Green("Area: ") + data.TargetArea.Name + " (" + cellX + ", " + cellY + ")\n\n"; // Are we in a starship? if (buildingType == Enumeration.BuildingType.Starship) { Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = DataService.PCBaseStructure.GetByID(pcBaseStructureID); var buildingStyle = DataService.BuildingStyle.GetByID(Convert.ToInt32(structure.InteriorStyleID)); int itemLimit = buildingStyle.FurnitureLimit + structure.StructureBonus; var childStructures = DataService.PCBaseStructure.GetAllByParentPCBaseStructureID(structure.ID); header += ColorTokenService.Green("Structure Limit: ") + childStructures.Count() + " / " + itemLimit + "\n"; // Get all child structures contained by this building which improve atmosphere. var structures = DataService.PCBaseStructure.GetAllByParentPCBaseStructureID(pcBaseStructureID).Where(x => { var childStructure = DataService.BaseStructure.GetByID(x.BaseStructureID); return(childStructure.HasAtmosphere); }); // Add up the total atmosphere rating, being careful not to go over the cap. int bonus = structures.Sum(x => 1 + x.StructureBonus) * 2; if (bonus > 150) { bonus = 150; } header += ColorTokenService.Green("Atmosphere Bonus: ") + bonus + "% / " + "150%"; header += "\n"; canEditPrimaryResidence = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanEditPrimaryResidence); canRemovePrimaryResidence = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanRemovePrimaryResidence); canRenameStructure = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanRenameStructures); canEditStructures = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanPlaceEditStructures); canEditBuildingPermissions = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanAdjustPermissions); canEditBuildingPublicPermissions = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanAdjustPublicPermissions); canChangeStructureMode = false; // Starships cannot be workshops. data.StructureID = pcBaseStructureID; } // Area is not buildable. else if (!dbArea.IsBuildable) { header += "Land in this area cannot be claimed. However, you can still manage any leases you own from the list below."; } // Building type is an interior of a building else if (buildingType == Enumeration.BuildingType.Interior) { Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = DataService.PCBaseStructure.GetByID(pcBaseStructureID); var baseStructure = DataService.BaseStructure.GetByID(structure.BaseStructureID); int itemLimit = baseStructure.Storage + structure.StructureBonus; var childStructures = DataService.PCBaseStructure.GetAllByParentPCBaseStructureID(structure.ID); header += ColorTokenService.Green("Structure Limit: ") + childStructures.Count() + " / " + itemLimit + "\n"; // Get all child structures contained by this building which improve atmosphere. var structures = DataService.PCBaseStructure.GetAllByParentPCBaseStructureID(pcBaseStructureID).Where(x => { var childStructure = DataService.BaseStructure.GetByID(x.BaseStructureID); return(childStructure.HasAtmosphere); }); // Add up the total atmosphere rating, being careful not to go over the cap. int bonus = structures.Sum(x => 1 + x.StructureBonus) * 2; if (bonus > 150) { bonus = 150; } header += ColorTokenService.Green("Atmosphere Bonus: ") + bonus + "% / " + "150%"; header += "\n"; // The building must be set to the "Residence" mode in order for a primary resident to be selected. if (structure.StructureModeID == (int)StructureModeType.Residence) { canEditPrimaryResidence = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanEditPrimaryResidence); canRemovePrimaryResidence = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanRemovePrimaryResidence); } canRenameStructure = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanRenameStructures); canEditStructures = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanPlaceEditStructures); canEditBuildingPermissions = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanAdjustPermissions); canEditBuildingPublicPermissions = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanAdjustPublicPermissions); canChangeStructureMode = BasePermissionService.HasStructurePermission(GetPC(), pcBaseStructureID, StructurePermission.CanChangeStructureMode); data.StructureID = pcBaseStructureID; } // Building type is an apartment // Apartments may only ever be in the "Residence" mode. else if (buildingType == Enumeration.BuildingType.Apartment) { Guid pcBaseID = new Guid(data.TargetArea.GetLocalString("PC_BASE_ID")); var pcBase = DataService.PCBase.GetByID(pcBaseID); var buildingStyle = DataService.BuildingStyle.GetByID(Convert.ToInt32(pcBase.BuildingStyleID)); int itemLimit = buildingStyle.FurnitureLimit; var structures = DataService.PCBaseStructure.GetAllByPCBaseID(pcBase.ID); header += ColorTokenService.Green("Structure Limit: ") + structures.Count() + " / " + itemLimit + "\n"; // Add up the total atmosphere rating, being careful not to go over the cap. int bonus = structures.Sum(x => 1 + x.StructureBonus) * 2; if (bonus > 150) { bonus = 150; } header += ColorTokenService.Green("Atmosphere Bonus: ") + bonus + "% / " + "150%"; header += "\n"; canEditStructures = BasePermissionService.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanPlaceEditStructures); canEditBasePermissions = BasePermissionService.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanAdjustPermissions); canEditPrimaryResidence = BasePermissionService.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanEditPrimaryResidence); canRemovePrimaryResidence = BasePermissionService.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanRemovePrimaryResidence); canRenameStructure = BasePermissionService.HasBasePermission(GetPC(), pcBaseID, BasePermission.CanRenameStructures); data.PCBaseID = pcBaseID; } // Building type is an exterior building else if (buildingType == Enumeration.BuildingType.Exterior) { var pcBase = DataService.PCBase.GetByAreaResrefAndSectorOrDefault(data.TargetArea.Resref, sector); var northeastOwner = dbArea.NortheastOwner == null ? null : DataService.Player.GetByID((Guid)dbArea.NortheastOwner); var northwestOwner = dbArea.NorthwestOwner == null ? null : DataService.Player.GetByID((Guid)dbArea.NorthwestOwner); var southeastOwner = dbArea.SoutheastOwner == null ? null : DataService.Player.GetByID((Guid)dbArea.SoutheastOwner); var southwestOwner = dbArea.SouthwestOwner == null ? null : DataService.Player.GetByID((Guid)dbArea.SouthwestOwner); if (northeastOwner != null) { header += ColorTokenService.Green("Northeast Owner: ") + "Claimed"; if (dbArea.NortheastOwner == playerID) { header += " (" + northeastOwner.CharacterName + ")"; } header += "\n"; } else { header += ColorTokenService.Green("Northeast Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } if (northwestOwner != null) { header += ColorTokenService.Green("Northwest Owner: ") + "Claimed"; if (dbArea.NorthwestOwner == playerID) { header += " (" + northwestOwner.CharacterName + ")"; } header += "\n"; } else { header += ColorTokenService.Green("Northwest Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } if (southeastOwner != null) { header += ColorTokenService.Green("Southeast Owner: ") + "Claimed"; if (dbArea.SoutheastOwner == playerID) { header += " (" + southeastOwner.CharacterName + ")"; } header += "\n"; } else { header += ColorTokenService.Green("Southeast Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } if (southwestOwner != null) { header += ColorTokenService.Green("Southwest Owner: ") + "Claimed"; if (dbArea.SouthwestOwner == playerID) { header += " (" + southwestOwner.CharacterName + ")"; } header += "\n"; } else { header += ColorTokenService.Green("Southwest Owner: ") + "Unclaimed\n"; hasUnclaimed = true; } canEditStructures = pcBase != null && BasePermissionService.HasBasePermission(GetPC(), pcBase.ID, BasePermission.CanPlaceEditStructures); canEditBasePermissions = pcBase != null && BasePermissionService.HasBasePermission(GetPC(), pcBase.ID, BasePermission.CanAdjustPermissions); canEditPublicBasePermissions = pcBase != null && BasePermissionService.HasBasePermission(GetPC(), pcBase.ID, BasePermission.CanAdjustPublicPermissions); if (pcBase != null) { data.PCBaseID = pcBase.ID; } } else { throw new Exception("BaseManagementTool -> Cannot locate building type with ID " + buildingTypeID); } SetPageHeader("MainPage", header); bool showManage = DataService.PCBasePermission.GetAllByPlayerID(GetPC().GlobalID).Count(x => x.CanExtendLease) > 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 || canEditPublicBasePermissions); AddResponseToPage("MainPage", "Edit Building Permissions", canEditBuildingPermissions || canEditBuildingPublicPermissions); AddResponseToPage("MainPage", "Edit Primary Residence", canEditPrimaryResidence || canRemovePrimaryResidence); AddResponseToPage("MainPage", "Rename Building", canRenameStructure); AddResponseToPage("MainPage", "Edit Building Mode", canChangeStructureMode); }
public BuildingStyle GetByBaseStructureIDAndBuildingType(int baseStructureID, Enumeration.BuildingType buildingType) { return((BuildingStyle)All.Single(x => x.BaseStructureID == baseStructureID && x.BuildingTypeID == (int)buildingType).Clone()); }
private void ColorPageResponses(int responseID) { DialogPage mainPage = GetPageByName("MainPage"); int lightType = mainPage.CustomData.GetValueOrDefault("LIGHT_TYPE"); var response = GetResponseByID("ColorPage", responseID); //Console.WriteLine("Light Type: " + lightType); //Console.WriteLine("ResponseID: " + responseID); //Console.WriteLine("New Color Index: " + Int32.Parse(response.CustomData.ToString())); // Setup placement grid NWArea area = _.GetArea(GetPC()); Vector3 vPos; vPos.X = 0.0f; vPos.Y = 0.0f; vPos.Z = 0.0f; for (int i = 0; i <= area.Height; i++) { vPos.X = (float)i; for (int j = 0; j <= area.Width; j++) { vPos.Y = (float)j; Location location = _.Location(area, vPos, 0.0f); //Console.WriteLine("Setting Tile Color: X = " + vPos.X + " Y = " + vPos.Y); switch (lightType) { case 1: // Change Main Light 1 _.SetTileMainLightColor(location, Int32.Parse(response.CustomData.ToString()), _.GetTileMainLight2Color(location)); break; case 2: // Change Main Light 2 _.SetTileMainLightColor(location, _.GetTileMainLight1Color(location), Int32.Parse(response.CustomData.ToString())); break; case 3: // Change Source Light 1 _.SetTileSourceLightColor(location, Int32.Parse(response.CustomData.ToString()), _.GetTileSourceLight2Color(location)); break; case 4: // Change Source Light 2 _.SetTileSourceLightColor(location, _.GetTileSourceLight1Color(location), Int32.Parse(response.CustomData.ToString())); break; } } } _.RecomputeStaticLighting(area); var data = BaseService.GetPlayerTempData(GetPC()); int buildingTypeID = data.TargetArea.GetLocalInt("BUILDING_TYPE"); Enumeration.BuildingType buildingType = buildingTypeID <= 0 ? Enumeration.BuildingType.Exterior : (Enumeration.BuildingType)buildingTypeID; data.BuildingType = buildingType; if (buildingType == Enumeration.BuildingType.Apartment) { Guid pcBaseID = new Guid(data.TargetArea.GetLocalString("PC_BASE_ID")); var pcBase = DataService.PCBase.GetByID(pcBaseID); switch (lightType) { case 1: // Change Main Light 1 pcBase.TileMainLight1Color = Int32.Parse(response.CustomData.ToString()); break; case 2: // Change Main Light 2 pcBase.TileMainLight2Color = Int32.Parse(response.CustomData.ToString()); break; case 3: // Change Source Light 1 pcBase.TileSourceLight1Color = Int32.Parse(response.CustomData.ToString()); break; case 4: // Change Source Light 2 pcBase.TileSourceLight2Color = Int32.Parse(response.CustomData.ToString()); break; } DataService.SubmitDataChange(pcBase, DatabaseActionType.Update); } else if (buildingType == Enumeration.BuildingType.Interior) { Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = DataService.PCBaseStructure.GetByID(pcBaseStructureID); switch (lightType) { case 1: // Change Main Light 1 structure.TileMainLight1Color = Int32.Parse(response.CustomData.ToString()); break; case 2: // Change Main Light 2 structure.TileMainLight2Color = Int32.Parse(response.CustomData.ToString()); break; case 3: // Change Source Light 1 structure.TileSourceLight1Color = Int32.Parse(response.CustomData.ToString()); break; case 4: // Change Source Light 2 structure.TileSourceLight2Color = Int32.Parse(response.CustomData.ToString()); break; } DataService.SubmitDataChange(structure, DatabaseActionType.Update); } else if (buildingType == Enumeration.BuildingType.Starship) { // Note - starships need to record in both the base and the structure entries. Guid pcBaseStructureID = new Guid(data.TargetArea.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = DataService.PCBaseStructure.GetByID(pcBaseStructureID); var pcBase = DataService.PCBase.GetByID(structure.PCBaseID); switch (lightType) { case 1: // Change Main Light 1 structure.TileMainLight1Color = Int32.Parse(response.CustomData.ToString()); pcBase.TileMainLight1Color = Int32.Parse(response.CustomData.ToString()); break; case 2: // Change Main Light 2 structure.TileMainLight2Color = Int32.Parse(response.CustomData.ToString()); pcBase.TileMainLight2Color = Int32.Parse(response.CustomData.ToString()); break; case 3: // Change Source Light 1 structure.TileSourceLight1Color = Int32.Parse(response.CustomData.ToString()); pcBase.TileSourceLight1Color = Int32.Parse(response.CustomData.ToString()); break; case 4: // Change Source Light 2 structure.TileSourceLight2Color = Int32.Parse(response.CustomData.ToString()); pcBase.TileSourceLight2Color = Int32.Parse(response.CustomData.ToString()); break; } DataService.SubmitDataChange(structure, DatabaseActionType.Update); DataService.SubmitDataChange(pcBase, DatabaseActionType.Update); } BuildColorPage(lightType); }