Exemplo n.º 1
0
    public async Task Process(GamePointer gp, List<PlayerState> players, BufferBlock<UpdatePacket> sendChannel)
    {

      players.Add(_player);

      var squares = gp.Game.GetSquares().Select(x => new SquareDTO(x)).ToArray();

      //FIXME: right now the order is important here, lest we lack player color information when rendering flags
      var json2 = JSON.Serialize<PlayerState[]>(players.ToArray());
      var packet2 = new UpdatePacket()
      {
        Type = "player",
        Data = json2
      };
      var j2 = JSON.Serialize<UpdatePacket>(packet2);
      await _uc.SendAsync(j2);


      var json = JSON.Serialize<SquareDTO[]>(squares);
      var packet = new UpdatePacket()
      {
        Type = "square",
        Data = json
      };

      var j = JSON.Serialize<UpdatePacket>(packet);
      await _uc.SendAsync(j);



    }
Exemplo n.º 2
0
    public async Task Process(GamePointer gamePointer, List<PlayerState> players, BufferBlock<UpdatePacket> sendChannel)
    {
      if (_player.Dead)
      {
        return;
      }

      List<Square> changedSquares = gamePointer.Game.Update(_command, _player);
      if (changedSquares.Count > 0)
      {
        var json = JSON.Serialize<Square[]>(changedSquares.ToArray());
        var packet = new UpdatePacket()
        {
          Type = "square",
          Data = json
        };
        await sendChannel.SendAsync(packet);
      }

      var player = JSON.Serialize<PlayerState>(_player);
      var pp = new UpdatePacket()
      {
        Type = "player",
        Data = player
      };
      await sendChannel.SendAsync(pp);
    }
Exemplo n.º 3
0
    static async Task ProcessWebSocket(Websocket ws, ConnectionHub connectionHub, BufferBlock<GameTask> gameTasks)
    {
      var uc = new UserConnection(ws);
      await connectionHub.Add(uc);

      var hash = Guid.NewGuid().ToString();
      var player = new PlayerState() { Name = "player", Color = "blue", Hash = hash };


      var first = new PlayerInit() { Hash = hash, Height = 0, Width = 0 };
      var json = JSON.Serialize(first);

      var initPacket = new UpdatePacket() { Type = "init", Data = json };
      var ip = JSON.Serialize(initPacket);
      await uc.SendAsync(ip);

      ReadWebsocket(ws, gameTasks, uc, player);

      var initTask = new InitTask(uc, player);
      await gameTasks.SendAsync(initTask);

      await uc.Worker();
      Console.WriteLine("disconnected");
      
      //FIXME: this is never pushed to currently connected clients
      player.Dead = true;
      await connectionHub.Remove(uc);
    }