public void OnNetworkReceiveUnconnected(NetEndPoint remoteEndPoint, NetDataReader reader, UnconnectedMessageType messageType) { Console.WriteLine("[Server] ReceiveUnconnected: {0}", reader.GetString(100)); }
public static void LoadServerData() { string path = GameConfig.gameSaveFolder + DSPGame.LoadFile + FILE_EXTENSION; IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; if (!File.Exists(path) || playerManager == null) { return; } byte[] source = File.ReadAllBytes(path); NetDataReader netDataReader = new NetDataReader(source); ushort revision = 0; try { string revString = netDataReader.GetString(); if (revString != "REV") { throw new System.Exception(); } revision = netDataReader.GetUShort(); Log.Info($"Loading server data, revision {revision}"); if (revision != REVISION) { // Supported revision: 4~6 if (revision < 4 || revision > REVISION) { throw new System.Exception(); } } } catch (System.Exception) { Log.Warn("Skipping server data from unsupported Nebula version..."); return; } int playerNum = netDataReader.GetInt(); using (playerManager.GetSavedPlayerData(out Dictionary <string, IPlayerData> savedPlayerData)) { for (int i = 0; i < playerNum; i++) { string hash = netDataReader.GetString(); PlayerData playerData = null; if (revision == REVISION) { playerData = netDataReader.Get <PlayerData>(); } else if (revision == 4) { playerData = new PlayerData(); playerData.Deserialize_4(netDataReader); } else if (revision == 5) { playerData = new PlayerData(); playerData.Deserialize_5(netDataReader); } if (!savedPlayerData.ContainsKey(hash) && playerData != null) { savedPlayerData.Add(hash, playerData); } else if (playerData == null) { Log.Warn($"could not load player data from unsupported save file revision {revision}"); } } } }
public override void ReadPayload(NetDataReader message) { base.ReadPayload(message); SystemId = message.GetString(100); }
public void Deserialize(NetDataReader reader) { UserId = reader.GetString(); }
protected override void OnHandleMessage(NetDataReader reader) { int unitCount = reader.GetInt(); for (int i = 0; i < unitCount; i++) { UnitData unitData = MessageSerializerService.DeserializeObjectOfType <UnitData>(reader.GetString()); UnitController newUnit = ((GameObject)Instantiate(Resources.Load("Objects/Player"), new Vector3(unitData.PositionData.X, unitData.PositionData.Y, unitData.PositionData.Z), Quaternion.identity)).GetComponent <UnitController>(); NetObject netObject = newUnit.gameObject.GetComponent <NetObject>(); netObject.Id = unitData.UnitId; newUnit.Health = unitData.Health; newUnit.MoveSpeed = unitData.MoveSpeed; newUnit.MinDamage = unitData.MinDamage; newUnit.MaxDamage = unitData.MaxDamage; newUnit.AttackRadius = unitData.AttackRadius; ClientNetEventListener.Instance.NetObjects.Add(unitData.UnitId, netObject); BattleManager.Instance.EnemyUnits.Add(i, newUnit); } BattleManager.Instance.StartSession(); }
public override void Receive(NetDataReader reader) { Debug.Log("Test" + reader.GetString()); }
public void Deserialize(NetDataReader reader) { functionName = reader.GetString(); isOpenFunction = reader.GetBool(); }
public static void Resolve(NetworkMessage.Type messageType, NetDataReader data) { switch (messageType) { case NetworkMessage.Type.server_loginAnswer: { NetworkMessage.LoginType loginAnswer = (NetworkMessage.LoginType)data.GetByte(); if (loginAnswer == NetworkMessage.LoginType.correct) { //Game.GetPlayer().SetPlayerId(data.GetInt()); LoginScreenUI.SetCharacterSelectionWaitingCount(data.GetByte()); return; } LoginScreenUI.ShowInfo(loginAnswer.ToString()); break; } case NetworkMessage.Type.server_characterLoginInfo: { int id = data.GetInt(); string name = data.GetString(data.GetByte()); Vector3 position = new Vector3(data.GetFloat(), data.GetFloat(), data.GetFloat()); float orientation = data.GetFloat(); int modelId = data.GetByte(); int index = Database.GetDBCharacterModelList().FindIndex(x => x.id == modelId); if (index == -1) { Debug.LogError("Cannot find modelId '" + modelId + "'"); index = 0; } Entity ent = Database.CreateEntity(); ent.DisableMovement(true); ent.SetId(id); ent.name = name; ent.SetPostStartAction(() => { GameObject obj = GameObject.Find("SpawnPoint"); ent.transform.SetParent(obj.transform); ent.transform.localPosition = Vector3.zero; ent.SetOrientation(obj.transform.eulerAngles.y); ent.GetVisualModule().AssignCharacterModelToEntity(Database.GetDBCharacterModelList()[index]); LoginScreenUI.AddCharacterSelectionEntity(ent); }); break; } case NetworkMessage.Type.server_requestMapLoading: { //load some map break; } case NetworkMessage.Type.server_createEntity: { int id = data.GetInt(); string name = data.GetString(data.GetByte()); Vector3 position = new Vector3(data.GetFloat(), data.GetFloat(), data.GetFloat()); float orientation = data.GetFloat(); int modelId = data.GetByte(); Vector3 userInput = new Vector3(data.GetFloat(), data.GetFloat(), data.GetFloat()); int index = Database.GetDBCharacterModelList().FindIndex(x => x.id == modelId); if (index == -1) { Debug.LogError("Cannot find modelId '" + modelId + "'"); index = 0; } Entity ent = Database.CreateEntity(); ent.SetId(id); ent.name = name; ent.SetPostStartAction(() => { ent.SetPosition(position); ent.SetOrientation(orientation); ent.GetMovementModule().SetRequestInputs(userInput); ent.GetVisualModule().AssignCharacterModelToEntity(Database.GetDBCharacterModelList()[index]); }); break; } case NetworkMessage.Type.server_removeEntity: { int entityId = data.GetInt(); Map tempMap = Game.GetMap(); if (tempMap == null) { return; } tempMap.RemoveEntity(entityId); break; } case NetworkMessage.Type.server_setControllable: { int controllableEntityId = data.GetInt(); bool isMainEntity = data.GetBool(); Map tempMap = Game.GetMap(); if (tempMap == null) { Network.AddEntityWaitingMessage(controllableEntityId, data); return; } Entity tempEntity = tempMap.GetEntity(controllableEntityId); if (tempEntity == null) { Network.AddEntityWaitingMessage(controllableEntityId, data); return; } PlayerCamera.instance.transform.position = tempEntity.transform.position; Game.GetPlayer().ControllableEntity = tempEntity; if (isMainEntity) { Game.GetPlayer().SetPlayerId(tempEntity.GetId()); } break; } case NetworkMessage.Type.client_movementSnapshot: { int entityId = data.GetInt(); if (Game.GetMap() == null) { return; } Entity entity = Game.GetMap().GetEntity(entityId); if (entity == null) { return; } int time = data.GetInt(); Vector3 position = new Vector3(data.GetFloat(), data.GetFloat(), data.GetFloat()); float rotation = data.GetFloat(); Vector3 inputs = new Vector3(data.GetSByte(), data.GetSByte(), data.GetSByte()); EntityMovement.MovementSnapshot snapshot = new EntityMovement.MovementSnapshot(time, entityId, position, rotation, inputs); entity.GetMovementModule().AddSnapshot(snapshot); break; } case NetworkMessage.Type.server_chatMessage: { ChatUI.MessageType tempChatMessageType = (ChatUI.MessageType)data.GetByte(); int senderId = data.GetInt(); string message = data.GetString(data.GetShort()); if (Game.GetMap() == null) { return; } ChatUI.ReceiveChatMessage(Game.GetMap().GetEntity(senderId), tempChatMessageType, message); break; } case NetworkMessage.Type.server_chatChannelInfo: { bool addChatChannel = data.GetBool(); string chatChannelName = data.GetString(data.GetByte()); if (addChatChannel) { ChatUI.AddChatChannel(chatChannelName); } else { ChatUI.RemoveChatChannel(chatChannelName); } break; } case NetworkMessage.Type.server_entityTeleport: { Vector3 position = new Vector3(data.GetFloat(), data.GetFloat(), data.GetFloat()); float rotation = data.GetFloat(); Game.GetPlayer().ControllableEntity.transform.position = position; Game.GetPlayer().ControllableEntity.GetMovementModule().SetRequestRotation(rotation); break; } case NetworkMessage.Type.server_inventoryItem: { int id = data.GetShort(); int count = data.GetByte(); Game.GetPlayer().SetItem(id, count); break; } case NetworkMessage.Type.server_guildInfo: { int steps = 0; while (!data.EndOfData && steps <= 10) { Player.GuildInfo.TimeInfo type = (Player.GuildInfo.TimeInfo)data.GetByte(); switch (type) { case Player.GuildInfo.TimeInfo.info: { Game.GetPlayer().GetGuildInfo().info = data.GetString(data.GetShort()); break; } case Player.GuildInfo.TimeInfo.announcement: { Game.GetPlayer().GetGuildInfo().announcement = data.GetString(data.GetShort()); break; } case Player.GuildInfo.TimeInfo.name: { Game.GetPlayer().GetGuildInfo().name = data.GetString(data.GetByte()); break; } case Player.GuildInfo.TimeInfo.members: { Player.GuildInfo.Member[] tempMembers = new Player.GuildInfo.Member[data.GetByte()]; for (int i = 0; i < tempMembers.Length; i++) { tempMembers[i] = new Player.GuildInfo.Member(); tempMembers[i].id = data.GetInt(); tempMembers[i].name = data.GetString(data.GetByte()); } Game.GetPlayer().GetGuildInfo().members = new List <Player.GuildInfo.Member>(tempMembers); break; } case Player.GuildInfo.TimeInfo.ranks: { Player.GuildInfo.Rank[] tempRanks = new Player.GuildInfo.Rank[data.GetByte()]; for (int i = 0; i < tempRanks.Length; i++) { tempRanks[i] = new Player.GuildInfo.Rank(); tempRanks[i].id = data.GetInt(); tempRanks[i].name = data.GetString(data.GetByte()); tempRanks[i].isMain = data.GetBool(); tempRanks[i].isBasic = data.GetBool(); tempRanks[i].canMemberInvite = data.GetBool(); tempRanks[i].canMemberRemove = data.GetBool(); tempRanks[i].canRankCreateRemove = data.GetBool(); tempRanks[i].canChangeInfo = data.GetBool(); tempRanks[i].canChangeAnnouncement = data.GetBool(); } Game.GetPlayer().GetGuildInfo().ranks = new List <Player.GuildInfo.Rank>(tempRanks); break; } case Player.GuildInfo.TimeInfo.max: { int memberCount = data.GetByte(); if (memberCount != Game.GetPlayer().GetGuildInfo().members.Count) { //todo error? } for (int i = 0; i < Game.GetPlayer().GetGuildInfo().members.Count; i++) { Game.GetPlayer().GetGuildInfo().members[i].isOnline = data.GetBool(); int rankId = data.GetInt(); Game.GetPlayer().GetGuildInfo().members[i].rank = Game.GetPlayer().GetGuildInfo().ranks.Find(x => x.id == rankId); } break; } default: { Debug.LogError("thefuck?"); break; } } steps++; } if (steps >= 10) { Debug.LogError("critical error happend in guildInfo Message. Maximum steps reached!"); } GuildUI.GuildMessageArrived(); break; } case NetworkMessage.Type.server_setGuild: { int currentId = Game.GetPlayer().GetGuildInfo().id; Game.GetPlayer().GetGuildInfo().id = data.GetInt(); if (Game.GetPlayer().GetGuildInfo().id == -1) { GuildUI.ShowGuild(false); } else if (Game.GetPlayer().GetGuildInfo().id != -1 && currentId == -1 && GuildUI.IsGuildVisible()) { GuildUI.ShowGuild(false); GuildUI.ShowGuild(true); } break; } case NetworkMessage.Type.server_guildListInfo: { Player.GuildInfo[] guildList = new Player.GuildInfo[data.GetShort()]; for (int i = 0; i < guildList.Length; i++) { guildList[i] = new Player.GuildInfo(); guildList[i].id = data.GetInt(); guildList[i].name = data.GetString(data.GetShort()); guildList[i].owner = data.GetString(data.GetByte()); } GuildUI.GuildListArrived(new List <Player.GuildInfo>(guildList)); break; } } }
public void Deserialize(NetDataReader reader) { GuildId = reader.GetInt(); LeaderCharacterId = reader.GetString(); }
public void OnNetworkReceiveUnconnected(NetEndPoint remoteEndPoint, NetDataReader reader, UnconnectedMessageType messageType) { Console.WriteLine("[Server] ReceiveUnconnected {0}. From: {1}. Data: {2}", messageType, remoteEndPoint, reader.GetString(100)); NetDataWriter wrtier = new NetDataWriter(); wrtier.Put("SERVER DISCOVERY RESPONSE :)"); Server.SendDiscoveryResponse(wrtier, remoteEndPoint); }
public void Deserialize(NetDataReader reader) { networkAddress = reader.GetString(); networkPort = reader.GetInt(); connectKey = reader.GetString(); }
public void OnNetworkReceiveUnconnected(NetEndPoint remoteEndPoint, NetDataReader reader, UnconnectedMessageType messageType) { Console.WriteLine("[Client] ReceiveUnconnected {0}. From: {1}. Data: {2}", messageType, remoteEndPoint, reader.GetString(100)); if (messageType == UnconnectedMessageType.DiscoveryResponse) { Client.Connect(remoteEndPoint); } }
public void Deserialize(NetDataReader reader) { id = reader.GetString(); email = reader.GetString(); }
public void Deserialize(NetDataReader reader) { Character1Id = reader.GetString(); Character2Id = reader.GetString(); }
public static DateTime GetDateTime(this NetDataReader reader) { return(DateTime.Parse(reader.GetString())); }
public void Deserialize(NetDataReader reader) { shouldDisconnect = reader.GetBool(); errorCode = reader.GetShort(); errorMessage = reader.GetString(); }
public void Deserialize(NetDataReader reader) { UserId = reader.GetString(); ChangeAmount = reader.GetInt(); }
public void Deserialize(NetDataReader reader) { peerType = (CentralServerPeerType)reader.GetByte(); extra = reader.GetString(); }