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); }
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); }
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); } }
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; } }