Beispiel #1
0
    async void Start()
    {
        Debug.Log("Room scene started");
        if (Application.isEditor && Application.isPlaying)
        {
            await TestLoginFlow.AttemptCreateRoom();
        }

        RoomNameLabel.text = Client.State().RoomName;
        RoomIdLabel.text   = Client.State().RoomId;

        var roomStateResponse = await Client.GetRoomState();

        if (roomStateResponse.IsStatusOk())
        {
            InitializePlayerListModel(roomStateResponse.Payload.GetRoomStateResponse);
        }
        // // subscribe to room change
        Client.OnRoomStateChange += OnRoomStateChange;
    }
Beispiel #2
0
        // Start is called before the first frame update
        async void Start()
        {
            if (Application.isEditor && Application.isPlaying)
            {
                await TestLoginFlow.AttemptStartGame();
            }
            // Start listen for messages
            Client.AddAction("animation", (AnimationPayload anim, Packet packet) =>
            {
                _ = AnimationDispatcher.HandleAnimation(anim.Animation);
            });

            Client.AddAction("announce_start_turn", (AnnounceStartTurnPayload payload, Packet packet) =>
            {
                bool isCurrentPlayerTurn = payload.Player.Equals(Client.State().GamePlayerId);

                if (isCurrentPlayerTurn)
                {
                    EventBus.StartCurrentPlayerTurn?.Invoke();
                }
            });

            Client.AddAction("announce_roll", (AnnounceRollPayload payload, Packet packet) => { });

            Client.AddAction("announce_pay_rent", (AnnouncePayRentPayload payload, Packet packet) => { });

            Client.AddAction("prompt_purchase", (PromptPurchaseRequest request, Packet packet) =>
            {
                EventBus.PromptPurchase?.Invoke(request, packet);
            });

            Client.AddAction("announce_purchase", (AnnouncePurchasePayload payload, Packet packet) =>
            {
                EventBus.PropertyChange?.Invoke(payload.Property, Players.Find(player => player.Id.Equals(payload.Player)));
            });

            Client.AddAction("announce_end_turn", (AnnounceEndTurnPayload payload, Packet packet) => { });

            Client.AddAction("announce_bankrupt", (AnnounceBankruptPayload payload, Packet packet) => { });

            Client.AddAction("announce_game_over", (AnnounceGameOverPayload payload, Packet packet) => { });

            Client.AddAction("announce_player_left", (AnnouncePlayerLeftPayload payload, Packet packet) => { });

            Client.AddPacketAction("prompt_chance_confirmation", (Packet packet) =>
            {
                EventBus.PromptChanceConfirmation?.Invoke(packet);
            });

            EventBus.DiceRolled       += OnDiceRolled;
            EventBus.LeaveRoom        += OnLeaveRoom;
            EventBus.PurchaseDecision += OnPurchaseDecision;
            EventBus.ConfirmChance    += OnConfirmChance;

            // Get initial game state
            Packet response = await Client.Request(RequestUtils.NewRequest("get_initial_state", Client.NewId));

            if (response.IsStatusOk() && response.Payload.ActionPayload.TryUnpack <GetInitialStateResponse>(out var payload))
            {
                SetupPlayers(payload);
            }
        }