示例#1
0
 // Use this for initialization
 void Start()
 {
     //ply = FindObjectOfType<Player>();
     diceRoll = FindObjectOfType <DiceRollCtrl>();
     //		UIrollPlane.SetActive (false);
     msgUI = msgGO.GetComponent <MessageUI>();
 }
示例#2
0
 // Use this for initialization
 void Start()
 {
     roundController = FindObjectOfType <RoundController>();
     roomContraller  = FindObjectOfType <RoomContraller>();
     diceRoll        = FindObjectOfType <DiceRollCtrl>();
     confirmUI       = FindObjectOfType <ConfirmManageUI>();
     camCtrl         = FindObjectOfType <CameraCtrl>();
 }
示例#3
0
    // 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);
         */
    }
示例#4
0
    // 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);
    }
示例#5
0
    // 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);
        }
    }
示例#6
0
    // 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());
    }
示例#7
0
    // 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());
    }
示例#8
0
    // 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());
    }
示例#9
0
 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;
         }
     }
     ;
 }
示例#10
0
    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("该角色是属于怪物");
            };
        }
    }
示例#11
0
    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));
    }
示例#12
0
 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[] { "那个蜘蛛怪物死了?。", "我们得想办法救救那个萝莉侦探。" });
                    }
                }
            }
        }
    }
示例#17
0
    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.");
        }
    }
示例#18
0
    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));
    }
示例#19
0
 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);
 }
示例#20
0
    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));
    }
示例#21
0
 // Use this for initialization
 void Start()
 {
     ply      = FindObjectOfType <Player>();
     diceRoll = FindObjectOfType <DiceRollCtrl>();
 }
示例#22
0
    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);
    }