protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); var item = data.GameObject; if (item.Container?.OwnerAsCharacter != ClientCurrentCharacterHelper.Character) { // item of another character return; } var publicState = data.PublicState; if (!publicState.IsActive) { return; } // check if item is in a hotbar selected slot, if not - make it not active var itemOwnerCharacter = item.Container?.OwnerAsCharacter; if (itemOwnerCharacter == null || item != itemOwnerCharacter.SharedGetPlayerSelectedHotbarItem()) { Logger.Info(item + " is not in the hotbar selected slot - make it inactive"); publicState.IsActive = false; return; } this.ItemFuelConfig.SharedTryConsumeFuel(item, data.PrivateState, data.DeltaTime, out _); }
public static ClientUpdateMessage CreateClientUpdateMessage(ClientUpdateData data) { return(new ClientUpdateMessage() { Data = data }); }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); var item = data.GameObject; var currentCharacter = ClientCurrentCharacterHelper.Character; if (item.Container?.OwnerAsCharacter != currentCharacter) { // item of another character return; } var publicState = data.PublicState; if (!this.SharedUpdateActiveState(item, publicState)) { return; } this.ItemFuelConfig.SharedTryConsumeFuel(item, data.PrivateState, data.DeltaTime, out var isFuelRanOut); if (isFuelRanOut) { publicState.IsActive = false; } }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); if (this.currentDisplayedRepairTooltip != null) { var tooltipDisplayedForObject = ((ConstructionOrRepairRequirementsTooltip)this.currentDisplayedRepairTooltip.Control).WorldObject; if (data.GameObject == tooltipDisplayedForObject && !this.IsConstructionOrRepairRequirementsTooltipShouldBeDisplayed(data.SyncPublicState)) { // destroy tooltip this.currentDisplayedRepairTooltip?.Destroy(); this.currentDisplayedRepairTooltip = null; } } if (this.currentDisplayedRepairTooltip == null && this.IsConstructionOrRepairRequirementsTooltipShouldBeDisplayed(data.SyncPublicState)) { // display tooltip var worldObject = data.GameObject; this.currentDisplayedRepairTooltip = ConstructionOrRepairRequirementsTooltip.CreateAndAttach(worldObject); } }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); var item = data.GameObject; if (item.Container == null || item.Container.OwnerAsCharacter != ClientCurrentCharacterHelper.Character || item.Container != item.Container.OwnerAsCharacter.SharedGetPlayerContainerEquipment()) { // item of another character or not equipped return; } var publicState = data.SyncPublicState; // check if item is in a hotbar selected slot, if not - make it not active if (!SharedUpdateActiveState(item, publicState)) { return; } this.ItemFuelConfig.SharedTryConsumeFuel(item, data.SyncPrivateState, data.DeltaTime, out var isFuelRanOut); if (isFuelRanOut) { publicState.IsActive = false; } }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); // play sound only if this is the only object in the tile data.ClientState.SoundEmitter.IsEnabled = data.GameObject.OccupiedTile.StaticObjects.Count == 1; }
protected sealed override void ClientUpdate(ClientUpdateData data) { if (Client.Characters.IsCurrentPlayerCharacterSpectator) { return; } this.ClientUpdate(new StatusEffectData(data.GameObject, data.DeltaTime)); }
private void SendClientUpdate() { ClientUpdateData clientUpdate = new ClientUpdateData() { ThreadStatuses = GetThreadStatuses(), EncodingJobs = _encodingJobs.GetEncodingJobs() }; SendMessage(ServerToClientMessageFactory.CreateClientUpdateMessage(clientUpdate)); }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); // update light opacity accordingly to the time of day data.ClientState.RendererLight.Opacity = Math.Min(1, ClientTimeOfDayVisualComponent.CurrentNightFraction + ClientTimeOfDayVisualComponent.CurrentDuskDawnFraction); }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); var clientState = data.ClientState; var publicState = data.PublicState; if (clientState.LastGrowthStage != publicState.GrowthStage) { this.ClientRefreshVegetationRendering(data.GameObject, clientState, publicState); } }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); var character = data.GameObject; var clientState = data.ClientState; var publicState = data.PublicState; ClientCharacterAnimationHelper.ClientUpdateAnimation( character, clientState, publicState); }
protected override void ClientUpdate(ClientUpdateData data) { var character = data.GameObject; if (!character.IsCurrentClientCharacter) { return; } this.ClientUpdateMoveSpeed(character); this.SharedApplyInput(character, data.PrivateState); this.CallServer(_ => _.ServerRemote_SetPosition(character.Position)); }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); if (this.SharedGetTimeRemainsToEventStart(data.PublicState) > 0) { this.ClientCreateBossAreaBarrier(data.GameObject); } else { this.ClientDestroyBossAreaBarrier(data.GameObject); } }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); // enable renderer when the explosion renderer has been finished var renderer = data.ClientState.Renderer; if (!renderer.IsEnabled && !ClientGroundExplosionAnimationHelper.HasActiveExplosion( data.GameObject.TilePosition)) { renderer.IsEnabled = true; } }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); var worldObject = data.GameObject; if (currentDisplayedRepairTooltip is null) { if (this.ClientIsConstructionOrRepairRequirementsTooltipShouldBeDisplayed(data.PublicState)) { // display build/repair tooltip currentDisplayedRepairTooltip = ConstructionOrRepairRequirementsTooltip.CreateAndAttach(worldObject); } } else { var tooltipDisplayedForObject = ((ConstructionOrRepairRequirementsTooltip)currentDisplayedRepairTooltip.Control).WorldObject; if (ReferenceEquals(worldObject, tooltipDisplayedForObject) && !this.ClientIsConstructionOrRepairRequirementsTooltipShouldBeDisplayed(data.PublicState)) { // destroy tooltip currentDisplayedRepairTooltip?.Destroy(); currentDisplayedRepairTooltip = null; } } if (currentDisplayedRelocateTooltip is null) { if (ClientCanRelocateStructure(worldObject)) { currentDisplayedRelocateTooltip = ConstructionRelocationTooltip.CreateAndAttach(worldObject); } } else { var tooltipDisplayedForObject = ((ConstructionRelocationTooltip)currentDisplayedRelocateTooltip.Control).WorldObject; if (ReferenceEquals(worldObject, tooltipDisplayedForObject) && !ClientCanRelocateStructure(worldObject)) { // destroy tooltip currentDisplayedRelocateTooltip?.Destroy(); currentDisplayedRelocateTooltip = null; } } }
protected override void ClientUpdate(ClientUpdateData data) { var clientState = data.ClientState; var publicState = data.SyncPublicState; if (clientState.LastGrowthStage == publicState.GrowthStage && clientState.LastHasHarvest == publicState.HasHarvest) { // no need to refresh return; } SystemVegetation.ClientRefreshVegetationRendering(this, data.GameObject, clientState, publicState); clientState.LastHasHarvest = publicState.HasHarvest; }
protected override void ClientUpdate(ClientUpdateData data) { var character = data.GameObject; if (!character.IsCurrentClientCharacter) { return; } var privateState = data.PrivateState; var publicState = data.PublicState; this.ServerRebuildFinalCacheIfNeeded(privateState, publicState); this.SharedApplyInput(character, privateState, publicState); }
protected override void ClientUpdate(ClientUpdateData data) { var character = data.GameObject; var clientState = data.ClientState; var publicState = data.PublicState; if (!character.IsCurrentClientCharacter) { ClientCharacterEquipmentHelper.ClientRefreshEquipment(character, clientState, publicState); base.ClientUpdate(data); return; } // next code is only for the current client character var privateState = data.PrivateState; if (!publicState.IsDead) { SharedRefreshSelectedHotbarItem(character, privateState); } ClientCharacterEquipmentHelper.ClientRefreshEquipment(character, clientState, publicState); this.ServerRebuildFinalCacheIfNeeded(privateState, publicState); this.SharedApplyInput(character, privateState, publicState); ClientCharacterAnimationHelper.ClientUpdateAnimation( character, clientState, publicState); if (publicState.IsDead) { // dead - stops processing character WindowRespawn.EnsureOpened(); return; } // character is alive - can process its actions WindowRespawn.EnsureClosed(); // update weapon state (fires the weapon if needed) WeaponSystem.SharedUpdateCurrentWeapon(character, privateState.WeaponState, data.DeltaTime); // update current action state (if any) privateState.CurrentActionState?.SharedUpdate(data.DeltaTime); // consumes/restores stamina CharacterStaminaSystem.SharedUpdate(character, publicState, privateState, data.DeltaTime); }
protected override void ClientUpdate(ClientUpdateData data) { base.ClientUpdate(data); var character = data.GameObject; var clientState = data.ClientState; var publicState = data.SyncPublicState; ClientCharacterAnimationHelper.ClientUpdateAnimation( character, clientState, publicState); if (publicState.IsDead && clientState.HealthbarControl != null) { // character was alive but now is dead // TODO: redone this to work properly with death handling on the Client-side clientState.HealthbarControl.Destroy(); clientState.HealthbarControl = null; character.PhysicsBody.Reset(); } }
protected sealed override void ClientUpdate(ClientUpdateData data) { }