Exemple #1
0
        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 _);
        }
Exemple #2
0
 public static ClientUpdateMessage CreateClientUpdateMessage(ClientUpdateData data)
 {
     return(new ClientUpdateMessage()
     {
         Data = data
     });
 }
Exemple #3
0
        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;
            }
        }
Exemple #4
0
        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;
            }
        }
Exemple #6
0
        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;
        }
Exemple #7
0
        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));
        }
Exemple #9
0
        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);
        }
Exemple #10
0
        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);
            }
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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));
        }
Exemple #13
0
        protected override void ClientUpdate(ClientUpdateData data)
        {
            base.ClientUpdate(data);

            if (this.SharedGetTimeRemainsToEventStart(data.PublicState) > 0)
            {
                this.ClientCreateBossAreaBarrier(data.GameObject);
            }
            else
            {
                this.ClientDestroyBossAreaBarrier(data.GameObject);
            }
        }
Exemple #14
0
        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;
                }
            }
        }
Exemple #16
0
        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();
            }
        }
Exemple #20
0
 protected sealed override void ClientUpdate(ClientUpdateData data)
 {
 }