示例#1
0
        private bool ValidateRequirements()
        {
            // ensure player cannot install the same implant prototype as already installed in another slot
            var itemToInstallProto = this.GetProtoItemToInstall();

            if (itemToInstallProto is not null)
            {
                foreach (var equippedItem in this.ContainerEquipment.Items)
                {
                    if (equippedItem.ProtoItem == itemToInstallProto)
                    {
                        NotificationSystem.ClientShowNotification(NotificationAlreadyInstalled_Title,
                                                                  NotificationAlreadyInstalled_Message,
                                                                  color: NotificationColor.Bad,
                                                                  icon: itemToInstallProto.Icon);
                        return(false);
                    }
                }
            }

            // check biomaterial requirement
            if (!CreativeModeSystem.ClientIsInCreativeMode() &&
                !ClientCurrentCharacterHelper.Character.ContainsItemsOfType(
                    ProtoItemBiomaterialVial,
                    this.Price))
            {
                NotificationSystem.ClientShowNotification(NotificationNotEnoughBiomaterial,
                                                          color: NotificationColor.Bad,
                                                          icon: ProtoItemBiomaterialVial.Icon);
                return(false);
            }

            return(true);
        }
示例#2
0
        public ViewModelWindowCrateContainer(
            IStaticWorldObject worldObjectCrate,
            ObjectCratePrivateState privateState,
            Action callbackCloseWindow)
        {
            this.WorldObjectCrate = worldObjectCrate;

            this.ViewModelItemsContainerExchange = new ViewModelItemsContainerExchange(
                privateState.ItemsContainer,
                callbackCloseWindow)
            {
                IsContainerTitleVisible = false
            };

            var isOwner = WorldObjectOwnersSystem.SharedIsOwner(
                ClientCurrentCharacterHelper.Character,
                worldObjectCrate);

            this.ViewModelOwnersEditor = new ViewModelWorldObjectOwnersEditor(
                privateState.Owners,
                canEditOwners: isOwner ||
                CreativeModeSystem.ClientIsInCreativeMode(),
                callbackServerSetOwnersList:
                ownersList => WorldObjectOwnersSystem.ClientSetOwners(this.WorldObjectCrate,
                                                                      ownersList),
                title: CoreStrings.ObjectOwnersList_Title2);

            this.ViewModelAccessModeEditor = new ViewModelWorldObjectAccessModeEditor(
                worldObjectCrate,
                canSetAccessMode: isOwner);
        }
示例#3
0
        public ViewModelWindowCrateContainer(
            IStaticWorldObject worldObjectCrate,
            ObjectCratePrivateState privateState,
            Action callbackCloseWindow)
        {
            this.WorldObjectCrate = worldObjectCrate;

            this.ViewModelItemsContainerExchange = new ViewModelItemsContainerExchange(
                privateState.ItemsContainer,
                callbackCloseWindow)
            {
                IsContainerTitleVisible = false
            };

            this.IsInsideFactionClaim = LandClaimSystem.SharedIsWorldObjectOwnedByFaction(worldObjectCrate);

            if (!this.HasOwnersList)
            {
                return;
            }

            if (this.IsInsideFactionClaim)
            {
                if (FactionSystem.ClientHasAccessRight(FactionMemberAccessRights.LandClaimManagement))
                {
                    this.ViewModelFactionAccessEditor = new ViewModelWorldObjectFactionAccessEditorControl(
                        worldObjectCrate);
                }
            }
            else
            {
                var isOwner = WorldObjectOwnersSystem.SharedIsOwner(
                    ClientCurrentCharacterHelper.Character,
                    worldObjectCrate);

                this.ViewModelOwnersEditor = new ViewModelWorldObjectOwnersEditor(
                    privateState.Owners,
                    canEditOwners: isOwner ||
                    CreativeModeSystem.ClientIsInCreativeMode(),
                    callbackServerSetOwnersList:
                    ownersList => WorldObjectOwnersSystem.ClientSetOwners(this.WorldObjectCrate,
                                                                          ownersList),
                    title: CoreStrings.ObjectOwnersList_Title2);

                this.ViewModelDirectAccessEditor = new ViewModelWorldObjectDirectAccessEditor(
                    worldObjectCrate,
                    canSetAccessMode: isOwner);
            }
        }
示例#4
0
        private void MapClickHandler(Vector2D worldPosition)
        {
            if (this.ContextMenu != null)
            {
                // context menu is still exist, don't process this click
                return;
            }

            var character = ClientCurrentCharacterHelper.Character;

            if (character.ProtoCharacter is PlayerCharacterSpectator ||
                (CreativeModeSystem.ClientIsInCreativeMode() &&
                 ServerOperatorSystem.ClientIsOperator()))
            {
                this.CallTeleport(worldPosition);
            }
        }
        public ViewModelWindowObjectVehicle(
            IDynamicWorldObject vehicle,
            FrameworkElement vehicleExtraControl,
            IViewModelWithActiveState vehicleExtraControlViewModel)
        {
            this.VehicleExtraControl          = vehicleExtraControl;
            this.VehicleExtraControlViewModel = vehicleExtraControlViewModel;
            if (vehicleExtraControl != null)
            {
                vehicleExtraControl.DataContext = vehicleExtraControlViewModel;
            }

            var currentCharacter = Api.Client.Characters.CurrentPlayerCharacter;

            this.ContainerPlayerInventory = (IClientItemsContainer)currentCharacter.SharedGetPlayerContainerInventory();

            this.ProtoVehicle        = (IProtoVehicle)vehicle.ProtoGameObject;
            this.vehiclePublicState  = vehicle.GetPublicState <VehiclePublicState>();
            this.vehiclePrivateState = vehicle.GetPrivateState <VehiclePrivateState>();

            var structurePointsMax = this.ProtoVehicle.SharedGetStructurePointsMax(vehicle);

            this.ViewModelStructurePoints = new ViewModelStructurePointsBarControl()
            {
                ObjectStructurePointsData = new ObjectStructurePointsData(vehicle, structurePointsMax)
            };

            this.ViewModelVehicleEnergy = new ViewModelVehicleEnergy(vehicle);

            this.cargoItemsContainer             = this.vehiclePrivateState.CargoItemsContainer as IClientItemsContainer;
            this.ViewModelItemsContainerExchange = new ViewModelItemsContainerExchange(this.cargoItemsContainer,
                                                                                       callbackTakeAllItemsSuccess:
                                                                                       null)
            {
                IsContainerTitleVisible = false
            };

            this.ViewModelItemsContainerExchange.IsActive = false;

            var isOwner = WorldObjectOwnersSystem.SharedIsOwner(
                ClientCurrentCharacterHelper.Character,
                vehicle);

            this.ViewModelOwnersEditor =
                new ViewModelWorldObjectOwnersEditor(this.vehiclePrivateState.Owners,
                                                     canEditOwners: isOwner ||
                                                     CreativeModeSystem.ClientIsInCreativeMode(),
                                                     callbackServerSetOwnersList:
                                                     ownersList => WorldObjectOwnersSystem.ClientSetOwners(
                                                         vehicle,
                                                         ownersList),
                                                     title: CoreStrings.ObjectOwnersList_Title2);

            this.RefreshCanRepair();

            this.IsVehicleTabActive = true;
            this.ViewModelItemsContainerExchange.IsActive = true;

            if (this.cargoItemsContainer != null)
            {
                this.cargoItemsContainer.ItemAdded        += this.CargoItemsContainerItemAddedHandler;
                this.cargoItemsContainer.ItemCountChanged += this.CargoItemsContainerItemCountChangedHandler;
            }
        }