Example #1
0
        private void OnReceiveResource(TransportConnection connection, ref DataBufferReader reader)
        {
            var count = reader.ReadValue <int>();

            for (var i = 0; i != count; i++)
            {
                var id   = reader.ReadValue <int>();
                var type = (EAudioRegisterResourceType)reader.ReadValue <int>();
                switch (type)
                {
                case EAudioRegisterResourceType.Bytes:
                {
                    var data = new byte[reader.ReadValue <int>()];
                    reader.ReadDataSafe(data.AsSpan());

                    resourceManager.Register(connection, id, data);

                    break;
                }

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
            public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref T component, ref DataBufferReader reader)
            {
                reader.ReadValue <GhComponentType>();                // skip StatusEffectSettingsBase.Type

                component.Resistance     = reader.ReadValue <float>();
                component.RegenPerSecond = reader.ReadValue <float>();
                component.Power          = reader.ReadValue <float>();
                component.Immunity       = reader.ReadValue <float>();
            }
Example #3
0
        private void OnReceivePlayer(TransportConnection connection, ref DataBufferReader reader)
        {
            var count = reader.ReadValue <int>();

            for (var i = 0; i != count; i++)
            {
                var id   = reader.ReadValue <int>();
                var type = reader.ReadString();

                playerManager.Register(connection, id, type);
            }
        }
        public void OnMessage(ref DataBufferReader reader)
        {
            var resourceId = reader.ReadValue <int>();
            var wavLength  = reader.ReadValue <double>();

            foreach (var entity in resourceSet.GetEntities())
            {
                if (!entity.TryGet(out AudioResource audioResource))
                {
                    continue;
                }

                audioResource.Length = TimeSpan.FromSeconds(wavLength);
            }
        }
Example #5
0
        public void OnRead(TransportConnection connection, ref DataBufferReader reader)
        {
            var ev     = reader.ReadValue <SControllerEvent>();
            var entity = playerManager.Get(connection, ev.Player);

            switch (ev.State)
            {
            case SControllerEvent.EState.Paused:
                break;

            case SControllerEvent.EState.Stop:
                entity.Set(new StopAudioRequest());
                break;

            case SControllerEvent.EState.Play:
                var resource = resourceManager.GetWav(connection, ev.ResourceId);

                entity.Set(resource);
                entity.Set(new PlayAudioRequest());
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            entity.Set <StandardAudioPlayerComponent>();

            if (ev.Delay > TimeSpan.Zero)
            {
                entity.Set(new AudioDelayComponent(worldTime.Total + ev.Delay - worldTime.Delta));
            }
        }
        protected override void OnUpdate()
        {
            // Update first...
            foreach (var(featureEntity, feature) in Features)
            {
                feature.Driver.Update();

                while (feature.Driver.Accept().IsCreated)
                {
                }

                // todo: check events for errors and all
                TransportEvent ev;
                while ((ev = feature.Driver.PopEvent()).Type != TransportEvent.EType.None)
                {
                    switch (ev.Type)
                    {
                    case TransportEvent.EType.None:
                        break;

                    case TransportEvent.EType.RequestConnection:
                        break;

                    case TransportEvent.EType.Connect:
                        break;

                    case TransportEvent.EType.Disconnect:
                        break;

                    case TransportEvent.EType.Data:
                        var reader = new DataBufferReader(ev.Data);
                        var type   = (EAudioSendType)reader.ReadValue <int>();
                        switch (type)
                        {
                        case EAudioSendType.Unknown:
                            throw new InvalidOperationException();

                        case EAudioSendType.RegisterResource:
                            throw new InvalidOperationException("shouldn't be called");

                        case EAudioSendType.SendReplyResourceData:
                        {
                            clientReceiveAudioResourceDataSystem.OnMessage(ref reader);
                            break;
                        }

                        case EAudioSendType.SendAudioPlayerData:
                            throw new InvalidOperationException("shouldn't be called");

                        default:
                            throw new ArgumentOutOfRangeException();
                        }
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }
        }
        public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref UnitEnemySeekingState component, ref DataBufferReader reader)
        {
            var replica = reader.ReadValue <Replica>();

            RelativeDistance = replica.RelativeDistance;
            SelfDistance     = replica.SelfDistance;
            ghEntityToUEntity.TryGetValue(replica.Enemy, out Enemy);

            component = this;
        }
        public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref OwnerActiveAbility component, ref DataBufferReader reader)
        {
            var replica = reader.ReadValue <Replica>();

            LastActivationTime    = replica.LastActivationTime;
            LastCommandActiveTime = replica.LastCommandActiveTime;
            ghEntityToUEntity.TryGetValue(replica.Previous, out PreviousActive);
            ghEntityToUEntity.TryGetValue(replica.Active, out Active);
            ghEntityToUEntity.TryGetValue(replica.Incoming, out Incoming);

            CurrentCombo = replica.CurrentCombo;

            component = this;
        }
Example #9
0
 public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref PlayerCurrentCityLocation component, ref DataBufferReader reader)
 {
     ghEntityToUEntity.TryGetValue(reader.ReadValue <GhGameEntitySafe>(), out component.Entity);
 }
Example #10
0
        protected override void OnUpdate()
        {
            base.OnUpdate();

            foreach (var(_, feature) in Features)
            {
                feature.Driver.Update();

                while (feature.Driver.Accept().IsCreated)
                {
                }

                TransportEvent ev;
                while ((ev = feature.Driver.PopEvent()).Type != TransportEvent.EType.None)
                {
                    switch (ev.Type)
                    {
                    case TransportEvent.EType.None:
                        break;

                    case TransportEvent.EType.RequestConnection:
                        break;

                    case TransportEvent.EType.Connect:
                        break;

                    case TransportEvent.EType.Disconnect:
                        break;

                    case TransportEvent.EType.Data:
                        var reader = new DataBufferReader(ev.Data);
                        var type   = (EAudioSendType)reader.ReadValue <int>();
                        switch (type)
                        {
                        case EAudioSendType.Unknown:
                            break;

                        case EAudioSendType.RegisterResource:
                            OnReceiveResource(ev.Connection, ref reader);
                            break;

                        case EAudioSendType.RegisterPlayer:
                            OnReceivePlayer(ev.Connection, ref reader);
                            break;

                        case EAudioSendType.SendAudioPlayerData:
                            var player    = reader.ReadBuffer <CharBuffer128>();
                            var @delegate = playerManager.GetDelegate(player);
                            @delegate?.Invoke(ev.Connection, ref reader);
                            break;

                        default:
                            throw new ArgumentOutOfRangeException($"EAudioSendType: " + type);
                        }

                        break;

                    default:
                        throw new ArgumentOutOfRangeException($"MessageType" + ev.Type);
                    }
                }
            }
        }
 public void Deserialize(EntityManager em, NativeHashMap <GhGameEntitySafe, Entity> ghEntityToUEntity, ref HideoutLeaderSquad component, ref DataBufferReader reader)
 {
     ghEntityToUEntity.TryGetValue(reader.ReadValue <GhGameEntitySafe>(), out component.Leader);
 }