void GenerateRoom(int[] mapArray) //Generate Room according to the map array { roomList = new List <GameObject>(); foreach (var item in mapArray.Select((v, i) => new { v, i })) { GameObject room = Instantiate(roomDictionary[item.v], new Vector3((item.i % mapWidth) * roomSpacing + 0.5f, 0, Mathf.Floor(item.i / mapHeight) * roomSpacing + 0.5f), Quaternion.identity); BattleRoomScript roomScript = room.GetComponent <BattleRoomScript>(); roomScript.thisRoomRaw = item.i % mapWidth; roomScript.thisRoomColumn = item.i / mapHeight; room.name = "Room " + item.i; room.GetComponent <BattleRoomScript>().changeType(item.v); room.transform.parent = this.transform; if (item.i == startPoint) //initialize player position to start room { player.transform.position = room.transform.position; DungeonManager.Ins.currentRoomNum = startPoint; } roomList.Add(room); } foreach (GameObject room in roomList) { BattleRoomScript roomScript = room.GetComponent <BattleRoomScript>(); roomScript.RightRoom = GetRoomByAxis(roomScript.thisRoomRaw + 1, roomScript.thisRoomColumn); roomScript.LeftRoom = GetRoomByAxis(roomScript.thisRoomRaw - 1, roomScript.thisRoomColumn); roomScript.UpRoom = GetRoomByAxis(roomScript.thisRoomRaw, roomScript.thisRoomColumn + 1); roomScript.DownRoom = GetRoomByAxis(roomScript.thisRoomRaw, roomScript.thisRoomColumn - 1); roomScript.hasLoaded = true; } }
/// <summary> /// 检查两个房间是否相邻 /// </summary> /// <param name="roomA"></param> /// <param name="roomB"></param> /// <returns></returns> bool judgeNerabyRoom(GameObject roomA, GameObject roomB) { bool flag = false; BattleRoomScript scriptA = roomA.GetComponent <BattleRoomScript>(); if (scriptA.LeftRoom == roomB) { flag = true; } if (scriptA.RightRoom == roomB) { flag = true; } if (scriptA.UpRoom == roomB) { flag = true; } if (scriptA.DownRoom == roomB) { flag = true; } return(flag); }
public virtual void TriggerPerk() { BattleRoomScript battleRoom = (BattleRoomScript)GameMainRecycle.RoomScripts.Group[typeof(BattleRoomScript).Name]; battleRoom.RoundResult.AppendLine(Describe); }