コード例 #1
0
        public void Face(EODirection direction)
        {
            var packet = new PacketBuilder(PacketFamily.Face, PacketAction.Player)
                         .AddChar((byte)direction)
                         .Build();

            _packetSendService.SendPacket(packet);
        }
コード例 #2
0
        private void HandleWalkToWarpTile(IWarp warp)
        {
            if (warp.DoorType != DoorSpec.NoDoor)
            {
                if (!_unlockDoorValidator.CanMainCharacterOpenDoor(warp))
                {
                    var requiredKey = _unlockDoorValidator.GetRequiredKey(warp);

                    var messageBox = _eoMessageBoxFactory.CreateMessageBox(DialogResourceID.DOOR_LOCKED);
                    messageBox.ShowDialog();
                    _statusLabelSetter.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_WARNING,
                                                      EOResourceID.STATUS_LABEL_THE_DOOR_IS_LOCKED_EXCLAMATION,
                                                      " - " + requiredKey);
                }
                else if (!_currentMapStateRepository.OpenDoors.Contains(warp) &&
                         !_currentMapStateRepository.PendingDoors.Contains(warp))
                {
                    var packet = new PacketBuilder(PacketFamily.Door, PacketAction.Open)
                                 .AddChar((byte)warp.X)
                                 .AddChar((byte)warp.Y)
                                 .Build();

                    _packetSendService.SendPacket(packet);
                    _currentMapStateRepository.PendingDoors.Add(warp);
                }
            }
            else if (warp.LevelRequirement > 0 && MainCharacter.Stats[CharacterStat.Level] < warp.LevelRequirement)
            {
                _statusLabelSetter.SetStatusLabel(EOResourceID.STATUS_LABEL_TYPE_WARNING,
                                                  EOResourceID.STATUS_LABEL_NOT_READY_TO_USE_ENTRANCE,
                                                  " - LVL " + warp.LevelRequirement);
            }
        }
コード例 #3
0
        private void SendWarpAcceptToServer(IPacket packet)
        {
            var response = new PacketBuilder(PacketFamily.Warp, PacketAction.Accept)
                           .AddShort(packet.ReadShort())
                           .Build();

            _packetSendService.SendPacket(response);
        }
コード例 #4
0
        public void CompleteHandshake(IInitializationData initializationData)
        {
            var packet = new PacketBuilder(PacketFamily.Connection, PacketAction.Accept)
                         .AddShort((short)initializationData[InitializationDataKey.SendMultiple])
                         .AddShort((short)initializationData[InitializationDataKey.ReceiveMultiple])
                         .AddShort((short)initializationData[InitializationDataKey.ClientID])
                         .Build();

            _packetSendService.SendPacket(packet);
        }
コード例 #5
0
        public void LevelUpStat(CharacterStat whichStat)
        {
            if (InvalidStat(whichStat))
            {
                return;
            }

            var packet = new PacketBuilder(PacketFamily.StatSkill, PacketAction.Add)
                         .AddChar((byte)TrainType.Stat)
                         .AddShort((byte)GetStatIndex(whichStat))
                         .Build();

            _packetSendService.SendPacket(packet);
        }
コード例 #6
0
        public ItemPickupResult PickUpItem(IItem item)
        {
            var pickupResult = _itemPickupValidator.ValidateItemPickup(_characterProvider.MainCharacter, item);

            if (pickupResult == ItemPickupResult.Ok)
            {
                var packet = new PacketBuilder(PacketFamily.Item, PacketAction.Get)
                             .AddShort(item.UniqueID)
                             .Build();

                _packetSendService.SendPacket(packet);
            }

            return(pickupResult);
        }