private void ClickTVYaoKongRightBtEvent(pcvr.ButtonState val) { if (val == pcvr.ButtonState.UP) { return; } m_ExitType = ExitEnum.QueDing; QueDingUI.mainTexture = QueDingImg[1]; QuXiaoUI.mainTexture = QuXiaoImg[0]; QueDingUI.transform.localScale = m_BigScale; QuXiaoUI.transform.localScale = m_SmallScale; SetAcitveBtFlash(); }
//static SSExitGameUI _Instance; //public static SSExitGameUI GetInstance() //{ // return _Instance; //} public void Init() { m_ExitType = ExitEnum.QuXiao; SSUIRoot.GetInstance().m_ExitUICom = this; QueDingUI.mainTexture = QueDingImg[0]; QuXiaoUI.mainTexture = QuXiaoImg[1]; SetAcitveBtFlash(); QueDingUI.transform.localScale = m_SmallScale; QuXiaoUI.transform.localScale = m_BigScale; //InputEventCtrl.GetInstance().ClickTVYaoKongEnterBtEvent += ClickTVYaoKongEnterBtEvent; //InputEventCtrl.GetInstance().ClickTVYaoKongExitBtEvent += ClickTVYaoKongExitBtEvent; //InputEventCtrl.GetInstance().ClickTVYaoKongLeftBtEvent += ClickTVYaoKongLeftBtEvent; //InputEventCtrl.GetInstance().ClickTVYaoKongRightBtEvent += ClickTVYaoKongRightBtEvent; }
public void Init() { Debug.Log("SSExitGameUI::Init..."); m_ExitType = ExitEnum.QuXiao; QueDingUI.mainTexture = QueDingImg[0]; QuXiaoUI.mainTexture = QuXiaoImg[1]; SetAcitveBtFlash(); QueDingUI.transform.localScale = m_SmallScale; QuXiaoUI.transform.localScale = m_BigScale; InputEventCtrl.GetInstance().mListenPcInputEvent.ClickTVYaoKongEnterBtEvent += ClickTVYaoKongEnterBtEvent; InputEventCtrl.GetInstance().mListenPcInputEvent.ClickTVYaoKongExitBtEvent += ClickTVYaoKongExitBtEvent; InputEventCtrl.GetInstance().mListenPcInputEvent.ClickTVYaoKongLeftBtEvent += ClickTVYaoKongLeftBtEvent; InputEventCtrl.GetInstance().mListenPcInputEvent.ClickTVYaoKongRightBtEvent += ClickTVYaoKongRightBtEvent; }
public void Init() { //创建退出游戏对话框事件. SSGameDataCtrl.GetInstance().m_SSUIRoot.CreatExitGameUIEvent(); m_ExitType = ExitEnum.QuXiao; QueDingUI.mainTexture = QueDingImg[0]; QuXiaoUI.mainTexture = QuXiaoImg[1]; SetAcitveBtFlash(); QueDingUI.transform.localScale = m_SmallScale; QuXiaoUI.transform.localScale = m_BigScale; InputEventCtrl.GetInstance().ClickTVYaoKongEnterBtEvent += ClickTVYaoKongEnterBtEvent; InputEventCtrl.GetInstance().ClickTVYaoKongExitBtEvent += ClickTVYaoKongExitBtEvent; InputEventCtrl.GetInstance().ClickTVYaoKongLeftBtEvent += ClickTVYaoKongLeftBtEvent; InputEventCtrl.GetInstance().ClickTVYaoKongRightBtEvent += ClickTVYaoKongRightBtEvent; }
private void LockDoorToNextRoom(int index) { if (index >= nodes.Count - 2) { throw new System.Exception($"index must be inferior to {nodes.Count - 2}"); } Vector2 v = nodes[index + 1].position - nodes[index].position; ExitEnum dirNode1 = ExitEnum.Down; ExitEnum dirNode2 = ExitEnum.Down; if (v.y > 0f) { dirNode1 = ExitEnum.Up; dirNode2 = ExitEnum.Down; } else if (v.y < 0f) { dirNode1 = ExitEnum.Down; dirNode2 = ExitEnum.Up; } else if (v.x > 0f) { dirNode1 = ExitEnum.Right; dirNode2 = ExitEnum.Left; } else if (v.y < 0f) { dirNode1 = ExitEnum.Left; dirNode2 = ExitEnum.Right; } roomsExit[index].SetExits(new List <ExitEnum>() { dirNode1 }, Door.STATE.CLOSED); roomsExit[index + 1].SetExits(new List <ExitEnum>() { dirNode2 }, Door.STATE.CLOSED); }
private List <Node> GenerateListOfNode(Node o, List <Node> nodeList, int nbOfRooms, bool Main = false) { List <Node> nln = new List <Node>() { o }; List <Node> usedPos = new List <Node>(nodeList); List <Connection> nlc = new List <Connection>(tconnections); int _nbOfRoomInSameDirection = nbOfRoomInSameDirection; for (int i = 0; i < nbOfRooms - 1; i++) { // info on current node Vector2Int pos = new Vector2Int(nln[i].position.x, nln[i].position.y); // place current node + 1 ExitEnum dir = ExitEnum.Down; // Set or Read nln[i] exit direction if (i == 0) { List <ExitEnum> pp = new List <ExitEnum>(possibleExits); if (o.exits.Contains(ExitEnum.Up) || CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y + 1))) { pp.Remove(ExitEnum.Up); } if (o.exits.Contains(ExitEnum.Down) || CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y - 1))) { pp.Remove(ExitEnum.Down); } if (o.exits.Contains(ExitEnum.Left) || CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x - 1, pos.y))) { pp.Remove(ExitEnum.Left); } if (o.exits.Contains(ExitEnum.Right) || CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x + 1, pos.y))) { pp.Remove(ExitEnum.Right); } if (pp.Count == 0) { Debug.LogError("no path available from origin"); return(nodeList); } dir = pp[Random.Range(0, pp.Count)]; o.exits.Add(dir); } else { if (nln[i].exits.Contains(ExitEnum.Up) && !CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y + 1))) { dir = ExitEnum.Up; } if (nln[i].exits.Contains(ExitEnum.Down) && !CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y - 1))) { dir = ExitEnum.Down; } if (nln[i].exits.Contains(ExitEnum.Left) && !CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x - 1, pos.y))) { dir = ExitEnum.Left; } if (nln[i].exits.Contains(ExitEnum.Right) && !CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x + 1, pos.y))) { dir = ExitEnum.Right; } } // Place the new node ExitEnum exitToAddToNewNode = ExitEnum.Down; switch (dir) { case ExitEnum.Up: pos = new Vector2Int(pos.x, pos.y + 1); exitToAddToNewNode = ExitEnum.Down; break; case ExitEnum.Down: pos = new Vector2Int(pos.x, pos.y - 1); exitToAddToNewNode = ExitEnum.Up; break; case ExitEnum.Left: pos = new Vector2Int(pos.x - 1, pos.y); exitToAddToNewNode = ExitEnum.Right; break; case ExitEnum.Right: pos = new Vector2Int(pos.x + 1, pos.y); exitToAddToNewNode = ExitEnum.Left; break; } // Select Exit Direction of the new node List <ExitEnum> pathToRemove = new List <ExitEnum>(); ExitEnum[] pe = new ExitEnum[0]; bool isGoingForward = false; if (_nbOfRoomInSameDirection != 0 && i != 0) { isGoingForward = true; switch (dir) { case ExitEnum.Up: if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y + 1))) { isGoingForward = false; } break; case ExitEnum.Down: if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y - 1))) { isGoingForward = false; } break; case ExitEnum.Left: if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x - 1, pos.y))) { isGoingForward = false; } break; case ExitEnum.Right: if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x + 1, pos.y))) { isGoingForward = false; } break; } if (isGoingForward) { pe = new ExitEnum[] { dir }; _nbOfRoomInSameDirection -= 1; } } if (!isGoingForward) { // prevent overlaping between nodes if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y + 1))) // up { pathToRemove.Add(ExitEnum.Up); } if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x, pos.y - 1))) // down { pathToRemove.Add(ExitEnum.Down); } if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x + 1, pos.y))) // right { pathToRemove.Add(ExitEnum.Right); } if (CheckIfNodeListContainPos(usedPos, new Vector2Int(pos.x - 1, pos.y))) // left { pathToRemove.Add(ExitEnum.Left); } pathToRemove.Add(dir); // retrieve possible exit for new node pe = possibleExits.Except(pathToRemove).ToArray(); // restart if path stucked if (pe.Length == 0) { Debug.LogError("Hallway cannot continue"); return(nodeList); } _nbOfRoomInSameDirection = Random.Range(1, nbOfRoomInSameDirection + 1); } // create new node Node n = new Node(); n.position = pos; n.exits.Add(exitToAddToNewNode); if (i != nbOfRooms - 2) { n.exits.Add(pe[Random.Range(0, pe.Length)]); } nln.Add(n); usedPos.Add(n); nlc.Add(new Connection(new Node[] { nln[i], nln[i + 1] })); } nln.Remove(o); tconnections = AddToList(tconnections, nlc.Except(tconnections).ToList()); return(AddToList(nodeList, nln)); }