예제 #1
0
        /// <summary>
        /// 获取建筑数据
        /// </summary>
        /// <param name="id">唯一标识</param>
        /// <param name="typeId">类型id</param>
        /// <param name="team">队伍id</param>
        /// <returns></returns>
        public DtoBuild GetDtoBuild(int id, int typeId, int team)
        {
            // 获取建筑模型
            BuildModel model = BuildData.GetBuildData(typeId);
            DtoBuild   build = new DtoBuild(id, typeId, team, model.Hp, model.Attack, model.Defense,
                                            model.AttackDistance, model.AttackInterval, model.Name, model.Agressire, model.Rebirth, model.RebirthTime);

            return(build);
        }
예제 #2
0
        /// <summary>
        /// 根据标识id获取建筑
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public DtoBuild GetDtoBuild(int id)
        {
            DtoBuild build = null;

            if (TeamOneBuilds.TryGetValue(id, out build))
            {
                return(build);
            }
            if (TeamTwoBuilds.TryGetValue(id, out build))
            {
                return(build);
            }

            return(null);
        }
예제 #3
0
    /// <summary>
    /// 初始化游戏对象
    /// </summary>
    /// <param name="heros"></param>
    /// <param name="builds"></param>
    public void InitData(DtoHero[] heros, DtoBuild[] builds, SkillModel[] skills)
    {
        int myTeam = GetMyTeamId(heros, GameData.Player.Id);

        // 初始化技能数据
        SkillManager.Instance.Init(heros, skills);

        #region 英雄

        // 创建英雄
        GameObject go = null;
        foreach (DtoHero item in heros)
        {
            if (item.Team == 1)
            {
                go = Instantiate(Resources.Load <GameObject>(Paths.RES_MODEL_HERO + item.Name),
                                 Team1HeroPoint[0].position, Quaternion.AngleAxis(180, Vector3.up));
                go.transform.SetParent(Team1Parent);
            }
            else
            {
                go = Instantiate(Resources.Load <GameObject>(Paths.RES_MODEL_HERO + item.Name),
                                 Team2HeroPoint[0].position, Quaternion.AngleAxis(180, Vector3.up));
                go.transform.SetParent(Team2Parent);
            }

            // 初始化控制器
            AIBaseCtrl ctrl = go.GetComponent <AIBaseCtrl>();
            ctrl.Init(item, item.Team == myTeam);
            CtrlDict.Add(item.Id, ctrl);

            // 判断这个英雄是不是自己
            if (item.Id == GameData.Player.Id)
            {
                // 保存自己英雄的控制器
                GameData.HeroCtrl = ctrl;
                // 保存自己英雄的数据
                GameData.HeroData = ctrl.Model as DtoHero;
            }
        }

        #endregion

        #region 建筑

        // 创建建筑
        for (int i = 0; i < builds.Length; i++)
        {
            DtoBuild build = builds[i];
            if (build.Team == 1)
            {
                go = Team1Builds[build.TypeId - 1];
                go.SetActive(true);
            }
            else if (build.Team == 2)
            {
                go = Team2Builds[build.TypeId - 1];
                go.SetActive(true);
            }

            // 初始化控制器
            AIBaseCtrl ctrl = go.GetComponent <AIBaseCtrl>();
            ctrl.Init(build, build.Team == myTeam);
            if (build.Team == myTeam)
            {
                ctrl.Init(build, true);
                ctrl.MiniMapHead.color = Color.blue;
            }
            else
            {
                ctrl.Init(build, false);
                ctrl.MiniMapHead.color = Color.red;
            }

            CtrlDict.Add(build.Id, ctrl);
        }

        #endregion

        // 发送初始化完成的消息
        MOBAClient.BattleManager.Instance.InitComplete();
    }