Example #1
0
        public override void CallGameClientState(GameClientState oldState, GameClientState newState)
        {
            switch (newState)
            {
            case GameClientState.None:
                break;

            case GameClientState.Connected:
                Register(_accountName, "");
                break;

            case GameClientState.Registered:
                break;

            case GameClientState.Queued:
                break;

            case GameClientState.Placed:
                break;

            case GameClientState.Invited:
                break;

            case GameClientState.InGame:
                break;
            }
        }
Example #2
0
        public override void CallGameClientState(GameClientState oldState, GameClientState newState)
        {
            switch (newState)
            {
            case GameClientState.None:
                break;

            case GameClientState.Connected:
                Register(_accountName, "");
                break;

            case GameClientState.Registered:
                if (oldState != GameClientState.InGame)
                {
                    Thread.Sleep(200);
                    Queue(GameType.Normal, "AAEBAQcCrwSRvAIOHLACkQP/A44FqAXUBaQG7gbnB+8HgrACiLACub8CAA==");
                    //Queue();
                    // [EU Legend #1 Tempo Mage] AAEBAf0ECnH2Ar8D7AW5BuwHuQ36Dp4QixQKwwG7ApUD5gSWBfcNgQ6HD4kPkBAA
                }
                else
                {
                    Disconnect();
                }
                break;

            case GameClientState.Queued:
                break;

            case GameClientState.Invited:
                break;

            case GameClientState.InGame:
                break;
            }
        }
Example #3
0
        public override void CallGameClientState(GameClientState oldState, GameClientState newState)
        {
            switch (newState)
            {
            case GameClientState.None:
                break;

            case GameClientState.Connected:
                break;

            case GameClientState.Registered:
                break;

            case GameClientState.Queued:
                break;

            case GameClientState.Invited:
                break;

            case GameClientState.InGame:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(newState), newState, null);
            }
        }
Example #4
0
        public void Finish()
        {
            if (this == NoClient)
            {
                return;
            }

            // in case ready event was not used, we need to reset it manually
            readyEvent.Reset();

            if (PlayerState != null)
            {
                PlayerState.isFinished = true;
            }
            state = GameClientState.Waiting;

            if (!isLocal)
            {
                //stateContainer.CheckConsistency(); // DEBUG

                // send changes to server and update local object ids with global id
                System.IO.Stream buf = stateContainer.GetChanges(1);
                Burntime.Platform.Debug.SetInfoMB("sync out message size client #" + player, (int)buf.Length);

                buf = server.SendChanges(buf);
                stateContainer.UpdateIds(buf);

                //stateContainer.CheckConsistency(); // DEBUG
            }

            FinishedEvent.Set();
        }
Example #5
0
        internal void Activate()
        {
            state      = GameClientState.Ready;
            TravelDays = 0;

            //set ready event
            readyEvent.Set();
        }
Example #6
0
 void IEndTurnControl.NotifyOnGameClientStateChange(GameClientState gameClientState)
 {
     this.lastGameClientState = gameClientState;
     if (this.GameClientStateChange != null)
     {
         this.GameClientStateChange(this, new GameClientStateChangeEventArgs(gameClientState));
     }
 }
 public override void CallGameClientState(GameClientState oldState, GameClientState newState)
 {
     base.CallGameClientState(oldState, newState);
     if (_controller != null)
     {
         _controller.ProccessGameClientState(oldState, newState);
     }
 }
Example #8
0
        public void Connect()
        {
            CheckAuthenticated();
            CheckNotConnected();

            protocolHandler            = protocolHandlerFactory.Create();
            protocolHandler.Dispatcher = messageBroker;
            protocolHandler.Connect(config.GameServerAddress, sessionId, sessionCookie);

            this.state = GameClientState.Connected;
        }
Example #9
0
 public GameClient(
     GameClientConfig config,
     IAuthHandlerFactory authHandlerFactory,
     IProtocolHandlerFactory protocolHandlerFactory)
 {
     this.config                 = config;
     this.authHandlerFactory     = authHandlerFactory;
     this.protocolHandlerFactory = protocolHandlerFactory;
     this.messageBroker          = new MessageBroker();
     this.state = GameClientState.Initial;
 }
Example #10
0
        private static void Client_StateChanged(GameClient client, GameClientState state)
        {
            if (state == GameClientState.Queued ||
                state == GameClientState.Invited ||
                state == GameClientState.InGame)
            {
                return;
            }

            client.StateChanged -= Client_StateChanged;
            client.Disconnect();

            Console.WriteLine($"client[{client.AccountName}]: disconnected.");
        }
Example #11
0
        internal void Activate(System.IO.Stream stateChanges)
        {
            Burntime.Platform.Debug.SetInfoMB("sync in message size client #" + player, (int)stateChanges.Length);

            //stateContainer.CheckConsistency(); // DEBUG

            stateContainer.Update(stateChanges);
            stateContainer.MonitorChanges();

            state      = GameClientState.Ready;
            TravelDays = 0;

            // set ready event
            readyEvent.Set();
        }
Example #12
0
        public AuthResult Authenticate(string userName, byte[] token)
        {
            CheckNotConnected();

            using (var authHandler = authHandlerFactory.Create())
            {
                authHandler.Connect(config.AuthServerAddress);

                var result = authHandler.TryToken(userName, token);
                if (result.IsSuccessful)
                {
                    this.userName      = userName;
                    this.sessionId     = result.SessionId;
                    this.sessionCookie = result.SessionCookie;
                    this.state         = GameClientState.Authenticated;
                }
                return(result);
            }
        }
Example #13
0
        public AuthResult Authenticate(string userName, string password, bool requestToken)
        {
            CheckNotConnected();

            using (var authHandler = authHandlerFactory.Create())
            {
                authHandler.Connect(config.AuthServerAddress);

                var result = authHandler.TryPassword(userName, password);
                if (result.IsSuccessful)
                {
                    this.userName      = userName;
                    this.sessionId     = result.SessionId;
                    this.sessionCookie = result.SessionCookie;
                    this.state         = GameClientState.Authenticated;
                    var token = requestToken ? authHandler.GetToken() : null;
                    return(new AuthResult(true, result.SessionId, result.SessionCookie, token));
                }
                return(result);
            }
        }
Example #14
0
        public L2Packet handlePacket(byte[] rawPacket, bool fromServer)
        {
            if (rawPacket.Length < 3) // Valid data?
            {
                return(null);
            }
            if (fromServer)
            {
                serverCrypt.decrypt(rawPacket, 2, rawPacket.Length);
            }
            else
            {
                clientCrypt.decrypt(rawPacket, 2, rawPacket.Length);
            }

            ByteBuffer binPacket = new ByteBuffer(rawPacket);

            binPacket.ReadBytes(2); // Read 2 bytes ahead
            int opcode       = binPacket.ReadByte();
            int secondOpCode = -1;

            switch (state)
            {
            case GameClientState.CONNECTED:
                // Vom Server (ServerPacket)
                if (fromServer)
                {
                    switch (opcode)
                    {
                    case 0x2e:             // KeyPacket (Contains key, NOT Encrypted xD )
                        this.onKeyPacket(binPacket);
                        break;

                    case 0x09:             // CharSelectionInfo
                        this.state = GameClientState.AUTHED;
                        break;
                    }
                }
                // Vom Clienten
                else
                {
                }
                break;

            case GameClientState.AUTHED:
                if (fromServer)
                {
                    switch (opcode)
                    {
                    case 0x73:
                        this.state = GameClientState.IN_GAME;
                        //Console.Out.WriteLine(Util.printData(binPacket));
                        break;
                    }
                }
                else
                {
                    switch (opcode)
                    {
                    case 0x0d:
                        // get secondOpCode and set
                        secondOpCode = binPacket.ReadInt16();
                        break;

                    case 0x12:             // CharacterSelect
                        break;
                    }
                }
                break;

            case GameClientState.IN_GAME:
                if (fromServer)
                {
                    switch (opcode)
                    {
                    case 0xfe:
                        // get secondOpCode
                        secondOpCode = binPacket.ReadInt16();
                        break;

                    case 0x0b:             //CharSelected
                        this.onCharSelected(binPacket);
                        break;
                    }
                }
                else
                {
                    switch (opcode)
                    {
                    case 0x1f:
                        break;

                    case 0xd0:
                        // get secondOpCode
                        secondOpCode = binPacket.ReadInt16();
                        break;
                    }
                }
                break;
            }


            if (fromServer)
            {
                return(new GameServerPacket(binPacket));
            }
            else
            {
                return(new ClientPacket(binPacket));
            }
        }
Example #15
0
        public L2Packet handlePacket(byte[] rawPacket, bool fromServer)
        {
            if (rawPacket.Length < 3) // Valid data?
                return null;
            if (fromServer)
                serverCrypt.decrypt(rawPacket, 2, rawPacket.Length);
            else
                clientCrypt.decrypt(rawPacket, 2, rawPacket.Length);

            ByteBuffer binPacket = new ByteBuffer(rawPacket);
            binPacket.ReadBytes(2); // Read 2 bytes ahead
            int opcode = binPacket.ReadByte();
            int secondOpCode = -1;

                switch (state)
                {
                    case GameClientState.CONNECTED:
                        // Vom Server (ServerPacket)
                        if (fromServer)
                        {
                            switch (opcode)
                            {

                                case 0x2e: // KeyPacket (Contains key, NOT Encrypted xD )
                                    this.onKeyPacket(binPacket);
                                    break;
                                case 0x09: // CharSelectionInfo
                                    this.state = GameClientState.AUTHED;
                                    break;
                            }
                        }
                        // Vom Clienten
                        else
                        {

                        }
                        break;
                    case GameClientState.AUTHED:
                        if (fromServer)
                        {
                            switch (opcode)
                            {
                                case 0x73:
                                    this.state = GameClientState.IN_GAME;
                                    //Console.Out.WriteLine(Util.printData(binPacket));
                                    break;
                            }
                        }
                        else
                        {
                            switch (opcode)
                            {
                                case 0x0d:
                                    // get secondOpCode and set
                                    secondOpCode = binPacket.ReadInt16();
                                    break;
                                case 0x12: // CharacterSelect
                                    break;
                            }
                        }
                        break;
                    case GameClientState.IN_GAME:
                        if (fromServer)
                        {
                            switch (opcode)
                            {
                                case 0xfe:
                                    // get secondOpCode
                                    secondOpCode = binPacket.ReadInt16();
                                    break;
                                case 0x0b: //CharSelected
                                    this.onCharSelected(binPacket);
                                    break;
                            }
                        }
                        else
                        {
                            switch (opcode)
                            {
                                case 0x1f:
                                    break;
                                case 0xd0:
                                    // get secondOpCode
                                    secondOpCode = binPacket.ReadInt16();
                                    break;
                            }
                        }
                        break;
                }

                if (fromServer)
                    return new GameServerPacket(binPacket);
                else
                {
                    return new ClientPacket(binPacket);
                }
        }
Example #16
0
    internal void ProccessGameClientState(GameClientState oldState, GameClientState newState)
    {
        Debug.Log($"{oldState} -> {newState}");

        _newClientState = true;
    }
Example #17
0
 public void Die()
 {
     state = GameClientState.Dead;
 }
Example #18
0
 public void Close()
 {
     protocolHandler.Close();
     this.state = GameClientState.Initial;
 }