コード例 #1
0
        public void CreateDummyConnection()
        {
            // check if handler is empty, if so create an instance of it
            if (_handler == null)
            {
                Player player = new Player()
                {
                    name        = "",
                    orderNumber = 1,
                    ready       = true,
                    type        = PlayerType.Host
                };

                // create an instance of the servicebus handler
                _handler = new ServiceBusHandler(player, true);

                // initialise SessionCodeGenerator
                SessionCodeGenerator generator = new SessionCodeGenerator();

                // Generade sessionCode
                string sessionCode = generator.GenerateSessionCode();
                StaticResources.sessionCode = sessionCode;

                //_handler.program.CreateQueueConnection(PlayerType.Host);

                //_handler.program.QueueListner.MessageReceived += OnMessageReceived;
            }


            _handler.program.topic.MessageReceived += OnMessageReceived;
        }
コード例 #2
0
        private void Start_Host(object sender, RoutedEventArgs e)
        {
            // check if handler is empty, if so create an instance of it
            if (_handler == null)
            {
                // initialise SessionCodeGenerator
                SessionCodeGenerator generator = new SessionCodeGenerator();

                // Generade sessionCode
                string sessionCode = generator.GenerateSessionCode();

                StaticResources.sessionCode = sessionCode;

                // Set player data
                Player player = new Player();
                player.name        = tbName.Text;
                player.type        = PlayerType.Host;
                player.orderNumber = 1;

                // create an instance of the servicebus handler
                _handler = new ServiceBusHandler(player, true);

                _handler.program.CreateQueueListner(PlayerType.Host);

                _handler.program.QueueListner.MessageReceived += OnQueueMessageReceived;
                _handler.program.topic.MessageReceived        += OnTopicMessageReceived;
            }

            lblSession.Content = StaticResources.sessionCode;
            lv.ItemsSource     = StaticResources.PlayerList;
        }
コード例 #3
0
        public async void OnGet()
        {
            TimerHandler.SetTimer();
            TimerHandler.StartTimer();
            if (StaticResources.PlayerList.Count() == 0)
            {
                dummy.SetDummyData();
            }

            StaticResources.field.fieldNumber = StaticResources.user.orderNumber;

            if (ServiceBusHandler.program == null)
            {
                Player player = dummy.GetDummyPlayer();

                //field-id doorgeven
                playerId = player;

                // initialise SessionCodeGenerator
                SessionCodeGenerator generator = new SessionCodeGenerator();

                // Generade sessionCode
                StaticResources.sessionCode = generator.GenerateSessionCode();

                await ServiceBusHandler.InitiateServiceBusHandler(player, true);
            }

            ServiceBusHandler.program.topic.MessageReceived += OnTopicMessageReceived;

            players = StaticResources.PlayerList;

            StaticResources.log.MyTurn = StaticResources.user.orderNumber == 1 ? true : false;
        }
コード例 #4
0
    /*long Millisecs(){
     *      return (long)(DateTime.Now - new DateTime(1970, 1, 1)).TotalMilliseconds;
     * }*/

    private void cmdUser()
    {
        var time = DateTime.Now;
        var dt   = time - sessionTime;

        // если ещё нет сессии или она устарела (> 10 мин)
        if (sessionId.IsNullOrWhiteSpace() || dt.TotalMinutes > 10f)
        {
            sessionId   = SessionCodeGenerator.RandomAbc(16);
            sessionTime = time;
            WriteSessionPrefs(false);
            Log.Galaxy("galaxy. generate new session id");
        }
        // USER <user_id> <user_password> <user_nick> <session_code> [<auth_code>]
        const string commandFormat = "USER {0} {1} {2} {3} {4}";
        var          loginCommand  = string.Format(commandFormat,
                                                   userId,
                                                   userPass,
                                                   userName,
                                                   authCode,
                                                   sessionId);

        SendToServer(loginCommand);
    }
コード例 #5
0
        public IActionResult CreateHost([FromBody] PlayerForUpdateDto player)
        {
            try
            {
                if (player == null)
                {
                    _logger.LogError("Player object sent from client is null.");
                    return(BadRequest("Player object is null"));
                }

                if (!ModelState.IsValid)
                {
                    _logger.LogError("Invalid Player object sent from client.");
                    return(BadRequest("Invalid model object"));
                }

                SessionCodeGenerator generator = new SessionCodeGenerator();
                TopicCreator         creator   = new TopicCreator();

                // create new session

                // start create new session code
                string session_code = "";
                bool   inUse        = true;
                while (inUse)
                {
                    session_code = generator.GenerateSessionCode();

                    inUse = _repository.SessionData.ValidateIfActive(session_code);
                }
                // end create new session code

                // start create new session
                SessionData sessionData = new SessionData();
                sessionData.session_code = session_code;

                _repository.SessionData.CreateSession(sessionData);
                // end create new session

                // start create new topic
                TopicData data = creator.CreateNewTopic(session_code);
                data.sessionCode = session_code;

                _repository.TopicData.CreateTopic(data);
                _repository.Save();
                // end create new topic

                // start create new player
                Player PlayerEntity = _mapper.Map <Player>(player);
                PlayerEntity.orderNumber = 1;
                PlayerEntity.session_id  = sessionData.id;

                _repository.Player.CreatePlayer(PlayerEntity);
                _repository.Save();

                // end create new player

                var            session = _repository.SessionData.GetBySessionCodeWithDetails(session_code);
                SessionDataDto result  = _mapper.Map <SessionDataDto>(session);

                return(Ok(result));
                //return CreatedAtRoute("CategoryById", new { id = createdEntity.id }, createdEntity);
            }
            catch (Exception ex)
            {
                _logger.LogError($"Something went wrong inside CreateArtist action: {ex.Message}");
                return(StatusCode(500, "Internal server error"));
            }
        }
コード例 #6
0
    void OnMessageReceivedInternal(string message)
    {
        message = message.Trim();
        if (message == "")
        {
            return;
        }
        //log("<< '" + message + "'");
        Log.Galaxy("<< " + message);
        GalaCommand c = new GalaCommand(message.Trim());

        /*print("prefix: "+c.Prefix);
         * print("name: "+c.Name);
         * print("params: "+c.Parameters);
         * print("postfix: "+c.Postfix);*/

        switch (c.Name)
        {
        case "HAAAPSI":                 // приветствие
            var code = c.Parameters[0];
            authCode = SessionCodeGenerator.Generate(code);
            cmdIdent();
            ReadPrefs();
            if (!userPass.IsNullOrWhiteSpace())
            {
                cmdUser();
            }
            else
            {
                cmdRecover();
            }
            break;

        case "REGISTER":                 // добро на вход
            userId   = c.Parameters[0].Trim().ToInt();
            userPass = c.Parameters[1].Trim();
            userName = c.Parameters[2].Trim();
            cmdUser();
            planet.myUserId = userId;
            WriteUserPrefs();
            break;

        case "999":                 // auth OK
            cmdAddons();
            //PlayerPrefs.GetString("planetName", null);
            string s      = null;               //"pi100let";
            var    custom = ChatSettings.Me.CustomPlanetName;
            if (!custom.IsNullOrWhiteSpace())
            {
                s = custom;
            }
            cmdJoin(s);
            break;

        case "PING":
            cmdPong();
            break;

        case "353":                 // список юзеров. может быть несколько таких команд
            if (isWait353)
            {
                planet.Reset();
                isWait353 = false;
            }
            planet.JoinUsers(c.Postfix);
            planet.SetName(c.Parameters[2]);
            break;

        case "366":
            isWait353 = true;
            OnEnterChannel();
            break;

        case "860":                 // авторитет юзера / 860 8530196 161 1;aura/0_1;0;0;33
            planet.ParseAuthority(c.Parameters);
            break;

        case "JOIN":                 // вход перса
            planet.JoinUser(c.Parameters);
            break;

        case "PART":                 // выход перса
            planet.PartUser(c.Parameters);
            break;

        case "451":                 // ошибки
            // входили с другого устройства, нужно войти по рековери
            cmdRecover();
            break;

        case "452":
        case "432":
        case "433":
        case "601":
        case "403":
            MessageBox.Show("System Notice", c.Postfix);
            Disconnect();
            break;

        case "471":                 // планета переполнена
            var msg = c.Postfix;
            if (!joinPlanetName.IsNullOrWhiteSpace())
            {
                msg += " (" + joinPlanetName + ")";
                // на спец. кнопку вешаем собитие повторного джоина
                Action onClick = () => {
                    cmdJoin(joinPlanetName);
                    MessageBox.Dismiss();
                };
                MessageBox.EnableSpecialButton("Try Again", onClick);
            }
            MessageBox.Show("System Notice", msg);

            //Disconnect();
            break;

        case "473":
            MessageBox.Show("Fly", "Can't fly to closed planet!");
            //Disconnect();
            break;

        case "900":                 // инфа о планете
            planet.SetName(c.Parameters[0]);
            break;

        case "PRIVMSG":                 // инфа о планете
            AddMessage(c.Parameters[0].ToInt(), c.Postfix);
            break;

        case "332":                 // топик
            AddMessage(-1, "Subject: " + c.Postfix);
            break;

        case "ACTION":
            ParseAction(c);
            break;

        case "KICK":
            ParseKick(c);
            break;

        case "852":
            if (isWait852)
            {
                Reset852();
                isWait852 = false;
            }
            Parse852(c);
            break;

        case "853":
            isWait852 = true;
            Prepare852();
            break;

        default:
            break;
        }
    }