Beispiel #1
0
        void Sync()
        {
            if (players.Count == 0)
            {
                return;
            }

            var movedPlayers = new List <RPC.Player>();

            lock (players)
            {
                foreach (var player in players.Values)
                {
                    if (!player.isPositionChanged)
                    {
                        continue;
                    }

                    var playerRpc = new RPC.Player(player.Uid, player.Position, player.Score, player.Scale);
                    movedPlayers.Add(playerRpc);
                    player.isPositionChanged = false;
                }
            }

            if (movedPlayers.Count == 0)
            {
                return;
            }

            var syncRpc  = new Sync(new SyncPayload(movedPlayers));
            var syncJson = JsonConvert.SerializeObject(syncRpc);

            broadcast(syncJson);
        }
Beispiel #2
0
        void PlayerSmallerTimer()
        {
            var random = new Random();
            var timer  = new Timer(100);

            timer.Elapsed += (_, __) =>
            {
                if (players.Count == 0)
                {
                    return;
                }

                var movedPlayers = new List <RPC.Player>();
                lock (players)
                {
                    foreach (var player in players.Values)
                    {
                        if (player.Scale <= 1)
                        {
                            continue;
                        }
                        player.Scale -= 0.005f;
                        if (player.Scale < 1.0f)
                        {
                            player.Scale = 1.0f;
                        }

                        var playerRpc = new RPC.Player(player.Uid, player.Position, player.Score, player.Scale);
                        movedPlayers.Add(playerRpc);
                        player.isPositionChanged = false;
                    }
                }

                if (movedPlayers.Count != 0)
                {
                    Console.WriteLine("<< Smaller");
                    var syncRpc  = new Sync(new SyncPayload(movedPlayers));
                    var syncJson = JsonConvert.SerializeObject(syncRpc);
                    broadcast(syncJson);
                }
            };
            timer.Start();
        }