Exemplo n.º 1
0
        private bool ExecuteAction(ref Data inputdata)
        {
            switch (inputdata.action[0])
            {
            //akce ve svete
            case 'W':
                IWorldActionExecutor world = accounts.GetWorld(inputdata);
                if (world != null)
                {
                    return(world.ExecuteAction(ref inputdata));
                }
                else
                {
                    return(false);
                }

            //akce pro synchronizaci klientu
            case 'C':
                return(ExecuteServerAction(ref inputdata));

            //akce pro synchronizaci uzivatelskych uctu
            case 'A':
                return(accounts.ExecuteAction(ref inputdata));

            default:
                return(false);
            }
        }
Exemplo n.º 2
0
        public bool ExecuteAction(ref ServerCore.Data inputdata)
        {
            int action = inputdata.action[1] * 257 + inputdata.action[2];

            Actions act = (Actions)action;

            #region SetPosition
            if (act == Actions.SetPosition)
            {
                Vector3 pos = new Vector3();
                if (AreCoordinates(inputdata.parameters, out pos))
                {
                    this.position = pos;
                }
            }
            #endregion

            #region GetPosition
            else if (act == Actions.GetPosition)
            {
                inputdata.parameters = position.ToString();
                return(true);
            }
            #endregion

            #region GetPlayersPosition
            else if (act == Actions.GetPlayersPosition)
            {
                int           index   = -1;
                String[]      users   = Accounts.GetInstance().GetLoggedUsers(Accounts.GetInstance().SocketToUsername(inputdata.clientSocket), out index);
                List <String> players = new List <String>();

                for (int t = 0; t < users.Length; t++)
                {
                    IWorldActionExecutor world = Accounts.GetInstance().GetWorld(users[t]);

                    if (world != null && t != index)
                    {
                        players.AddRange(world.GetPosition().ToString());
                    }
                }

                inputdata.parameters = players.ToArray();

                return(true);
            }
            #endregion

            return(false);
        }