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); } }
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); }