void InitDoor(ref List <GameObject> blockListTemp, ref GameObject blockTemp, int sessionRow, int sessionCol, DoorDirInRoom doorDirInRoom, RoomType roomType) { blockListTemp = tilePrefabList[(int)BlockType.door].tilePrfabs; blockTemp = Instantiate <GameObject>(blockListTemp[0]); DoorController doorController = blockTemp.transform.Find("Door").GetComponent <DoorController>(); doorController.doorDir = doorDirInRoom; sessionArray[sessionRow, sessionCol].doorsInRoomDic.Add(doorDirInRoom, blockTemp); switch (roomType) { case RoomType.town: case RoomType.camp: case RoomType.eventRoom: doorController.DoorOpen(); break; case RoomType.monster: case RoomType.boss: break; default: break; } }
void ParsingMapTextFile() { Dictionary <DoorDirInRoom, List <string[, ]> > roomDicTemp = new Dictionary <DoorDirInRoom, List <string[, ]> >(); string[] temp; string[] mapTextTempArray; string[,] roomTextTempArray; List <string[]> roomStringTemp = new List <string[]>(); DoorDirInRoom roomType = DoorDirInRoom.none; for (int i = 0; i < (int)RoomType.bridge; i++) //텍스트 파일 5개 돌기 { mapTextTempArray = mapTextFileList[i].text.Split('\n'); //각각의 텍스트파일 줄별로 파싱 roomDicTemp = new Dictionary <DoorDirInRoom, List <string[, ]> >(); roomStringTemp = new List <string[]>(); for (int j = 0; j < (int)DoorDirInRoom.end; j++)//문에 따라서 맵데이터를 저장 할 변수 생성 { roomDicTemp.Add((DoorDirInRoom)j, new List <string[, ]>()); } for (int index = 0; index < mapTextTempArray.Length - 1; index++) { if (mapTextTempArray[index].Trim() == "") { continue; } if (mapTextTempArray[index][0] == '#') { temp = mapTextTempArray[index].Split('_'); SetDoorDirInRoomType(temp[1], out roomType); continue; } if (mapTextTempArray[index][0] == '@') { roomTextTempArray = new string[roomStringTemp.Count, roomStringTemp[0].Length]; int row = 0; int col = 0; foreach (var strArray in roomStringTemp) { foreach (var block in strArray) { roomTextTempArray[row, col] = block; col++; } col = 0; row++; } roomDicTemp[roomType].Add(roomTextTempArray); roomType = DoorDirInRoom.none; roomStringTemp.Clear(); continue; } roomStringTemp.Add(mapTextTempArray[index].Trim().Split(' ')); } roomList.Add(roomDicTemp); } }
void SetDoorDirInRoomType(string roomDirStr, out DoorDirInRoom roomType) { switch (roomDirStr) { case "R": roomType = DoorDirInRoom.right; break; case "D": roomType = DoorDirInRoom.down; break; case "DR": roomType = DoorDirInRoom.downRight; break; case "L": roomType = DoorDirInRoom.left; break; case "LR": roomType = DoorDirInRoom.leftRight; break; case "DL": roomType = DoorDirInRoom.downLeft; break; case "DLR": roomType = DoorDirInRoom.downLeftRight; break; case "U": roomType = DoorDirInRoom.up; break; case "UR": roomType = DoorDirInRoom.upRight; break; case "UD": roomType = DoorDirInRoom.upDown; break; case "UDR": roomType = DoorDirInRoom.upDownRight; break; case "UL": roomType = DoorDirInRoom.upLeft; break; case "ULR": roomType = DoorDirInRoom.upLeftRight; break; case "UDL": roomType = DoorDirInRoom.upDownLeft; break; case "UDLR": roomType = DoorDirInRoom.upDownLeftRight; break; default: roomType = DoorDirInRoom.none; break; } }