public override void Update(TimeSpan elapsed) { foreach (var player in World.Instance.Players) { BaseMessage message = new PositionMessage(GetVisibleEntities(player)); SendMessage(player, message); if (player.MapToUpdate) { message = GetMapUpdate(player); SendMessage(player, message); player.MapToUpdate = false; } if (player.TeamToUpdate) { player.RemoteConnection.Send(GetTeamUpdate(player)); player.TeamToUpdate = false; } } base.Update(elapsed); }
private void MessageReceived(IRemoteConnection sender, string message) { messageCount++; if (messageCount < 10) { Debug.Log("received " + message); } var prefix = "entities:"; if (message.StartsWith(prefix) && CurrentScene == "scene_map") { var notif = new PositionMessage(); notif.DeserializeArguments(message.Remove(0, prefix.Length)); foreach (var entity in notif.Entities) { MoveMessages.Enqueue(entity); } } prefix = "team:"; if (message.StartsWith(prefix)) { var teamStr = message.Remove(0, prefix.Length); var pokemonCount = teamStr.Split(',').Count(); Team = new List<Pokemon>(); for (int i = 0; i < pokemonCount; i++) { var pokemonStr = teamStr.Split(',')[i]; var id = Int32.Parse(pokemonStr.Split('.')[0]); var level = Int32.Parse(pokemonStr.Split('.')[1]); Team.Add(new Pokemon(id, level)); } } prefix = "map:"; if (message.StartsWith(prefix)) { Debug.Log("map received"); var map = new MapMessage(); map.DeserializeArguments(message.Remove(0, prefix.Length)); //Debug.Log(map); MapMessages.Enqueue(map); } prefix = "battlestart:"; if (message.StartsWith(prefix)) { Debug.Log("battle start received"); var battleStart = message.Remove(0, prefix.Length); BattleStartMessage battle = new BattleStartMessage(battleStart); BattleStartMessages.Enqueue(battle); } prefix = "battleaction:"; if (message.StartsWith(prefix)) { Debug.Log("battle action received"); var battleActionStr = message.Remove(0, prefix.Length); Debug.Log(battleActionStr); BattleActionMessage battleAction = new BattleActionMessage(battleActionStr); BattleActionMessages.Enqueue(battleAction); } }