public void RunService(int serverPort) { if (m_actorManager != null) { return; } m_actorManager = new ActorManager(); m_watchDogActor = new WatchDogActor(this); //Id为1的Actor, 不与Agent绑定,也没有U3DId标识 m_actorManager.AddActor(m_watchDogActor, true); m_worldActor = new WorldActor(this); m_watchDogActor.WorldActor = m_worldActor; //Id为2的Actor, 不与Agent绑定,也没有U3DId标识 m_actorManager.AddActor(m_worldActor, true); m_serverActor = new ServerActor(this); m_watchDogActor.ServerActor = m_serverActor; m_serverActor.WatchDogActor = m_watchDogActor; //Id为3的Actor, 不与Agent绑定,也没有U3DId标识 m_actorManager.AddActor(m_serverActor, true); //启动服务器 m_serverActor.Run(serverPort); }
internal ResponseCompletes(ServerActor serverActor, Request request, RequestResponseContext requestResponseContext, Header?correlationId) : base(serverActor.Stage.Scheduler) { _serverActor = serverActor; _request = request; _requestResponseContext = requestResponseContext; _correlationId = correlationId; }
public PlayerActor(uint agentId, MonoBehaviour mono) : base(mono) { AgentId = agentId; ServerActor server = ActorManager.Instance.GetActor <ServerActor>(); m_agent = server.GetAgent(m_agentId); m_agent.Actor = this; m_worldActor = ActorManager.Instance.GetActor <WorldActor>(); }
public void StopServerActor() { if (m_serverActor != null) { m_serverActor.End(); m_actorManager.RemoveActor(m_serverActor.Id); m_serverActor = null; } }
public static void Disconnect(ServerClient disconnectedClient) { //Session manager - UNTESTED try { UserSession ses = new UserSession() { UserID = disconnectedClient.clientName, InGame = false, Request = SessionRequest.SetStatus }; byte[] data = TCPHelper.MessageBytes(ses); Server.SessionClient.GetStream().Write(data, 0, data.Length); } catch { } ServerActor disconnectedActor = null; foreach (ServerActor actor in Players) { if (actor.Client == disconnectedClient) { disconnectedActor = actor; SendDisconnectNotification(disconnectedActor.PlayerID); } } if (disconnectedActor != null) { //Gem spillerens state List <PlayerDataModel> saveStates = new List <PlayerDataModel>(); saveStates.Add(new PlayerDataModel() { PlayerDataRequest = PlayerDataRequest.Update, Online = false, PositionX = disconnectedActor.startingX, PositionY = disconnectedActor.startingY, UserID = disconnectedActor.Client.clientName, ResponseExpected = false }); byte[] data = TCPHelper.MessageBytesNewton(saveStates); databaseClient.GetStream().Write(data, 0, data.Length); //Fjern fra spillet MapGrid.grid[disconnectedActor.startingX, disconnectedActor.startingY].GetComponent <Cell>().UnoccupyCell(); ChangedCells.Add(Server.MapGrid.grid[disconnectedActor.startingX, disconnectedActor.startingY].GetComponent <Cell>(), 0); Players.Remove(disconnectedActor); GameObject.Destroy(disconnectedActor.gameObject); Clients.Remove(disconnectedClient); } }
/// <summary> /// Instantiates a player actor in the scene /// </summary> public ServerActor SpawnActor(Vector2 index, string name) { UnityEngine.Object playerPrefab = Resources.Load("Prefabs/ServerActor"); GameObject actorObject = (GameObject)GameObject.Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); ServerActor actorComponent = actorObject.GetComponent <ServerActor>(); actorComponent.newX = (int)index.x; actorComponent.newY = (int)index.y; actorObject.GetComponentInChildren <Text>().text = name; actorComponent.Endpoint = tcpClient.Client.RemoteEndPoint; this.OnNewInputsRecieved += actorComponent.NewInputsRecieved; actorComponent.Client = this; Server.PlayersConnected++; actorComponent.PlayerID = Server.PlayersConnected; ClientConnected(actorComponent.PlayerID, actorComponent.CurrentPos); Server.Clients.Add(this); Server.Players.Add(actorComponent); return(actorComponent); }
private void CreateTopLevelActors() { _system.ActorOf(ServerActor.Props(), ActorPaths.ServerActor.Name); }
internal ResponseCompletes(ServerActor serverActor, RequestResponseContext requestResponseContext) : this(serverActor, null !, requestResponseContext, null)
internal ServerRequestChannelConsumer(ServerActor serverActor, IDispatcher dispatcher) { _serverActor = serverActor; _dispatcher = dispatcher; }