Beispiel #1
0
        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."));
            }
        }