コード例 #1
0
        public Task InitializeAsync(Abstractions.Model.Game.Player player)
        {
            _ = player.SendAsync(new SendMapRegionMessage(player)).ContinueWith(_ =>
            {
                var defaultTabs = _tabManager.Default;
                for (int tab = 0; tab < defaultTabs.Length; tab++)
                {
                    var interfaceId = defaultTabs[tab];
                    _ = _tabManager.SetTabAsync(player, tab, interfaceId);
                }
            });

            var openLoginScreenMessage = new SendInterfaceMessage
            {
                InterfaceId = 549
            };

            _ = _protoMessageSender.SendAsync(player, openLoginScreenMessage);
            _ = _protoMessageSender.SendAsync(player, new OpenInterfaceMessage
            {
                Window      = 549,
                Position    = 2,
                InterfaceId = 378,
                Walkable    = true
            });
            _ = _protoMessageSender.SendAsync(player, new OpenInterfaceMessage
            {
                Window      = 549,
                Position    = 3,
                InterfaceId = 17,
                Walkable    = true
            });
            return(Task.CompletedTask);
        }
コード例 #2
0
ファイル: TabManager.cs プロジェクト: JayArrowz/NetScape
        public Task SetTabAsync(Abstractions.Model.Game.Player player, int tabId, int interfaceId)
        {
            var switchTabMessage = new ThreeOneSevenEncoderMessages.Types.SwitchTabInterfaceMessage
            {
                InterfaceId = interfaceId,
                TabId       = tabId
            };

            return(_protoMessageSender.SendAsync(player, switchTabMessage));
        }
コード例 #3
0
        public Task SetTabAsync(Abstractions.Model.Game.Player player, int tabId, int interfaceId)
        {
            var switchTabMessage = new OpenInterfaceMessage
            {
                InterfaceId = interfaceId,
                Window      = 548, //Main window
                Position    = TabIds[tabId],
                Walkable    = true
            };

            return(_protoMessageSender.SendAsync(player, switchTabMessage));
        }
コード例 #4
0
ファイル: PlayerUpdater.cs プロジェクト: JayArrowz/NetScape
        public async Task PreUpdateAsync(Player player, Dictionary <RegionCoordinates, HashSet <RegionUpdateMessage> > encodes,
                                         Dictionary <RegionCoordinates, HashSet <RegionUpdateMessage> > updates)
        {
            Position old = player.Position;

            _walkingQueueHandler.Pulse(player);
            var local = true;

            if (player.IsTeleporting)
            {
                player.ResetViewingDistance();
                local = false;
            }

            Position position = player.Position;

            if (!player.HasLastKnownRegion() || IsRegionUpdateRequired(player))
            {
                player.RegionChanged = true;
                local = false;
                player.LastKnownRegion = position;
                await _protoMessageSender.SendAsync(player, new RegionChangeMessage { CentralRegionX = position.CentralRegionX, CentralRegionY = position.CentralRegionY });
            }

            var oldViewable = _regionRepository.FromPosition(old).GetSurrounding();
            var newViewable = _regionRepository.FromPosition(position).GetSurrounding();

            var differences = newViewable.ToHashSet();

            differences.RemoveWhere(t => !oldViewable.Contains(t));

            var full = newViewable.ToHashSet();

            if (local)
            {
                full.RemoveWhere(t => oldViewable.Contains(t));
            }

            await SendUpdates(player, player.LastKnownRegion, differences, full, encodes, updates);
        }
コード例 #5
0
        public async Task OnWelcomeScreenClick(DecoderMessage <ClickButtonMessage> decoderMessage)
        {
            var player         = decoderMessage.Player;
            var buttonPackedId = decoderMessage.Message.ButtonId;

            switch (buttonPackedId)
            {
            case 6:
                await _messageSender.SendAsync(player, new SendInterfaceMessage { InterfaceId = 548 });

                player.UpdateAppearance();
                return;
            }
        }
コード例 #6
0
        public Task InitializeAsync(Abstractions.Model.Game.Player player)
        {
            var initMessage = new ThreeOneSevenEncoderMessages.Types.
                              IdAssignmentMessage
            {
                IsMembers = true, NewId = 1
            };

            _ = _protoMessageSender.SendAsync(player, initMessage);
            player.UpdateAppearance();

            var defaultTabs = _tabManager.Default;

            for (int tab = 0; tab < defaultTabs.Length; tab++)
            {
                var interfaceId = defaultTabs[tab];
                _ = _tabManager.SetTabAsync(player, tab, interfaceId);
            }
            return(Task.CompletedTask);
        }
コード例 #7
0
        public async Task OnLogoutClick(DecoderMessage <ButtonMessage> buttonMessage)
        {
            await _playerSerializer.AddOrUpdateAsync(buttonMessage.Player);

            await _protoMessageSender.SendAsync(buttonMessage.Player, new LogoutMessage());
        }