// Use this for initialization void Start() { //ply = FindObjectOfType<Player>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); // UIrollPlane.SetActive (false); msgUI = msgGO.GetComponent <MessageUI>(); }
// Use this for initialization void Start() { roundController = FindObjectOfType <RoundController>(); roomContraller = FindObjectOfType <RoomContraller>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); confirmUI = FindObjectOfType <ConfirmManageUI>(); camCtrl = FindObjectOfType <CameraCtrl>(); }
// Use this for initialization void Start() { roomContraller = FindObjectOfType <RoomContraller>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); eventController = FindObjectOfType <EventController>(); roundController = FindObjectOfType <RoundController>(); battleController = FindObjectOfType <BattleController>(); //duiHuaUImanager = FindObjectOfType<DuiHuaUImanager>(); charaInfoManager = FindObjectOfType <CharaInfoManager>(); setGuangBoListener(FindObjectOfType <GuangBoListener>()); guangBoController = FindObjectOfType <GuangBoController>(); storyController = FindObjectOfType <StoryController>(); bss = new BlackSignStory(); this.setName(SystemConstant.P6_NAME); int[] roomXYZ; setBag(new Bag()); if (this.neworLoad) { roomXYZ = new int[] { 0, 0, RoomConstant.ROOM_Z_GROUND }; setCrazyFlag(false); //for test 4-->9 setAbilityInfo(new int[] { 7, 9, 6, 7 }); setMaxAbilityInfo(new int[] { 7, 9, 6, 7 }); setActionPointrolled(false); setIsDead(false); this.setDesc("外乡人."); this.waitPlan = false; setDistance(0); setCurrentRoom(roomXYZ); // this.setClickMessage(new string[] { "我就是来旅游的。" }); } else { P0 p = loadInfo(this.getName()); roomXYZ = p.Xyz; this.waitPlan = p.WaitPlan; setDistance(0); setCurrentRoom(roomXYZ); loadInfo(this, p, roomContraller); } //游戏一开始 所处的房间 默认房间的坐标为 0,0,0 this.roomContraller.findRoomByXYZ(roomXYZ).setChara(this); this.roomContraller.setCharaInMiniMap(roomXYZ, this, true); this.setClickMessage(this.roomContraller.findRoomByXYZ(roomXYZ).findSomethingNews(this).ToArray()); /* * Item item1 = new ItemTask(ItemConstant.ITEM_CODE_SPEC_Y0006 * , ItemDesConstant.ITEM_CODE_SPEC_Y0006_NAME, ItemDesConstant.ITEM_CODE_SPEC_Y0006_NAME); * this.getBag().insertItem(item1); * Item item2 = new ItemTask(ItemConstant.ITEM_CODE_SPEC_Y0007 * , ItemDesConstant.ITEM_CODE_SPEC_Y0007_NAME, ItemDesConstant.ITEM_CODE_SPEC_Y0007_DES); * this.getBag().insertItem(item2); */ }
// Use this for initialization void Start() { roomContraller = FindObjectOfType <RoomContraller>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); eventController = FindObjectOfType <EventController>(); roundController = FindObjectOfType <RoundController>(); battleController = FindObjectOfType <BattleController>(); //duiHuaUImanager = FindObjectOfType<DuiHuaUImanager>(); charaInfoManager = FindObjectOfType <CharaInfoManager>(); setGuangBoListener(FindObjectOfType <GuangBoListener>()); guangBoController = FindObjectOfType <GuangBoController>(); storyController = FindObjectOfType <StoryController>(); bss = new BlackSignStory(); this.setName(SystemConstant.P4_NAME); setDistance(-0.5f); //游戏一开始 所处的房间 默认房间的坐标为 0,0,0 int[] roomXYZ; setBag(new Bag()); if (this.neworLoad) { roomXYZ = new int[] { 0, 0, RoomConstant.ROOM_Z_GROUND }; setCrazyFlag(false); setAbilityInfo(new int[] { 8, 3, 6, 7 }); setMaxAbilityInfo(new int[] { 8, 3, 6, 7 }); setActionPointrolled(false); setIsDead(false); this.setDesc("看似小萝莉,其实是一个出名的侦探。"); this.waitPlan = false; setTargetChara(new List <string>()); getTargetChara().Add(SystemConstant.P2_NAME); // this.setClickMessage(new string[] { "真相只有一个。", "你就是犯人。" }); getTargetRoomList().Enqueue(roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_HOSPITAIL_SURGERY)); getTargetRoomList().Enqueue(roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_HOSPITAIL_TRI_OPERATION)); getTargetRoomList().Enqueue(roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_HOSPITAIL_MORGUE)); getTargetRoomList().Enqueue(roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_HOSPITAIL_STORE)); } else { P0 p = loadInfo(this.getName()); roomXYZ = p.Xyz; this.waitPlan = p.WaitPlan; loadInfo(this, p, roomContraller); } setCurrentRoom(roomXYZ); this.roomContraller.findRoomByXYZ(roomXYZ).setChara(this); this.roomContraller.setCharaInMiniMap(roomXYZ, this, true); //this.setClickMessage(this.roomContraller.findRoomByXYZ(roomXYZ).findSomethingNews(this).ToArray()); // setBoss(true); }
// Use this for initialization public override void init() { Debug.Log("monster init function start begin..."); roomContraller = FindObjectOfType <RoomContraller>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); eventController = FindObjectOfType <EventController>(); roundController = FindObjectOfType <RoundController>(); battleController = FindObjectOfType <BattleController>(); //duiHuaUImanager = FindObjectOfType<DuiHuaUImanager>(); charaInfoManager = FindObjectOfType <CharaInfoManager>(); setGuangBoListener(FindObjectOfType <GuangBoListener>()); guangBoController = FindObjectOfType <GuangBoController>(); storyController = FindObjectOfType <StoryController>(); this.setName(SystemConstant.MONSTER1_NAME); //游戏一开始 所处的房间 默认房间的坐标为 0,0,0 //int[] roomXYZ = { 0, 0, RoomConstant.ROOM_Z_GROUND }; setDistance(-1.5f); setAbilityInfo(new int[] { 7, 7, 1, 1 }); setMaxAbilityInfo(new int[] { 7, 7, 1, 1 }); setActionPointrolled(false); setIsDead(false); Character martin = roundController.getCharaByName(SystemConstant.P5_NAME); Character nolan = roundController.getCharaByName(SystemConstant.P1_NAME); Character jessie = roundController.getCharaByName(SystemConstant.P3_NAME); Character player = roundController.getCharaByName(SystemConstant.P6_NAME); if (martin != null && !martin.isDead()) { targetList.Enqueue(martin); } if (nolan != null && !nolan.isDead()) { targetList.Enqueue(martin); } if (jessie != null && !jessie.isDead()) { targetList.Enqueue(jessie); } if (player != null && !player.isDead()) { targetList.Enqueue(player); } }
// Use this for initialization void Start() { roomContraller = FindObjectOfType <RoomContraller>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); eventController = FindObjectOfType <EventController>(); roundController = FindObjectOfType <RoundController>(); battleController = FindObjectOfType <BattleController>(); //duiHuaUImanager = FindObjectOfType<DuiHuaUImanager>(); charaInfoManager = FindObjectOfType <CharaInfoManager>(); setGuangBoListener(FindObjectOfType <GuangBoListener>()); guangBoController = FindObjectOfType <GuangBoController>(); this.setName(SystemConstant.P1_NAME); //游戏一开始 所处的房间 默认房间的坐标为 0,0,0 int[] roomXYZ; setBag(new Bag()); if (this.neworLoad) { roomXYZ = new int[] { 0, 0, RoomConstant.ROOM_Z_GROUND }; setCrazyFlag(false); setAbilityInfo(new int[] { 8, 3, 6, 7 }); setMaxAbilityInfo(new int[] { 8, 3, 6, 7 }); setActionPointrolled(false); setIsDead(false); this.waitPlan = false; this.setDesc("一身脏兮兮的白大褂,第一感觉是个跳大神的庸医。"); //this.setClickMessage(new string[] { "", "你就是犯人。" }); getTargetRoomList().Enqueue(roomContraller.getRandomRoom()); getTargetRoomList().Enqueue(roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_HOSPITAIL_COMMON)); } else { P0 p = loadInfo(this.getName()); roomXYZ = p.Xyz; this.waitPlan = p.WaitPlan; loadInfo(this, p, roomContraller); Debug.Log(" idont kone? nolan is dead ?" + this.isDead()); } setDistance(0.5f); setCurrentRoom(roomXYZ); this.roomContraller.findRoomByXYZ(roomXYZ).setChara(this); this.roomContraller.setCharaInMiniMap(roomXYZ, this, true); this.setClickMessage(this.roomContraller.findRoomByXYZ(roomXYZ).findSomethingNews(this).ToArray()); }
// Use this for initialization void Start() { roomContraller = FindObjectOfType <RoomContraller>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); eventController = FindObjectOfType <EventController>(); roundController = FindObjectOfType <RoundController>(); battleController = FindObjectOfType <BattleController>(); //duiHuaUImanager = FindObjectOfType<DuiHuaUImanager>(); charaInfoManager = FindObjectOfType <CharaInfoManager>(); setGuangBoListener(FindObjectOfType <GuangBoListener>()); guangBoController = FindObjectOfType <GuangBoController>(); storyController = FindObjectOfType <StoryController>(); bss = new BlackSignStory(); this.setName(SystemConstant.P5_NAME); setDistance(-2.0f); //游戏一开始 所处的房间 默认房间的坐标为 0,0,0 int[] roomXYZ; setBag(new Bag()); if (this.neworLoad) { roomXYZ = new int[] { 0, 0, RoomConstant.ROOM_Z_GROUND }; setCrazyFlag(false); setAbilityInfo(new int[] { 8, 3, 6, 7 }); setMaxAbilityInfo(new int[] { 8, 3, 6, 7 }); setActionPointrolled(false); setIsDead(false); this.setDesc("沉默寡言,不爱说话的黑客."); this.waitPlan = false; // this.setClickMessage(new string[] { "谁能给我一台电脑?" }); getTargetRoomList().Enqueue(roomContraller.getRandomRoom()); getTargetRoomList().Enqueue(roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_DOWNSTAIR_BACK)); } else { P0 p = loadInfo(this.getName()); roomXYZ = p.Xyz; this.waitPlan = p.WaitPlan; loadInfo(this, p, roomContraller); } setCurrentRoom(roomXYZ); this.roomContraller.findRoomByXYZ(roomXYZ).setChara(this); this.roomContraller.setCharaInMiniMap(roomXYZ, this, true); this.setClickMessage(this.roomContraller.findRoomByXYZ(roomXYZ).findSomethingNews(this).ToArray()); }
// Use this for initialization void Start() { roomContraller = FindObjectOfType <RoomContraller>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); eventController = FindObjectOfType <EventController>(); roundController = FindObjectOfType <RoundController>(); battleController = FindObjectOfType <BattleController>(); //duiHuaUImanager = FindObjectOfType<DuiHuaUImanager>(); charaInfoManager = FindObjectOfType <CharaInfoManager>(); setGuangBoListener(FindObjectOfType <GuangBoListener>()); guangBoController = FindObjectOfType <GuangBoController>(); storyController = FindObjectOfType <StoryController>(); bss = new BlackSignStory(); int[] roomXYZ; this.setName(SystemConstant.P2_NAME); setDistance(1.5f); setBag(new Bag()); //游戏一开始 所处的房间 默认房间的坐标为 0,0,0 if (this.neworLoad) { roomXYZ = new int[] { 0, 0, RoomConstant.ROOM_Z_GROUND }; setCrazyFlag(false); setAbilityInfo(new int[] { 2, 2, 4, 8 }); setMaxAbilityInfo(new int[] { 2, 2, 4, 8 }); setActionPointrolled(false); setIsDead(false); this.waitPlan = false; this.setDesc("活力充沛,爱开玩笑的冒险家。"); } else { P0 p = loadInfo(this.getName()); roomXYZ = p.Xyz; this.waitPlan = p.WaitPlan; loadInfo(this, p, roomContraller); } setCurrentRoom(roomXYZ); this.roomContraller.findRoomByXYZ(roomXYZ).setChara(this); this.roomContraller.setCharaInMiniMap(roomXYZ, this, true); this.setClickMessage(this.roomContraller.findRoomByXYZ(roomXYZ).findSomethingNews(this).ToArray()); }
public void guangBoAction(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { actionEnd = false; Debug.Log("执行广播任务,目标是 " + this.targetRoomType); if (AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, this.targetRoomType)) { NPC npc = (NPC)chara; npc.setFollowGuangBoAction(false); if (targetNameList.Contains(chara.getName())) { actionEnd = true; } } ; }
private void NolanMove(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { Character player = roundController.getPlayerChara(); if (AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, player.getCurrentRoom())) { //找到房间后, 等待后续细节,:根据设定找下一个房间? 开启剧本? 目前直接结束回合 Debug.Log(chara.getName() + "已经到达目标房间 (" + chara.getCurrentRoom()[0] + "," + chara.getCurrentRoom()[1] + ")"); Debug.Log("直接开打,开始疯狂攻击玩家"); battleController.fighte(chara, player); if (typeof(NPC).IsAssignableFrom(chara.GetType())) { Debug.Log("该角色是属于NPC"); NPC npc = (NPC)chara; //角色行动 找物品 } else { Debug.Log("该角色是属于怪物"); }; } }
public static bool move(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, string targetRoomType) { RoomInterface targetRoom = roomContraller.findRoomByRoomType(targetRoomType); return(doMove(chara, roomContraller, eventController, diceRoll, aPathManager, targetRoom, false)); }
private void BenMove(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, new int[] { 0, 0, 0 }); }
public void scriptAction(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { if (chara.getName() == SystemConstant.P1_NAME) { P1Move(chara, roomContraller, eventController, diceRoll, aPathManager, roundController, battleController); } else if (chara.getName() == SystemConstant.P3_NAME) { P3Move(chara, roomContraller, eventController, diceRoll, aPathManager, roundController, battleController); } else if (chara.getName() == SystemConstant.P5_NAME) { P5Move(chara, roomContraller, eventController, diceRoll, aPathManager, roundController, battleController); } }
private void P5Move(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { Character monster = roundController.getCharaByName(SystemConstant.MONSTER1_NAME); string roomType; NPC npc = (NPC)chara; if (this.P5TargetRooms.Count >= 1) { roomType = this.P5TargetRooms.Peek(); if (P5Message.Count > 0) { npc.sendMessageToPlayer(P5Message.Dequeue()); } } else { if (P5Message.Count > 0) { npc.sendMessageToPlayer(P5Message.Dequeue()); } if (monster.isDead()) { if (P5Message.Count > 0) { npc.sendMessageToPlayer(P5Message.Dequeue()); } roomType = roomContraller.getRandomRoom().getRoomType(); } else { roomType = roomContraller.findRoomByXYZ(monster.getCurrentRoom()).getRoomType(); } this.P5TargetRooms.Enqueue(roomType); } if (AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, roomContraller.findRoomByRoomType(roomType).getXYZ())) { this.P5TargetRooms.Dequeue(); if (roomType == RoomConstant.ROOM_TYPE_HOSPITAIL_MINITOR) { npc.sendMessageToPlayer(new string[] { "我在监控室了,这个有台电脑。", "我破解了文件夹,里面有很多照片,有一张很奇怪,大家来看看。" }); } else { if (!monster.isDead()) { battleController.fighte(chara, monster); if (monster.isDead()) { P1Message.Enqueue(new string[] { "那个蜘蛛怪已经死了!。", "那个萝莉侦探还管不管了啊?" }); } } } } }
private void P3Move(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { NPC npc = (NPC)chara; if (P3Message.Count > 0) { npc.sendMessageToPlayer(P3Message.Dequeue()); } Character kate = roundController.getCharaByName(SystemConstant.P4_NAME); if (!kate.isDead()) { if (AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, kate.getCurrentRoom())) { battleController.fighte(chara, kate); if (kate.isDead()) { P3Message.Enqueue(new string[] { "侦探死了?", "感谢神灵保佑,我永远是您忠实的仆从。", "哼,那个蜘蛛怪怕除虫剂的,随随便便就收拾了。" }); } } } else { AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, roomContraller.getRandomRoom().getXYZ()); } }
private void P1Move(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { Character monster = roundController.getCharaByName(SystemConstant.MONSTER1_NAME); Debug.Log("error: this.P1TargetRooms " + this.P1TargetRooms); Debug.Log("error: Count " + this.P1TargetRooms.Count); string roomType; NPC npc = (NPC)chara; if (this.P1TargetRooms.Count >= 1) { roomType = this.P1TargetRooms.Peek(); if (P1Message.Count > 0) { npc.sendMessageToPlayer(P1Message.Dequeue()); } } else { if (P1Message.Count > 0) { npc.sendMessageToPlayer(P1Message.Dequeue()); } if (monster.isDead()) { if (P1Message.Count > 0) { npc.sendMessageToPlayer(P1Message.Dequeue()); } roomType = roomContraller.getRandomRoom().getRoomType(); } else { roomType = roomContraller.findRoomByXYZ(monster.getCurrentRoom()).getRoomType(); } this.P1TargetRooms.Enqueue(roomType); } if (AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, roomContraller.findRoomByRoomType(roomType).getXYZ())) { this.P1TargetRooms.Dequeue(); if (roomType == RoomConstant.ROOM_TYPE_HOSPITAIL_DEAN) { npc.sendMessageToPlayer(new string[] { "我在院长室了,这里有个保险箱,我打不开,快来帮忙" }); P1Message.Enqueue(new string[] { "我们得杀死那个蜘蛛怪物。", "那个萝莉侦探疯了,我们不用管她。" }); } else { if (!monster.isDead()) { battleController.fighte(chara, monster); if (monster.isDead()) { P1Message.Enqueue(new string[] { "那个蜘蛛怪物死了?。", "我们得想办法救救那个萝莉侦探。" }); } } } } }
public void scriptAction(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { Character target = roundController.getCharaByName(targetList.Peek()); Debug.Log("target name is " + target.getName()); if (AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, target.getCurrentRoom())) { if (!target.isPlayer()) { battleController.fighte(chara, target); } else { battleController.showBattleUI(target, chara, false); } if (target.isDead()) { if (target.getName() == SystemConstant.P1_NAME) { NPC npc = (NPC)chara; npc.sendMessageToPlayer(new string[] { "阻止我寻找真相的黑心医生已经死了。。。", "你们这群怪物,都必须死!" }); } targetList.Dequeue(); } } else { Debug.Log("return false... finding path."); } }
private static bool move(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, string targetRoomType, bool goUpOrDown) { // Debug.Log(targetRoomType + ", " + goUpOrDown); RoomInterface targetRoom = roomContraller.findRoomByRoomType(targetRoomType); return(doMove(chara, roomContraller, eventController, diceRoll, aPathManager, targetRoom, goUpOrDown)); }
public void scriptAction(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoundController roundController, BattleController battleController) { BenMove(chara, roomContraller, eventController, diceRoll, aPathManager, roundController, battleController); }
private static bool move(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, int[] targetRoomXYZ, bool goUpOrDown) { RoomInterface targetRoom = roomContraller.findRoomByXYZ(targetRoomXYZ); return(doMove(chara, roomContraller, eventController, diceRoll, aPathManager, targetRoom, goUpOrDown)); }
// Use this for initialization void Start() { ply = FindObjectOfType <Player>(); diceRoll = FindObjectOfType <DiceRollCtrl>(); }
public static bool doMove(Character chara, RoomContraller roomContraller, EventController eventController, DiceRollCtrl diceRoll, APathManager aPathManager, RoomInterface targetRoom, bool goUpOrDown) { if (chara.ActionPointrolled() || chara.getActionPoint() > 0) { Stack <Node> path = null; RoomInterface currentRoom = roomContraller.findRoomByXYZ(chara.getCurrentRoom()); //如果当前房间不是目标房间 //开始找路 if (chara.getCurrentRoom()[0] != targetRoom.getXYZ()[0] || chara.getCurrentRoom()[1] != targetRoom.getXYZ()[1] || chara.getCurrentRoom()[2] != targetRoom.getXYZ()[2]) { // Debug.Log("如果当前房间不是目标房间"); //判定是否同层 if (chara.getCurrentRoom()[2] != targetRoom.getXYZ()[2]) { // Debug.Log("如果目标房间是楼下, 先定位到下楼梯口房间, 如果目标是楼上,先定位到上楼梯口房间"); // 如果目标房间是楼下, 先定位到下楼梯口房间, 如果目标是楼上,先定位到上楼梯口房间 if (targetRoom.getXYZ()[2] == RoomConstant.ROOM_Z_UP) { // Debug.Log("目标是楼上,先定位到上楼梯口房间"); // targetRoom = roomContraller.findRoomByType(RoomConstant.); if (chara.getCurrentRoom()[2] == RoomConstant.ROOM_Z_GROUND) { // Debug.Log("当前房间 是地面, 只要到向上楼梯房间"); if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_UPSTAIR, true)) { return(false); } else { // Debug.Log("当前房间 是楼上, 寻找目标房间"); path = aPathManager.findPath(roomContraller.findRoomByXYZ(chara.getCurrentRoom()), targetRoom, roomContraller); } } else { if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_DOWNSTAIR_BACK, true)) { return(false); } else { if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_UPSTAIR, true)) { return(false); } else { // Debug.Log("现在同层了。。可以找最终目标房间了 :" + targetRoom); path = aPathManager.findPath(roomContraller.findRoomByXYZ(chara.getCurrentRoom()), targetRoom, roomContraller); } } } } else if (targetRoom.getXYZ()[2] == RoomConstant.ROOM_Z_GROUND) { if (chara.getCurrentRoom()[2] == RoomConstant.ROOM_Z_UP) { if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_UPSTAIR_BACK, true)) { return(false); } else { // Debug.Log("现在同层了。。可以找最终目标房间了 :" + targetRoom); path = aPathManager.findPath(roomContraller.findRoomByXYZ(chara.getCurrentRoom()), targetRoom, roomContraller); } } else { if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_DOWNSTAIR_BACK, true)) { return(false); } else { // Debug.Log("现在同层了。。可以找最终目标房间了 :" + targetRoom); path = aPathManager.findPath(roomContraller.findRoomByXYZ(chara.getCurrentRoom()), targetRoom, roomContraller); } } } else if (targetRoom.getXYZ()[2] == RoomConstant.ROOM_Z_DOWN) { // Debug.Log("目标是楼下,先定位到下楼梯口房间"); if (chara.getCurrentRoom()[2] == RoomConstant.ROOM_Z_GROUND) { // Debug.Log("当前房间 是地面, 只要到向下楼梯房间"); if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_DOWNSTAIR, true)) { return(false); } else { // // Debug.Log("现在同层了。。可以找最终目标房间了 :" + targetRoom); path = aPathManager.findPath(roomContraller.findRoomByXYZ(chara.getCurrentRoom()), targetRoom, roomContraller); } } else { if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_UPSTAIR_BACK, true)) { return(false); } else { if (!AutoMoveManager.move(chara, roomContraller, eventController, diceRoll, aPathManager, RoomConstant.ROOM_TYPE_DOWNSTAIR, true)) { return(false); } else { Debug.Log("现在同层了。。可以找最终目标房间了 :" + targetRoom); path = aPathManager.findPath(roomContraller.findRoomByXYZ(chara.getCurrentRoom()), targetRoom, roomContraller); } } } } } else { if (chara.ActionPointrolled()) { // Debug.Log("如果目标房间同层,直接找路"); int speed = chara.getAbilityInfo()[1] + chara.getDiceNumberBuffer(); int res = diceRoll.calculateDice(speed) + chara.getDiceValueBuffer(); chara.updateActionPoint(res); chara.setActionPointrolled(false); } path = aPathManager.findPath(currentRoom, targetRoom, roomContraller); } while (chara.getActionPoint() > 0 && path.Count > 0) { Node nextRoom = path.Peek(); bool opened = false; //判断向什么方向的房间 GameObject targetDoor = null; if (chara.getCurrentRoom()[0] == nextRoom.xy[0] && chara.getCurrentRoom()[1] - nextRoom.xy[1] < 0) { //up room //调用AI 专用方法 targetDoor = currentRoom.getNorthDoor(); //开门成功 } else if (chara.getCurrentRoom()[0] == nextRoom.xy[0] && chara.getCurrentRoom()[1] - nextRoom.xy[1] > 0) { //down room targetDoor = currentRoom.getSouthDoor(); } else if (chara.getCurrentRoom()[1] == nextRoom.xy[1] && chara.getCurrentRoom()[0] - nextRoom.xy[0] < 0) { //east room targetDoor = currentRoom.getEastDoor(); } else { //west room targetDoor = currentRoom.getWestDoor(); } if (roomContraller.findRoomByXYZ(nextRoom.xy).checkOpen(chara)) { // Debug.Log("没有锁,可以开门"); opened = targetDoor.GetComponent <WoodDoor>().openDoor(chara); //开门成功 } else { // Debug.Log("有锁,不可以开门"); if (typeof(NPC).IsAssignableFrom(chara.GetType())) { // Debug.Log("我是npc,我要去找钥匙开门"); NPC npc = (NPC)chara; npc.checkTargetRoomLocked(roomContraller.findRoomByXYZ(nextRoom.xy).getRoomType()); return(false); } else { // Debug.Log("怪物无法发言,只能等门被打开。"); }; } //如果进入房间是目标房间 暂时回合结束 if (opened) { bool result = eventController.excuteLeaveRoomEvent(currentRoom, chara); //非正式测试用,只考虑行动力足够 if (result == true) { //离开门成功 path.Pop(); currentRoom.removeChara(chara); roomContraller.setCharaInMiniMap(chara.getCurrentRoom(), chara, false); //当前人物坐标移动到下一个房间 chara.setCurrentRoom(nextRoom.xy); roomContraller.findRoomByXYZ(nextRoom.xy).setChara(chara); roomContraller.setCharaInMiniMap(nextRoom.xy, chara, true); //触发进门事件 // eventController.excuteEnterRoomEvent (nextRoom, roundController.getCurrentRoundChar ()); 暂时禁用 运行时有异常 } else { //离开失败 // Debug.Log("WoodDoor.cs OnMouseDown 离开房间失败"); } } } //找到房间后, 如果还有体力值, 判定是否是上下楼的房间,如果是 直接上下楼 if (chara.getActionPoint() > 0) { if (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_UPSTAIR_BACK || targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_DOWNSTAIR || targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_DOWNSTAIR_BACK) { // Debug.Log("找到目标房间了,但是行动力没有用完,直接上下楼"); RoomInterface stairRoom; if (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_UPSTAIR) { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_UPSTAIR_BACK); } else if (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_UPSTAIR_BACK) { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_UPSTAIR); } else if (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_DOWNSTAIR) { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_DOWNSTAIR_BACK); } else { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_DOWNSTAIR); } targetRoom.removeChara(chara); roomContraller.setCharaInMiniMap(chara.getCurrentRoom(), chara, false); stairRoom.setChara(chara); chara.setCurrentRoom(stairRoom.getXYZ()); chara.updateActionPoint(chara.getActionPoint() - SystemConstant.UPStairActionPoint); roomContraller.setCharaInMiniMap(stairRoom.getXYZ(), chara, true); return(true); } } } else { if (chara.ActionPointrolled()) { // Debug.Log("如果目标房间同层,直接找路"); int speed = chara.getAbilityInfo()[1] + chara.getDiceNumberBuffer(); int res = diceRoll.calculateDice(speed) + chara.getDiceValueBuffer(); chara.updateActionPoint(res); chara.setActionPointrolled(false); } if (goUpOrDown && (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_UPSTAIR || targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_UPSTAIR_BACK || targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_DOWNSTAIR || targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_DOWNSTAIR_BACK)) { // Debug.Log("当前房间是上或者下楼口"); //找到房间后, 如果还有体力值, 判定是否是上下楼的房间,如果是 直接上下楼 if (chara.getActionPoint() > 0) { // Debug.Log("找到目标房间了,但是行动力没有用完,直接上下楼"); RoomInterface stairRoom; if (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_UPSTAIR) { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_UPSTAIR_BACK); } else if (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_UPSTAIR_BACK) { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_UPSTAIR); } else if (targetRoom.getRoomType() == RoomConstant.ROOM_TYPE_DOWNSTAIR) { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_DOWNSTAIR_BACK); } else { stairRoom = roomContraller.findRoomByRoomType(RoomConstant.ROOM_TYPE_DOWNSTAIR); } targetRoom.removeChara(chara); roomContraller.setCharaInMiniMap(chara.getCurrentRoom(), chara, false); stairRoom.setChara(chara); chara.setCurrentRoom(stairRoom.getXYZ()); chara.updateActionPoint(chara.getActionPoint() - SystemConstant.UPStairActionPoint); roomContraller.setCharaInMiniMap(stairRoom.getXYZ(), chara, true); return(true); } else { // Debug.Log("没有体力行动了"); return(false); } } // Debug.Log("和目标房间 一起"); return(true); } } else { Debug.Log("你已经丢过行动力骰子"); return(false); } return(false); }