protected override void Execute(RailRoom room, RailController sender) { if (TryFind(EntityId, out MobilePartyEntityServer entity)) { if (sender.ControlledEntities.Contains(entity)) { Logger.Trace( "[T {}] Ack move entity {id} to {position}.", room.Tick, EntityId, Movement); entity.State.Movement = Movement; } else { Logger.Warn( "{controller} tried to move entity {id} without permission.", sender, EntityId); } } }
protected override void Execute(RailRoom room, RailController sender) { if (MethodRegistry.IdToMethod.TryGetValue(Call.Id, out MethodAccess method)) { if (room is RailServerRoom serverRoom) { Logger.Trace("Broadcast SyncCall: {}", Call); serverRoom.BroadcastEvent(this); } else if (room is RailClientRoom clientRoom) { Logger.Trace("SyncCall: {}", Call); method.CallOriginal( clientRoom.Resolve(Call.Instance), clientRoom.Resolve(Call.Arguments)); } } else { Logger.Warn("Unknown SyncCall: ", Call); } }
protected override void Execute(RailRoom room, RailController sender) { if (TryFind(EntityId, out MobilePartyEntityServer entity)) { // TODO: As we currently share the party control, disable any checks and just allow movement. // if (sender.ControlledEntities.Contains(entity)) { Logger.Trace( "[{tick}] Ack move entity {id} to {position}.", room.Tick, EntityId, Movement); entity.State.Movement = Movement; } // else // { // Logger.Warn( // "{controller} tried to move entity {id} without permission.", // sender, // EntityId); // } } }
protected override void Execute(RailRoom room, RailController sender) { }
protected void SetRoom(RailRoom room, Tick startTick) { Room = room; Room.Initialize(startTick); }