Exemple #1
0
    public void AddRoomItem(string roomName)
    {
        // create game object

        var go       = UiHelper.AddChild(Rooms, RoomItemTemplate);
        var image    = go.GetComponent <Image>();
        var nameText = go.transform.FindChild("NameText").GetComponent <Text>();

        image.enabled = false;
        nameText.text = roomName;

        // position

        var rt   = go.GetComponent <RectTransform>();
        var posy = rt.localPosition.y - (_roomItems.Count * RoomItemHeight);

        rt.localPosition = new Vector3(rt.localPosition.x, posy, rt.localPosition.z);

        // bind click event

        var trigger = new EventTrigger.TriggerEvent();

        trigger.AddListener(_ => OnRoomItemClick(roomName));
        var entry = new EventTrigger.Entry {
            callback = trigger, eventID = EventTriggerType.PointerClick
        };

        go.GetComponent <EventTrigger>().triggers.Add(entry);

        go.SetActive(true);
        _roomItems.Add(Tuple.Create(roomName, go));
    }
Exemple #2
0
    public UiDialogHandle ShowModalPrefab(GameObject prefab, object param = null,
                                          ShowModalOption option          = ShowModalOption.BlackCurtain)
    {
        _logger.InfoFormat("ShowModalPrefab({0})", prefab.name);

        var dialogGo = UiHelper.AddChild(_dialogRoot.gameObject, prefab);

        var dialog = dialogGo.GetComponent <UiDialog>();

        return(ShowModalInternal(dialog, true, param, option));
    }
Exemple #3
0
    public UiDialogHandle ShowModalTemplate(GameObject gameObject, object param = null,
                                            ShowModalOption option = ShowModalOption.BlackCurtain)
    {
        _logger.InfoFormat("ShowModalTemplate({0})", gameObject.transform.name);

        var dialogGo = UiHelper.AddChild(_dialogRoot.gameObject, gameObject);

        dialogGo.SetActive(true);

        var dialog = dialogGo.GetComponent <UiDialog>();

        return(ShowModalInternal(dialog, true, param, option));
    }
Exemple #4
0
    public override void OnShow(object param)
    {
        var arg = (Argument)param;

        // Show Name of Room

        NameInput.text = arg.CurrentRoomName ?? "";

        // Clear Room List

        foreach (var room in _roomItems)
        {
            GameObject.Destroy(room);
        }
        _roomItems.Clear();

        // Show Room List

        var y = 0f;

        foreach (var roomName in arg.RoomList)
        {
            var goItem = UiHelper.AddChild(RoomList.content.gameObject, RoomListTemplate);
            goItem.GetComponent <Text>().text = roomName;
            var rt = goItem.GetComponent <RectTransform>();

            var posy = rt.localPosition.y - y;
            rt.localPosition = new Vector3(rt.localPosition.x, posy, rt.localPosition.z);
            y += rt.rect.height;

            var localRoomName = roomName;
            var trigger       = new EventTrigger.TriggerEvent();
            trigger.AddListener(_ => OnRoomItemClick(localRoomName));
            var entry = new EventTrigger.Entry {
                callback = trigger, eventID = EventTriggerType.PointerClick
            };
            goItem.GetComponent <EventTrigger>().triggers.Add(entry);

            goItem.SetActive(true);
            _roomItems.Add(goItem);
        }

        RoomList.content.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, y);
        RoomListTemplate.SetActive(false);
    }
Exemple #5
0
    private void BuildGrids()
    {
        for (int y = 0; y < Rule.BoardSize; y++)
        {
            for (int x = 0; x < Rule.BoardSize; x++)
            {
                var grid = UiHelper.AddChild(gameObject, GridTemplate.gameObject);
                grid.transform.SetParent(transform, false);
                grid.transform.localPosition = new Vector3((x * 210) - 210, (y * -210) + 210, 0);

                var et     = new EventTrigger.TriggerEvent();
                var localX = x;
                var localY = y;
                et.AddListener(_ => OnGridClick(localX, localY));
                grid.GetComponent <EventTrigger>().triggers[0].callback = et;

                _gridRects[x, y] = grid.GetComponent <RectTransform>();

                SetMark(x, y, 0);
            }
        }
        GridTemplate.gameObject.SetActive(false);
    }
Exemple #6
0
    private IEnumerator ProcessEnterRoom(UserRef user, string roomName)
    {
        // Spawn new room item

        var go        = UiHelper.AddChild(ContentPanel, ChatPanelTemplate);
        var chatPanel = go.GetComponent <ChatPanel>();

        // Try to enter the room

        var observer = G.Communicator.ObserverRegistry.Create <IRoomObserver>(chatPanel);

        observer.GetEventDispatcher().Pending      = true;
        observer.GetEventDispatcher().KeepingOrder = true;
        var t1 = user.EnterRoom(roomName, observer);

        yield return(t1.WaitHandle);

        if (t1.Status != TaskStatus.RanToCompletion)
        {
            G.Communicator.ObserverRegistry.Remove(observer);
            DestroyObject(go);
            UiMessageBox.Show("Enter room error:\n" + t1.Exception);
            yield break;
        }

        // Spawn new room item

        var occupant = (OccupantRef)t1.Result.Item1;

        if (occupant.IsChannelConnected() == false)
        {
            yield return(occupant.ConnectChannelAsync().WaitHandle);
        }
        chatPanel.SetOccupant(occupant);
        chatPanel.SetRoomInfo(t1.Result.Item2);
        chatPanel.ExitButtonClicked = () => OnRoomExitClick(roomName);

        var item = new RoomItem
        {
            ChatPanel = chatPanel,
            Occupant  = occupant,
            Observer  = (RoomObserver)observer,
            Channel   = (IChannel)occupant.RequestWaiter
        };

        _roomItemMap.Add(roomName, item);
        ControlPanel.AddRoomItem(roomName);
        observer.GetEventDispatcher().Pending = false;

        item.Channel.StateChanged += (_, state) =>
        {
            ChannelEventDispatcher.Post(o =>
            {
                if (state == ChannelStateType.Closed)
                {
                    if (_roomItemMap.ContainsKey(roomName))
                    {
                        OnRoomExitClick(roomName);
                    }
                }
            });
        };

        // Select

        OnRoomItemClick(roomName);
    }