예제 #1
0
 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;
     }
 }
예제 #2
0
        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);
        }