public float getDoorY(roominfo info, constant.Direction dir) { switch (dir) { case constant.Direction.east: return(0.5f); break; case constant.Direction.north: return(0); break; case constant.Direction.south: return(1); break; case constant.Direction.west: return(0.5f); break; } return(0); }
public roominfo getCurRoom() { if (mMapInfo == null) { return(null); } roominfo roomInfo = mMapInfo.getCurRoom(); return(roomInfo); }
// Update is called once per frame void Update() { maplogic logic = constant.getMapLogic(); roominfo info = logic.getCurRoom(); if (info == null) { return; } tk2dTextMesh text = this.gameObject.GetComponent <tk2dTextMesh> (); text.text = "" + info.mId; }
public roominfo getNextMainRoomInfo(roominfo info) { if (info.mDoorInfos != null) { foreach (doorinfo doorInfo in info.mDoorInfos) { if (doorInfo.mMain) { return(getRoomInfo(doorInfo.mNextRoomId)); } } } return(null); }
void enterFirstRoom() { //GameObject.DontDestroyOnLoad (this.gameObject); //GameObject role = GameObject.FindGameObjectWithTag (constant.TAG_PLAYER); //DontDestroyOnLoad (role); GameObject role = GameObject.FindGameObjectWithTag(constant.TAG_PLAYER); if (role != null) { GameObject.DestroyImmediate(role); } roominfo roomInfo = mMapInfo.getFirstRoom(); // mapfactory.getNextRoom (mMapInfo, doorInfo); loadRoom(roomInfo); }
public void initCharPos() { roominfo roomInfo = mMapInfo.getCurRoom(); float x = 0; float y = 0; doorinfo doorInfo = roomInfo.getDoorInfo(roomInfo.mEnterDoorId); if (doorInfo != null) { //Debug.Log ("roomInfoEnterDoorId: " + roomInfo.mEnterDoorId + ",doorInfo:" + doorInfo.mId); //Debug.Log ("doorInfo.mDir:" + doorInfo.mDir); switch (doorInfo.mDir) { case constant.Direction.east: x = 4; break; case constant.Direction.west: x = -4; break; case constant.Direction.south: y = -4; break; case constant.Direction.north: y = 4; break; } GameObject door = getDoorTouchObj(doorInfo.mId); if (door != null) { GameObject role = GameObject.FindGameObjectWithTag(constant.TAG_PLAYER); role.gameObject.transform.position = new Vector3(door.transform.position.x + x, door.transform.position.y + y, -1); } } else { //Debug.Log("error roomInfo.mEnterDoorId:" + roomInfo.mEnterDoorId ); } }
public void initRoomInfo() { Dictionary <string, constant.Direction> dic = new Dictionary <string, constant.Direction>(); dic.Add("UpRoom", constant.Direction.south); dic.Add("DownRoom", constant.Direction.north); dic.Add("LeftRoom", constant.Direction.east); dic.Add("RightRoom", constant.Direction.west); roominfo roomInfo = mMapInfo.getCurRoom(); List <doorinfo> doorinfos = roomInfo.mDoorInfos; foreach (KeyValuePair <string, constant.Direction> pair in dic) { GameObject[] objs = GameObject.FindGameObjectsWithTag(pair.Key); if (objs != null) { foreach (GameObject obj in objs) { char_enter_script com = obj.GetComponent <char_enter_script>(); com.mDir = pair.Value; //Debug.Log("obj:" + obj.name); room_property pro = obj.GetComponent <room_property>(); //Debug.Log ("pro:" + pro.mX + "," + pro.mY + "," + (pro.mDoorInfo)); foreach (doorinfo info in doorinfos) { //Debug.Log ("info:" + info.mX + "," + info.mY); if (pro.mX == info.mX && pro.mY == info.mY) { //Debug.Log("add roominfo"); pro.mDoorInfo = info; //Debug.Log ("info:" + info); //Debug.Log ("pro.mDoorInfo:" + pro.mDoorInfo.mX); if (info.mNextRoomId != 0) { GameObject wall = obj.transform.parent.transform.Find("wall").gameObject; wall.SetActive(false); } } } } } } initRoomSceneInfo(roomInfo); }
public mapinfo getFirstMap() { mapinfo mapInfo = new mapinfo(); mapInfo.mRoomInfos = new List <roominfo> (); roominfo roomInfo = new roominfo(); roomInfo.roomH = 1; roomInfo.roomW = 1; roomInfo.roomX = 4; roomInfo.roomY = 3; roomInfo.mSceneIndex = 0; roomInfo.mId = 1; roomInfo.mDoorInfos = new List <doorinfo>(); { doorinfo doorInfo = new doorinfo(); doorInfo.mId = 1; doorInfo.mDir = constant.Direction.south; doorInfo.mNextDoorId = 2; doorInfo.mNextRoomId = 1; doorInfo.mX = 0.5f; doorInfo.mY = 1; roomInfo.mDoorInfos.Add(doorInfo); } { doorinfo doorInfo = new doorinfo(); doorInfo.mId = 2; doorInfo.mDir = constant.Direction.north; doorInfo.mNextDoorId = 1; doorInfo.mNextRoomId = 1; doorInfo.mX = 0.5f; doorInfo.mY = 0; roomInfo.mDoorInfos.Add(doorInfo); } mapInfo.mRoomInfos.Add(roomInfo); mapInfo.mCurRoomId = 1; return(mapInfo); }
public List <constant.Direction> getCanUseDirs(roominfo roomInfo) { List <constant.Direction> dirs = getRemainDirs(); List <constant.Direction> nextDirs = roomInfo.getRemainDirs(); List <constant.Direction> getDirs = new List <constant.Direction> (); foreach (constant.Direction dir in dirs) { foreach (constant.Direction nextDir in nextDirs) { if (constant.Equals(dir, constant.getOppsiteDir(nextDir))) { getDirs.Add(dir); break; } } } return(getDirs); }
public void enterRoom(GameObject door, GameObject role) { doorinfo doorInfo = door.GetComponent <room_property>().mDoorInfo; //Debug.Log ("enterRoom doorInfo:" + doorInfo.mX + "," // + doorInfo.mY + "," // + doorInfo.mDir + "," // + doorInfo.mNextRoomId + "," // + doorInfo.mNextDoorId ); role.gameObject.rigidbody.velocity = new Vector3(0, 0, 0); //role.gameObject.transform.position = new Vector3 (-6, 0, -1); //char_enter_script enter = door.GetComponent<char_enter_script> (); //Debug.Log ("enterRoom dir:" + enter.mDir); //GameObject.DontDestroyOnLoad (this.gameObject); GameObject.DontDestroyOnLoad(role); roominfo roomInfo = constant.getMapFactory().getNextRoom(mMapInfo, doorInfo); loadRoom(roomInfo); }
public void openDoor() { GameObject[] doors = GameObject.FindGameObjectsWithTag("normalDoors"); roominfo info = constant.getMapLogic().getCurRoom(); //Debug.Log ("openDoor"); foreach (GameObject door in doors) { GameObject doorTouch = door.transform.parent.Find("door_touch").gameObject; room_property pro = doorTouch.GetComponent <room_property>(); if (pro.mDoorInfo != null && pro.mDoorInfo.hasNext() && info.mEnterDoorId != pro.mDoorInfo.mId) { tk2dSpriteAnimator ani = door.GetComponent <tk2dSpriteAnimator>(); //Debug.Log("openDoor:" + door.name); BoxCollider box = ani.gameObject.GetComponent <BoxCollider> (); if (!box.isTrigger) { ani.Play("open"); ani.AnimationCompleted = playOpenDoorAni; } } } }
//生成房间的道具或者怪物的prefabs的gameobject public void initRoomSceneInfo(roominfo info) { //Debug.Log ("info.mItemPrefabs:" +info.mItemPrefabs.Count); //Debug.Log ("info.mMonsterPrefabs:" +info.mMonsterPrefabs.Count); SceneTemplate scentemplate = constant.getMapFactory().getSceneTemplate(info.mSceneIndex); if (scentemplate.ScenePrefab != null) { GameObject clone = (GameObject)GameObject.Instantiate(Resources.Load(scentemplate.ScenePrefab), new Vector3(0, 0, 0), Quaternion.identity); } foreach (KeyValuePair <itemtemplate, Vector3> pair in info.mItemPrefabs) { Vector3 v = pair.Value; GameObject clone = (GameObject)GameObject.Instantiate(Resources.Load(pair.Key.PrefabPath), v, Quaternion.identity); } foreach (KeyValuePair <monstertemplate, Vector3> pair in info.mMonsterPrefabs) { Vector3 v = pair.Value; GameObject clone = (GameObject)GameObject.Instantiate(Resources.Load(pair.Key.PrefabPath), v, Quaternion.identity); } }
public float getRoomInfoFAcc() { roominfo info = getCurRoom(); return(info.mFAcc); }
public monstertemplate getRandomTemplate(roominfo roomInfo, mapinfo mapInfo) { int index = Random.Range(0, mPrefabs.Length); return(mPrefabs [index]); }
void loadRoom(roominfo info) { //Debug.Log ("enterRoom " + info.mId); Application.LoadLevel(info.mSceneIndex); }
public mapinfo getRandomMap(maplogic logic) { mapinfo mapInfo = new mapinfo(); mapInfo.mRoomInfos = new List <roominfo> (); int roomNum = logic.getFloorTotalRoomNum(); int itemRoomNum = roomNum / 4 + (Random.Range(-1, 1)); if (itemRoomNum <= 0) { itemRoomNum = 1; } int roomId = 1; int doorId = 1; for (int i = 0; i < roomNum; ++i) { roominfo roomInfo = new roominfo(); roomInfo.roomH = 1; roomInfo.roomW = 1; roomInfo.mRoomType = constant.RoomType.Monster; if (i == 0) { roomInfo.mRoomType = constant.RoomType.Start; } if (i == roomNum - 1) { roomInfo.mIsBossRoom = true; } roomInfo.mSceneIndex = 2; roomInfo.mId = roomId; ++roomId; roomInfo.mDoorInfos = new List <doorinfo>(); //左边门 if (i > 0) { doorinfo doorInfo = new doorinfo(); doorInfo.mId = doorId; ++doorId; doorInfo.mDir = constant.Direction.east; doorInfo.mNextDoorId = doorId - 2; doorInfo.mNextRoomId = roomId - 2; doorInfo.mX = 0f; doorInfo.mY = 0.5f; roomInfo.mDoorInfos.Add(doorInfo); } //右边门 if (i != roomNum - 1) { doorinfo doorInfo = new doorinfo(); doorInfo.mId = doorId; ++doorId; doorInfo.mDir = constant.Direction.west; doorInfo.mNextDoorId = doorId; doorInfo.mNextRoomId = roomId; doorInfo.mX = 1f; doorInfo.mY = 0.5f; doorInfo.mMain = true; roomInfo.mDoorInfos.Add(doorInfo); } mapInfo.mRoomInfos.Add(roomInfo); } List <int> mMonsterRoomIds = new List <int>(); for (int i = 1; i < roomId - 1; ++i) { mMonsterRoomIds.Add(i); } //创建几个到道具房间 for (int i = 0; i < itemRoomNum; ++i) { //随机选择一个房间 int nextRoomIndex = Random.Range(0, mMonsterRoomIds.Count - 1); int nextRoomId = mMonsterRoomIds[nextRoomIndex]; mMonsterRoomIds.RemoveAt(nextRoomIndex); roominfo nextRoomInfo = null; for (int j = 0; j < mapInfo.mRoomInfos.Count; ++j) { roominfo childInfo = mapInfo.mRoomInfos[j]; if (childInfo.mId == nextRoomId) { nextRoomInfo = childInfo; break; } } if (nextRoomInfo != null) { roominfo roomInfo = new roominfo(); roomInfo.roomH = 1; roomInfo.roomW = 1; roomInfo.mSceneIndex = 2; roomInfo.mRoomType = constant.RoomType.Item; roomInfo.mId = roomId; ++roomId; roomInfo.mDoorInfos = new List <doorinfo>(); { //随机选择一个门 List <constant.Direction> dirs = nextRoomInfo.getRemainDirs(); constant.Direction enterDir = dirs[Random.Range(0, dirs.Count - 1)]; Debug.Log("随机选择一个门:" + enterDir); //加一个门给monster房间 { doorinfo doorInfo = new doorinfo(); doorInfo.mId = doorId; ++doorId; doorInfo.mDir = enterDir; doorInfo.mNextDoorId = doorId; doorInfo.mNextRoomId = roomInfo.mId; //doorInfo.mX = 1f; //doorInfo.mY = 0.5f; doorInfo.mX = getDoorX(nextRoomInfo, doorInfo.mDir); doorInfo.mY = getDoorY(nextRoomInfo, doorInfo.mDir); nextRoomInfo.mDoorInfos.Add(doorInfo); } //加一个门给item房间指向上一个monster房间 { doorinfo doorInfo = new doorinfo(); doorInfo.mId = doorId; ++doorId; doorInfo.mDir = constant.getOppsiteDir(enterDir); //constant.Direction.west; doorInfo.mNextDoorId = doorId - 2; doorInfo.mNextRoomId = nextRoomInfo.mId; doorInfo.mX = getDoorX(roomInfo, doorInfo.mDir); doorInfo.mY = getDoorY(roomInfo, doorInfo.mDir); roomInfo.mDoorInfos.Add(doorInfo); } } { roominfo nextNextRoomInfo = mapInfo.getNextMainRoomInfo(nextRoomInfo); //随机选择一个门 List <constant.Direction> dirs = roomInfo.getCanUseDirs(nextNextRoomInfo); constant.Direction enterDir = dirs[Random.Range(0, dirs.Count - 1)]; //加一个门给item房间指向下一个monster房间 { doorinfo doorInfo = new doorinfo(); doorInfo.mId = doorId; ++doorId; doorInfo.mDir = enterDir; doorInfo.mNextDoorId = doorId; doorInfo.mNextRoomId = nextNextRoomInfo.mId; doorInfo.mX = getDoorX(roomInfo, doorInfo.mDir); doorInfo.mY = getDoorY(roomInfo, doorInfo.mDir); roomInfo.mDoorInfos.Add(doorInfo); } //加一个门给下一个monster房间 { doorinfo doorInfo = new doorinfo(); doorInfo.mId = doorId; ++doorId; doorInfo.mDir = constant.getOppsiteDir(enterDir); //constant.Direction.west; doorInfo.mNextDoorId = doorId - 2; doorInfo.mNextRoomId = roomInfo.mId; doorInfo.mX = getDoorX(nextNextRoomInfo, doorInfo.mDir); doorInfo.mY = getDoorY(nextNextRoomInfo, doorInfo.mDir); nextNextRoomInfo.mDoorInfos.Add(doorInfo); } } mapInfo.mRoomInfos.Add(roomInfo); } } mapInfo.mCurRoomId = 1; initMapScenes(mapInfo); return(mapInfo); }