async void DelayedStart(Init init) { log.Info("InitStart"); var time = init.StartTime / 1000f; log.Info("1"); await Task.Delay(init.StartTime); log.Info(time.ToString()); Running = true; log.Info("Started"); InitReceived?.Invoke(this, init); }
private void NetworkOnDataReceived(byte[] rawData) { var data = Compressor.Decompress(rawData); var reader = new Deserializer(data); var messageTag = (MessageTag)reader.GetByte(); switch (messageTag) { case MessageTag.Init: var paket = new Init(); paket.Deserialize(reader); InitReceived?.Invoke(this, paket); break; case MessageTag.Input: var tick = reader.GetUInt() + reader.GetByte(); //Tick + LagCompensation var countCommands = reader.GetInt(); var actorId = reader.GetByte(); var commands = new ICommand[countCommands]; for (var i = 0; i < countCommands; i++) { var tag = reader.GetUShort(); if (!_commandFactories.ContainsKey(tag)) { continue; } var newCommand = (ICommand)Activator.CreateInstance(_commandFactories[tag]); newCommand.Deserialize(reader); commands[i] = newCommand; } base.Enqueue(new Input(tick, actorId, commands)); break; } }
private void OnDataReceived(byte[] data) { data = Compressor.Decompress(data); var reader = new Deserializer(data); var messageTag = (MessageTag)reader.GetByte(); switch (messageTag) { case MessageTag.StartSimulation: var init = new Init(); init.Deserialize(reader); InitReceived?.Invoke(init); break; case MessageTag.Input: var commanderId = reader.GetByte(); var frameNumber = reader.GetUInt(); var countCommands = reader.GetInt(); var commands = new ICommand[countCommands]; for (var i = 0; i < countCommands; i++) { var tag = reader.GetUShort(); if (_commandFactories.ContainsKey(tag)) { var newCommand = _commandFactories[tag].Invoke(); newCommand.Deserialize(reader); commands[i] = newCommand; } } base.Insert(frameNumber, commanderId, commands); break; } }