private void Login(MudAction action) { var character = _entityFactory.GetEntityById(action.SenderId); if (character == null) { return; } if (!_entities.ContainsKey(character.Id)) { _entities.Add(character.Id, character); } character.Components.Add(new ReporterComponent(character, "reporter", null)); var roomTrait = character.Traits.Get("room")?.Value; var roomId = !string.IsNullOrWhiteSpace(roomTrait) ? int.Parse(roomTrait) : 0; if (roomId > 0) { var room = _rooms[roomId]; room.Entities.Add(character.Id); ActionRealmPlayers(new MudAction("enterrealm", character.Id)); var zone = _zones[room.Zone]; var enterZone = new MudAction("enterzone", character.Id); var enterRoom = new MudAction("enterroom", character.Id, 0); zone.DoAction(enterRoom); character.DoAction(enterZone); room.DoAction(enterRoom); ActionRoomMobs(enterRoom, room.Id); ActionRoomItems(enterRoom, room.Id); Commands.AssignCommand(character.Id, "quit"); Commands.AssignCommand(character.Id, "look"); Commands.AssignCommand(character.Id, "say"); Commands.AssignCommand(character.Id, "west"); Commands.AssignCommand(character.Id, "east"); Commands.AssignCommand(character.Id, "take"); Commands.AssignCommand(character.Id, "items"); _timerRegistry.Add(new TimedMudAction(5, "infotoplayer", character.Id, "This is an action delayed by 5 seconds.")); } }