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)); }
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)); }
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)); }
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); }
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); }
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); }