Ejemplo n.º 1
0
    /// <summary>
    /// 发起挑战
    /// </summary>
    /// <param name="targetID"></param>
    /// <param name="name"></param>
    public void ReqChallengeInvite(uint targetID, string name, uint targetRank, bool onLine)
    {
        // 大v说了武斗场id不变151.
        if (!KHttpDown.Instance().SceneFileExists(151))
        {
            //打开下载界面
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
            return;
        }

        MainPlayStop();
        IPlayer mainPlayer = ClientGlobal.Instance().MainPlayer;
        stChallengeInviteArenaUserCmd_CS cmd = new stChallengeInviteArenaUserCmd_CS();

        cmd.offensive_id   = mainPlayer.GetID();
        cmd.offensive_name = mainPlayer.GetName();
        cmd.offender_rank  = m_rank;
        cmd.defensive_id   = targetID;
        cmd.defensive_name = name;
        cmd.defendser_rank = targetRank;
        NetService.Instance.Send(cmd);

        if (onLine)  //在线,会弹出等待框
        {
            WaitPanelShowData waitData = new WaitPanelShowData();
            waitData.type       = WaitPanelType.ArenaChallenge;
            waitData.cdTime     = ChallengeRejectTime;
            waitData.des        = "挑战邀请中,请稍后...";
            waitData.timeOutDel = delegate { DataManager.Manager <UIPanelManager>().HidePanel(PanelID.CommonWaitingPanel); };
            waitData.useBoxMask = false;

            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.CommonWaitingPanel, data: waitData);
        }
    }
Ejemplo n.º 2
0
    public void OnAskTeamrCopy(stAskTeamrCopyUserCmd_CS cmd)
    {
        m_uEnterCopyID = cmd.copy_base_id;
        m_dicTeammateStatus.Clear();
        TeamDataManager teamData = DataManager.Manager <TeamDataManager>();

        m_dicTeammateStatus.Add(teamData.LeaderId, true);


        CopyDataBase db = GameTableManager.Instance.GetTableItem <CopyDataBase>(cmd.copy_base_id);

        if (db == null)
        {
            return;
        }
        if (!KHttpDown.Instance().SceneFileExists(db.mapId))
        {
            stAnsTeamCopyUserCmd_CS sendCmd = new stAnsTeamCopyUserCmd_CS();
            sendCmd.ans          = false;
            sendCmd.copy_base_id = cmd.copy_base_id;
            NetService.Instance.Send(cmd);
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);

            //TipsManager.Instance.ShowTips(LocalTextType.Team_Limit_nindedongwurenshuyiman);//您的队伍人数已满
            return;
        }
        else
        {
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.FBConfirmPanel);
        }

        m_uCountDown = GameTableManager.Instance.GetGlobalConfig <uint>("EnterCopyCountdown");
        TimerAxis.Instance().KillTimer(m_uCopyAskTeamTimerID, this);
        TimerAxis.Instance().SetTimer(m_uCopyAskTeamTimerID, 1000, this);
    }
Ejemplo n.º 3
0
 public static KHttpDown Instance()
 {
     if (s_Instance == null)
     {
         s_Instance = new KHttpDown();
     }
     return(s_Instance);
 }
Ejemplo n.º 4
0
    //static uint nLastTaskID = 0;
    public void VisitNpc(bool bDirectly, uint nMapID, uint nNpcID, uint nTaskID)
    {
        //bool bProcess = true;
        //if (nLastTaskID == nTaskID && nProcessTaskID == nTaskID)
        //{
        //    bProcess = false;
        //}
        //else
        //{
        //    nLastTaskID = nTaskID;
        //}

        //if (bProcess == false)
        //    return;

        Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
        if (cs == null)
        {
            return;
        }
        Client.IController controller = cs.GetActiveCtrl();
        if (controller == null)
        {
            Engine.Utility.Log.Error("IController is null");
            return;
        }

        //bDirectly = false;
        if (bDirectly)//是否直接跨地图去接取
        {
            if (EqualsMapID(nMapID))
            {
                controller.VisiteNPC(nMapID, nNpcID);
            }
            else
            {
                //下载地图检查
                if (!KHttpDown.Instance().SceneFileExists(nMapID))
                {
                    //打开下载界面
                    DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                    return;
                }

                controller.VisiteNPCDirectly(nMapID, nNpcID, nTaskID, 100, 100);
            }
        }
        else
        {
            controller.VisiteNPC(nMapID, nNpcID, false);
        }
    }
Ejemplo n.º 5
0
    void onClick_Btn_enter_Btn(GameObject caster)
    {
        if (m_db != null)
        {
            if (!KHttpDown.Instance().SceneFileExists(m_db.mapId))
            {
                //打开下载界面
                DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                return;
            }
        }

        if (m_db != null)
        {
            if (m_db.membType == 3)
            {
                TeamDataManager teamData = DataManager.Manager <TeamDataManager>();
                bool            showTips = false;
                if (teamData.IsJoinTeam)
                {
                    List <TeamMemberInfo> teamMemberList = teamData.TeamMemberList;
                    int count = teamMemberList.Count;
                    if (count == 1)
                    {
                        showTips = true;
                    }
                }
                else
                {
                    showTips = true;
                }
                if (showTips)
                {
                    string tips = DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Copy_Commond_fubenjinrutips);
                    TipsManager.Instance.ShowTipWindow(TipWindowType.CancelOk, tips, () =>
                    {
                        EnterCopy();
                    });
                }
                else
                {
                    EnterCopy();
                }
            }
            else
            {
                EnterCopy();
            }
        }
    }
Ejemplo n.º 6
0
    void OnFeiLeng(GameCmd.FeiLeiType transmit)
    {
        PushMsg msg = DataManager.Manager <FunctionPushManager>().GetPushMsg(m_pushMsgType, m_pushMsgSenderID);

        if (msg == null)
        {
            return;
        }
        string des   = "";
        string title = "";

        if (transmit == GameCmd.FeiLeiType.FeiLeiType_Team || transmit == GameCmd.FeiLeiType.CallUp_CityWarTeam)
        {
            des   = string.Format("队伍成员{0}({1},{2}级)正在召唤你前往{3}({4}),是否前往加入", msg.sendName, msg.profession, msg.level, msg.map, msg.vector);
            title = "队伍召集";
        }
        else
        {
            des   = string.Format("氏族成员{0}({1},{2}级)正在召唤你前往{3}({4}),是否前往加入", msg.sendName, msg.profession, msg.level, msg.map, msg.vector);
            title = "氏族召集";
        }
        Action agree = delegate
        {
            if (!KHttpDown.Instance().SceneFileExists(msg.mapId))
            {
                DataManager.Manager <FunctionPushManager>().RemoveTransmitMsg(msg);
                //打开下载界面
                DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);

                return;
            }

            NetService.Instance.Send(new GameCmd.stInviteGoMapRequestUserCmd_CS()
            {
                userid = msg.senderId, type = (uint)transmit
            });
            DataManager.Manager <FunctionPushManager>().RemoveTransmitMsg(msg);
        };

        Action close = delegate
        {
            DataManager.Manager <FunctionPushManager>().RemoveTransmitMsg(msg);
        };
        Action refuse = delegate
        {
        };

        TipsManager.Instance.ShowTipWindow(0, (uint)msg.leftTime, Client.TipWindowType.CancelOk, des, agree, refuse, close, title: title, okstr: "确定", cancleStr: "挂起");
    }
Ejemplo n.º 7
0
    void onClick_Btn_move_Btn(GameObject caster)
    {
        table.HuntingDataBase hunt = GameTableManager.Instance.GetTableItem <HuntingDataBase>(MonsterID);
        if (!KHttpDown.Instance().SceneFileExists(hunt.mapID))
        {
            //打开下载界面
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
            DataManager.Manager <UIPanelManager>().HidePanel(PanelID.HuntingGoPanel);
            return;
        }

        IController ctrl = ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl();

        ctrl.GotoMap(hunt.mapID, new UnityEngine.Vector3(hunt.transmitCoordinateX, 0, -hunt.transmitCoordinateY));
        DataManager.Manager <UIPanelManager>().HidePanel(PanelID.HuntingGoPanel);
    }
Ejemplo n.º 8
0
    void GotoMap(int mapID)
    {
        if (mapID != 0)
        {
            IMapSystem mapSystem = Client.ClientGlobal.Instance().GetMapSystem();
            if (mapSystem.GetMapID() == mapID)
            {
                //你就在这个场景
                TipsManager.Instance.ShowTipsById(514);
                return;
            }
            Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
            if (cs != null)
            {
                cs.GetCombatRobot().Stop();// 停止挂机
            }
            TransferDatabase tdb = GameTableManager.Instance.GetTableItem <TransferDatabase>((uint)mapID);
            if (tdb != null)
            {
                if (!MainPlayerHelper.IsHasEnoughMoney(tdb.costType, tdb.costValue, true))
                {
                    return;
                }
            }
            //DataManager.Manager<SliderDataManager>().SetSliderDelagate(() =>
            //{

            if (!KHttpDown.Instance().SceneFileExists((uint)mapID))
            {
                //打开下载界面
                DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                HideSelf();
                return;
            }

            IMapSystem ms = ClientGlobal.Instance().GetMapSystem();
            if (ms != null)
            {
                ms.RequestEnterMap((uint)mapID, 1);
            }
            //}, null, 3f);

            HideSelf();
        }
        m_ctor_bgContent.SetVisible(false);
        m_btn_ColliderMask.gameObject.SetActive(false);
    }
Ejemplo n.º 9
0
    /// <summary>
    /// 点击事件
    /// </summary>
    /// <param name="eventType"></param>
    /// <param name="data"></param>
    /// <param name="param"></param>
    private void OnReliveGridEventDlg(UIEventType eventType, object data, object param)
    {
        if (eventType == UIEventType.Click)
        {
            UIReliveGrid grid = data as UIReliveGrid;
            if (grid == null)
            {
                return;
            }

            if (grid.m_info.reliveId == 1)
            {
                IMapSystem mapSys = ClientGlobal.Instance().GetMapSystem();
                if (mapSys == null)
                {
                    return;
                }
                uint uCurMapID = mapSys.GetMapID();

                table.MapDataBase mapDB = GameTableManager.Instance.GetTableItem <table.MapDataBase>(uCurMapID);
                if (mapDB == null)
                {
                    return;
                }

                uint rebackMapID = mapDB.rebackMapID;

                if (!KHttpDown.Instance().SceneFileExists(rebackMapID))
                {
                    // 复活点复活
                    DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                    HideSelf();
                    return;
                }
            }


            GameCmd.stOKReliveUserCmd_C cmd = new GameCmd.stOKReliveUserCmd_C();
            cmd.byType       = grid.m_info.reliveId;
            cmd.dwUserTempID = ClientGlobal.Instance().MainPlayer.GetID();
            cmd.dwNpcID      = 0;
            NetService.Instance.Send(cmd);
        }
    }
Ejemplo n.º 10
0
    void onClick_Enter_Btn(GameObject caster)
    {
        SelectUserInfo cur = GetRoleInfoByIndex(m_iCurIndex);

        if (!Application.isEditor)
        {
            uint mapid = cur.mapid & 0xFF;
            if (!KHttpDown.Instance().SceneFileExists(mapid))
            {
                //打开下载界面
                DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                return;
            }
        }

        if (null != cur)
        {
            ServerStatusParam status = DataManager.Manager <LoginDataManager>().CurServerState;
            if (status.state == ServerLimit.ServerLimit_Free)
            {
                Log.Info("enter game, role index: " + cur.id);

                if (cur.del == 1)
                {
                    TextManager Tmger = DataManager.Manager <TextManager>();
                    string      des   = Tmger.GetLocalFormatText(LocalTextType.RecoverRole_Tips_5, cur.name);
                    Action      yes   = delegate
                    {
                        ReqEnter(cur.id);
                    };
                    TipsManager.Instance.ShowTipWindow(TipWindowType.YesNO, des, yes, null, title: Tmger.GetLocalText(LocalTextType.Local_TXT_Tips), okstr: Tmger.GetLocalText(LocalTextType.Local_TXT_Confirm), cancleStr: Tmger.GetLocalText(LocalTextType.Local_TXT_Cancel));
                }
                else
                {
                    ReqEnter(cur.id);
                }
            }
            else
            {
                TipsManager.Instance.ShowTips(status.msg);
                Engine.Utility.Log.Error(status.msg);
            }
        }
    }
Ejemplo n.º 11
0
    void onClick_Btn_transmission_Btn(GameObject caster)
    {
        table.HuntingDataBase checkHunt = GameTableManager.Instance.GetTableItem <HuntingDataBase>(MonsterID);
        if (!KHttpDown.Instance().SceneFileExists(checkHunt.mapID))
        {
            //打开下载界面
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
            DataManager.Manager <UIPanelManager>().HidePanel(PanelID.HuntingGoPanel);
            return;
        }

        if (leftTransTime > 0)
        {
            Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
            if (cs != null)
            {
                cs.GetCombatRobot().Stop();// 停止挂机
            }

            table.HuntingDataBase hunt = GameTableManager.Instance.GetTableItem <HuntingDataBase>(MonsterID);
            DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
            {
                NetService.Instance.Send(new stRequestTransScriptUserCmd_CS()
                {
                    boss_index = MonsterID
                });
            }, null);

            DataManager.Manager <UIPanelManager>().HidePanel(PanelID.HuntingGoPanel);
            IMapSystem mapsys = Client.ClientGlobal.Instance().GetMapSystem();
            if (mapsys.GetMapID() == hunt.transmitMapID)
            {
                DataManager.Manager <HuntingManager>().StartLoading();
            }
        }
        else
        {
            TipsManager.Instance.ShowTips(DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_TXT_Notice_NoEnoughTransmitTime));
        }
    }
Ejemplo n.º 12
0
    /// <summary>
    /// 进入副本(朝歌山单人)
    /// </summary>
    /// <param name="cmd"></param>
    public void ReqEnterCopy(uint copyId)
    {
        CopyDataBase copyData = GameTableManager.Instance.GetTableItem <CopyDataBase>(copyId);

        if (copyData == null)
        {
            return;
        }

        //地图检查,如果没有,前往下载
        if (!KHttpDown.Instance().SceneFileExists(copyData.mapId))
        {
            //打开下载界面
            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
            return;
        }

        stRequestEnterCopyUserCmd_C sendCmd = new stRequestEnterCopyUserCmd_C();

        sendCmd.copy_base_id = copyId;
        NetService.Instance.Send(sendCmd);
    }
Ejemplo n.º 13
0
    void SetSelectGrid(int index)
    {
        if (index < m_lstTransfers.Count)
        {
            TransferData m_data = m_lstTransfers[index];
            if (m_data != null)
            {
                if (m_data.isNpc)
                {
                    TransferDatabase transferdata = GameTableManager.Instance.GetTableItem <TransferDatabase>(m_data.tabID);
                    if (!KHttpDown.Instance().SceneFileExists(transferdata.mapid))
                    {
                        //打开下载界面
                        DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                        HideSelf();
                        return;
                    }

                    NetService.Instance.Send(new stDialogSelectScriptUserCmd_C()
                    {
                        step    = m_data.step,
                        dwChose = m_data.btnIndex,
                    });
                }
                else
                {
                    TransferDatabase transferdata = GameTableManager.Instance.GetTableItem <TransferDatabase>(m_data.tabID);
                    if (transferdata == null)
                    {
                        return;
                    }
                    string strMsg = string.Format("是否花费 [ff0000]{0}{1}[-] 传送到{2}", transferdata.costValue, ((ClientMoneyType)transferdata.costType).GetEnumDescription(), transferdata.strTransmitMap);
                    TipsManager.Instance.ShowTipWindow(Client.TipWindowType.CancelOk, strMsg, delegate()
                    {
                        DataManager.Manager <TeamDataManager>().TeamMemberCheckAndCancelFollow();//取消队员跟随

                        Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
                        if (cs != null)
                        {
                            cs.GetCombatRobot().Stop();// 停止挂机
                        }


                        ClientMoneyType montype = (ClientMoneyType)transferdata.costType;
                        if (MainPlayerHelper.IsHasEnoughMoney(montype, transferdata.costValue))
                        {
                            Client.IMapSystem mapsys = Client.ClientGlobal.Instance().GetMapSystem();
                            if (mapsys != null)
                            {
                                if (mapsys.GetMapID() == transferdata.mapid)
                                {
                                    //你就在这个场景
                                    TipsManager.Instance.ShowTipsById(514);
                                    return;
                                }

                                //httpdown
                                if (!KHttpDown.Instance().SceneFileExists(transferdata.mapid))
                                {
                                    //打开下载界面
                                    DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                                    return;
                                }


                                mapsys.RequestEnterMap(transferdata.mapid, 1);
                                HideSelf();
                            }
                        }
                    });
                }
            }
        }
    }
Ejemplo n.º 14
0
    public void OnUpdate(IEntity entity, object param = null)
    {
        if (Client.ClientGlobal.Instance().MainPlayer == null || entity == null)
        {
            return;
        }
        //TODO :等级>VIP等级>货币
        UnityEngine.Vector3 dis = Client.ClientGlobal.Instance().MainPlayer.GetPos() - entity.GetPos();
        if (dis.sqrMagnitude < SQRMagnitude)
        {
            if (IsTrigger)
            {
                return;
            }

            IsTrigger = true;

            uint npcid = (uint)entity.GetProp((int)Client.EntityProp.BaseID);

            table.DeliverDatabase tal = GameTableManager.Instance.GetTableItem <table.DeliverDatabase>(npcid);

            if (tal != null)
            {
                if (!KHttpDown.Instance().SceneFileExists(tal.dwDestMapID))
                {
                    //打开下载界面
                    DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                    return;
                }
            }
            else
            {
                Engine.Utility.Log.Error("读DeliverDatabase 表格数据为null");
            }


            if (tal != null)
            {
                for (int i = 0; i < tal.condTypeArray.Count; i++)
                {
                    switch (tal.condTypeArray[i])
                    {
                    case 1:    //等级
                        if (Client.ClientGlobal.Instance().MainPlayer.GetProp((int)Client.CreatureProp.Level) < tal.condValueArray[i])
                        {
                            //TODO 弹窗提示
                            return;
                        }
                        break;

                    case 2:    //vip等级

                        break;

                    case 3:    //消耗货币

                        break;

                    default:
                        break;
                    }
                }
            }
            Engine.Utility.Log.Trace("触发传送:{0}", entity.GetName());

            // 请求传送地图 先让主角停止
            if (Client.ClientGlobal.Instance().MainPlayer != null)
            {
                Client.ClientGlobal.Instance().MainPlayer.SendMessage(EntityMessage.EntityCommand_StopMove, Client.ClientGlobal.Instance().MainPlayer.GetPos());
            }

            NetService.Instance.Send(new GameCmd.stClickNpcScriptUserCmd_C()
            {
                dwNpcTempID = entity.GetID(),
                // baseid = npcid,
            });
        }
        else
        {
            IsTrigger = false;
        }
    }
Ejemplo n.º 15
0
    private void OnDoingTask(QuestTraceInfo taskInfo)
    {
        DataManager.Manager <TaskDataManager>().DoingTaskID = taskInfo.taskId;

        Client.IController controller = Client.ClientGlobal.Instance().GetControllerSystem().GetActiveCtrl();
        if (controller == null)
        {
            Engine.Utility.Log.Error("IController is null");

            return;
        }
        table.QuestDataBase questDB = taskInfo.QuestTable;
        if (questDB == null)
        {
            Engine.Utility.Log.Error("QuestTable is null");
            return;
        }
        UnityEngine.Vector2 pos;
        uint    npcid = 0;
        PanelID pid;
        int     copyID;
        int     tab = 0;
        uint    jumpId;

        //背包满了  无法执行任务
        if (false == taskInfo.TaskItemCanPutInKanpsack())
        {
            TipsManager.Instance.ShowTips(LocalTextType.Task_Commond_3);
            return;
        }

        if (MainPlayerIsChangeBody())
        {
            return;
        }
        else if (taskInfo.taskSubType == TaskSubType.SubmitLimit) //断档任务
        {
            if (taskInfo.IsOpenUI(out jumpId))
            {
                ItemManager.DoJump(jumpId);
            }
            else
            {
                string des = string.Format("将等级提升到{0}级继续主线任务", taskInfo.finishLevel);
                TipsManager.Instance.ShowTips(des);
            }
            return;
        }
        else if (taskInfo.IsDynamicCommitItem) //动态道具递交(蚩尤乱世除外)
        {
            taskInfo.DoJump();
            return;
        }
        else if (DataManager.Manager <ComBatCopyDataManager>().IsEnterCopy == false && taskInfo.IsOpenUI(out jumpId))
        {
            ItemManager.DoJump(jumpId);
            return;
        }
        else if (taskInfo.IsMoveToTargetPos(out pos))
        {
            //if (DataManager.Manager<TaskDataManager>().IsShowSlider)
            if (DataManager.Manager <SliderDataManager>().IsReadingSlider)
            {
                return;
            }
            Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
            if (cs == null)
            {
                return;
            }

            if (!m_bAddStopMoveListener)
            {
                m_bAddStopMoveListener = true;
                Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent);
            }

            if (EqualsMapID(questDB.destMapID))
            {
                cs.GetCombatRobot().Stop();
                DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
                {
                    //if (!m_bAddStopMoveListener)
                    //{
                    //    m_bAddStopMoveListener = true;
                    //    Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent);
                    //}
                    m_nDoingTaskID = taskInfo.taskId;
                    controller.GotoMap(questDB.destMapID, new Vector3(pos.x, 0, -pos.y));
                }, null);
                return;
            }
            else
            {
                DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
                {
                    if (questDB.dwHelpDoing)
                    {
                        m_nDoingTaskID = taskInfo.taskId;

                        //下载地图检查
                        if (!KHttpDown.Instance().SceneFileExists(questDB.destMapID))
                        {
                            //打开下载界面
                            DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.DownloadPanel);
                            return;
                        }

                        controller.GotoMapDirectly(questDB.destMapID, new Vector3(pos.x, 0, -pos.y), questDB.dwID);
                    }
                }, null);
            }
        }
        else if (taskInfo.IsVisitCollectNpc(out npcid) || taskInfo.IsDeleverItem(out npcid))
        {
            AddCollectNpcEffect(taskInfo);

            DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
            {
                VisitNpc(questDB.dwHelpDoing, questDB.destMapID, npcid, questDB.dwID);
            }, null);
        }
        else if (taskInfo.IsDirectlyVisitCopy(taskInfo.copyId) && false == EqualsMapID(questDB.destMapID))
        {
            //直接跳副本
            VisitCopy(taskInfo.copyId);
        }
        else if (taskInfo.IsKillMonster(out npcid))
        {
            Client.ICombatRobot robot = Client.ClientGlobal.Instance().GetControllerSystem().GetCombatRobot();
            if (robot == null)
            {
                Engine.Utility.Log.Error("robotis null");

                return;
            }
            if (robot.Status == Client.CombatRobotStatus.RUNNING && robot.TargetId == npcid)
            {
                Engine.Utility.Log.Info("已经在挂机杀怪{0}", npcid);
                return;
            }
            //TODO 优化
            bool getPos = false;
            if (EqualsMapID(questDB.destMapID))
            {
                Client.IMapSystem ms = Client.ClientGlobal.Instance().GetMapSystem();
                if (ms.GetClienNpcPos((int)npcid, out pos))
                {
                    getPos = true;
                    Vector3 mainPos = Client.ClientGlobal.Instance().MainPlayer.GetPos();
                    if ((mainPos - new Vector3(pos.x, mainPos.y, -pos.y)).sqrMagnitude < 5)
                    {
                        Client.IControllerSystem cs = Client.ClientGlobal.Instance().GetControllerSystem();
                        if (cs != null)
                        {
                            cs.GetCombatRobot().StartWithTarget((int)npcid);
                            Engine.Utility.Log.LogGroup("ZCX", "挂机杀怪物{0}", npcid);
                            return;
                        }
                    }
                }
            }

            DataManager.Manager <RideManager>().TryUsingRide(delegate(object o)
            {
                if (!m_bAddStopMoveListener)
                {
                    m_bAddStopMoveListener = true;
                    Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.ENTITYSYSTEM_ENTITYSTOPMOVE, OnEvent);
                }
                m_nDoingTaskID = taskInfo.taskId;
                if (getPos)
                {
                    controller.MoveToTarget(new Vector3(pos.x, 0, -pos.y), null, true);
                }
                else if (EqualsMapID(questDB.destMapID))
                {
                    Client.IMapSystem ms = Client.ClientGlobal.Instance().GetMapSystem();
                    if (ms.GetClienNpcPos((int)npcid, out pos))
                    {
                        controller.MoveToTarget(new Vector3(pos.x, 0, -pos.y), null, true);
                    }
                }
                else
                {
                    VisitNpc(questDB.dwHelpDoing, questDB.destMapID, npcid, questDB.dwID);
                }
            }, null);
        }
    }
Ejemplo n.º 16
0
    //private void LoadRemoteFileFinish(WWW www, object param = null)
    //{
    //    if (www.error != null || www.text == string.Empty || www.text.Length == 0)
    //    {
    //        //if (m_callBackRemote != null)
    //        //{
    //        //    m_callBackRemote(UpgradeError.UpgradeError_DownloadFileError, 0, 0, www.url);
    //        //}
    //        return;
    //    }

    //    Engine.Utility.Log.Trace("Read file www time:{0}", Time.realtimeSinceStartup - m_fCurTime);
    //}

    /**
     * @brief 初始化
     * @param strRootName 根节点名称
     */
    override public void Init(ref GameObject root)
    {
        // 游戏引擎底层初始化
        base.Init(ref root);


        // 设定最大帧率
        if (!Application.isEditor)
        {
            Application.targetFrameRate = 30;
        }

        GameObject mainObj = root;

        //初始化携程管理器
        CoroutineMgr.Instance.Initialize(root);
        //构造游戏初始化数据
        StructGameInitData(mainObj);

        //初始化游戏配置
        DoDataInit((startdata) =>
        {
            if (null != LaunchPanel.Me)
            {
                LaunchPanel.Me.Tips = Util.GetText(startdata.Des);
            }
        }, (completeData, progress) =>
        {
            LaunchPanel.Me.Progress = (0.7f) * progress;
            if (1 - progress <= Mathf.Epsilon)
            {
                Action <float> uiPreLoadCallback = (uiprogress) =>
                {
                    LaunchPanel.Me.Progress = 0.7f * progress + 0.3f * uiprogress;
                    if (1 - uiprogress <= Mathf.Epsilon)
                    {
                        //执行游戏进程
                        DoGameStep(mainObj);
                    }
                };
                //预加载UI
                DataManager.Manager <UIManager>().ChangeUISceneState(UIManager.UISceneState.USS_Login, uiPreLoadCallback);
            }
        });

        // 设置显示FPS
        if (GlobalConfig.Instance().FPS)
        {
            ShowFPS(true);
        }


        //注册低内存回调
        ResgisterLowMemory(OnLowMemeory);

        KHttpDown.Instance();

        return;

        // 创建场景
//         IMapSystem mapSystem = ClientGlobal.Instance().GetMapSystem();
//         if(mapSystem!=null)
//         {
//             mapSystem.EnterMap(0);
//         }


        // 创建主角
        //string strPlayerRes = "Character/female.obj";
        //IEntitySystem es = ClientGlobal.Instance().GetEntitySystem();
        //if (es != null)
        //{
        //    Client.EntityCreateData data = new Client.EntityCreateData();
        //    data.strName = strPlayerRes;
        //    data.PropList = new Client.EntityAttr[(int)Client.PlayerProp.End - (int)Client.EntityProp.Begin];
        //    m_mainPlayer = es.CreateEntity(Client.EntityType.EntityType_Player, data) as IPlayer;
        //    if (m_mainPlayer != null)
        //    {
        //        m_mainPlayer.AddCommpent(EntityCommpent.EntityCommpent_Visual);
        //        m_mainPlayer.AddCommpent(EntityCommpent.EntityCommpent_Move);

        //        Vector3 pos = Vector3.zero;
        //        m_mainPlayer.SendMessage(EntityMessage.EntityCommand_SetPos, pos);
        //        ClientGlobal.Instance().MainPlayer = m_mainPlayer;
        //    }
        //}

        //m_CameraCtrl = new CameraFollow();
        //m_CameraCtrl.camera = cam;
        //m_CameraCtrl.target = m_mainPlayer;
        //m_CameraCtrl.SetCameraOffset(30.0f, 45.0f, 25);
        //cam.SetCameraCtrl(m_CameraCtrl);

        // 创建特效
        //string strEffect = "Effect/jizhong_ruiji.obj";
        //IRenderObj effect = renderSys.CreateRenderObj(ref strEffect);
        //effect.GetNode().SetLocalPosition(new Vector3(0, 0, 0));

        //UISystem.UIManager.Instance().Init();

        //NGUITools.GetUIRoot();

        ShowFPS(true);

        // 执行Lua
        //Client.ILuaSystem luaSystem = ClientGlobal.Instance().GetLuaSystem();
        //if (luaSystem != null)
        //{
        //    string strLuaMain = "Lua/Main.lua";
        //    LuaBinder.Bind(luaSystem.GetLuaState());
        //    luaSystem.DoFile(ref strLuaMain);
        //}

        /////////////////////////////////////////////////////////////////////////////////////////
        // 以下为测试代码,可以注释掉 不要删除,主要是示例矩阵和矢量的一些用法
        // 测试代码
        // Unity使用左手系
        Quaternion rotate = new Quaternion();

        rotate.eulerAngles = new Vector3(0, 90, 0);
        Matrix4x4 mat = new Matrix4x4();

        mat.SetTRS(Vector3.zero, rotate, Vector3.one);

        // 获取矩阵中的轴向量
        Quaternion rot   = new Quaternion();
        Vector3    right = mat.GetColumn(0); // X
        Vector4    up    = mat.GetColumn(1); // Y
        Vector4    look  = mat.GetColumn(2); // Z

        rot.SetLookRotation(look, up);

        // 示例:旋转向量
        right = rotate * right;
        /////////////////////////////////////////////////////////////////////
    }