Пример #1
0
    /// <summary>
    /// 添加伤害体 TODO
    /// </summary>
    /// <param name="damageBodyObj"></param>
    /// <param name="skillId"></param>
    /// <param name="damageId"></param>
    /// <returns></returns>
    public DamageBody AddDamageBody(BaseRole host, int dirX, int dirY, int skillId, int damageId)
    {
        if (MapManager.Instance == null || MapManager.Instance.HasCurMap == false)
        {
            return(null);
        }
        DamageBodyInfo dbInfo = DamageDataManager.Instance.GetDamageBodyInfo(damageId);

        if (dbInfo == null)
        {
            return(null);
        }

        GameObject obj = new GameObject();

        if (obj == null)
        {
            return(null);
        }
        string handleName = skillId + "_" + GetHandleIndex(); // 没想好

        obj.name = handleName;
        GlobalVarFun.AttachChild(m_rootObj, obj);
        DamageBody db = obj.AddComponent <DamageBody>();

        db.InitDamage(host, handleName, dirX, dirY, skillId, dbInfo);
        m_damageBodyDic.Add(handleName, db);
        return(db);
    }
Пример #2
0
    /// <summary>
    /// 设置Role初始数据 创建gameObject
    /// </summary>
    /// <param name="baseInfo"></param>
    /// <param name="initInfo"></param>
    public bool InitBaseRole(string handleName, BaseRoleInfo baseInfo, MapRoleInfo initInfo)
    {
        if (baseInfo == null || initInfo == null)
        {
            m_bStarted = false;
            return(false);
        }
        // 初始化数据
        m_sHandleName = handleName;
        m_eRoleType   = (eRoleType)initInfo.RoleType;
        m_baseInfo    = baseInfo;
        m_initInfo    = initInfo;
        m_fWidth      = baseInfo.Width;
        m_fHeight     = baseInfo.Height;
        m_fPosX       = initInfo.InitPosX;
        m_fPosY       = initInfo.InitPosY;
        int curHp = initInfo.InitHP;

        if (curHp == -1)
        {
            m_iCurHp = m_baseInfo.MaxHp;
        }
        else
        {
            m_iCurHp = curHp;
        }
        m_ulAction  = (ulong)initInfo.InitStatus;
        m_curStatus = (ePhtatus)m_ulAction;
        m_bIsStatic = initInfo.IsStatic;
        m_bCanMove  = initInfo.CanMove;

        // 初始化ShowObject
        GameObject prefabObj = Resource.LoadObj(m_baseInfo.PrefabName) as GameObject;

        if (null == prefabObj)
        {
            m_bStarted = false;
            return(false);
        }
        GameObject showObj = GameObject.Instantiate(prefabObj);

        showObj.name = "actor";
        GlobalVarFun.AttachChild(gameObject, showObj);
        m_showObj = showObj;

        // 初始化m_mapRole
        if (m_mapRole == null)
        {
            m_mapRole = new MapRole(this);
        }
        m_mapRole.OnChangeMap(MapManager.Instance.curMapWorld, m_fPosX, m_fPosY, m_fWidth, m_fHeight);
        m_mapRole.SetInitData(m_baseInfo, m_initInfo);


        Clear();
        m_bStarted = true;
        return(true);
    }
Пример #3
0
    /// <summary>
    /// 设置伤害体初始数据
    /// </summary>
    /// <returns></returns>
    public bool InitDamage(BaseRole host, string handleName, int dirX, int dirY, int skillId, DamageBodyInfo node)
    {
        if (host == null || node == null)
        {
            m_bStarted = false;
            return(false);
        }
        m_host           = host;
        m_sHandleName    = handleName;
        m_iSkillID       = skillId;
        m_eDamageType    = (eDamageBodyType)node.DamageType;
        m_eMoveType      = (eDamageMoveType)node.MoveType;
        m_damageBodyInfo = node;
        // TODO 可能有很多个?
        GameObject prefabObj = Resource.LoadObj(m_damageBodyInfo.PrefabName) as GameObject;

        if (null == prefabObj)
        {
            m_bStarted = false;
            return(false);
        }
        GameObject showObj = GameObject.Instantiate(prefabObj);

        showObj.name = "node";
        GlobalVarFun.AttachChild(gameObject, showObj);
        m_fWidth       = m_damageBodyInfo.Width;
        m_fHeight      = m_damageBodyInfo.Height;
        m_fEsTime      = m_damageBodyInfo.EsTime;
        m_iDamageCount = m_damageBodyInfo.DamageCount;
        m_iDamage      = m_damageBodyInfo.DamageValue;
        m_fPosX        = host.m_fPositionX + m_damageBodyInfo.OffsetX;
        m_fPosY        = host.m_fPositionY + m_damageBodyInfo.OffsetY;
        m_iDirX        = dirX;
        m_iDirY        = dirY;
        m_fVelocityX   = dirX * m_damageBodyInfo.MoveVelocity;
        m_fVelocityY   = dirY * m_damageBodyInfo.MoveVelocity;
        m_velocity.x   = m_fVelocityX;
        m_velocity.y   = m_fVelocityY;

        if (m_mapDamage == null)
        {
            m_mapDamage = new MapDamage(this);
        }
        m_mapDamage.InitB2Body(MapManager.Instance.curMapWorld, m_fPosX, m_fPosY, m_fWidth, m_fHeight);
        m_mapDamage.SetCurVelocityX(m_fVelocityX);
        m_mapDamage.SetCurVelocityY(m_fVelocityY);

        Clear();
        m_bStarted   = true;
        m_fBeginTime = GlobalVarFun.GetTime();
        return(true);
    }
Пример #4
0
    public bool AddRoleObj(string handleName, GameObject roleObj, MapRoleInfo initInfo)
    {
        BaseRole baseRole = null;

        if (true == initInfo.CanControl)
        {
            baseRole = CreatePlayer(roleObj);
        }
        else
        {
            baseRole = CreateBaseRole(roleObj);
        }
        if (baseRole == null)
        {
            return(false);
        }

        BaseRoleInfo baseInfo = RoleDataManager.Instance.GetRoleBaseInfo(initInfo.RoleID);

        if (baseInfo == null)
        {
            GameObject.Destroy(roleObj);
            return(false);
        }
        bool setSuc = baseRole.InitBaseRole(handleName, baseInfo, initInfo);

        if (setSuc)
        {
            GameObject sideObj = GetSideObj(initInfo.RoleType);
            if (sideObj == null)
            {
                sideObj = m_rootObj;
            }
            GlobalVarFun.AttachChild(sideObj, roleObj);
            m_roleDic.Add(handleName, baseRole);
        }
        else
        {
            GameObject.Destroy(roleObj);
            return(false);
        }
        return(true);
    }
Пример #5
0
 public RoleManager()
 {
     _instance = this;
     m_rootObj = GlobalVarFun.GetGlobalObj("RoleRoot");
     if (m_rootObj == null)
     {
         m_bLoaded = false;
         return;
     }
     for (int i = 0; i < 4; i++)
     {
         GameObject side = new GameObject(); // GlobalVarFun.GetChild(m_rootObj, "side_" + i);
         if (side == null)
         {
             break;
         }
         side.name = "side_" + i;
         GlobalVarFun.AttachChild(m_rootObj, side);
         m_sideList.Add(side);
     }
     m_bLoaded = true;
 }