示例#1
0
    //-------------------------------------------------------------------------------------------------------

    /**
     * @brief 构建实体创建数据
     * @param type 实体类型
     * @param data 服务器数据
     */
    public static EntityCreateData BuildCreateEntityData(EntityType type, GameCmd.t_MapUserData data)
    {
        EntityCreateData entityData = new EntityCreateData();

        // 构建EntityCreateData
        entityData.ID = data.userdata.dwUserID;

        if (UserData.IsMainRoleID(data.userdata.dwUserID))
        {
            entityData.strName = UserData.CurrentRole.name;
        }
        else
        {
            entityData.strName = "";
        }

        switch (type)
        {
        case EntityType.EntityType_Player:
        {
            entityData.PropList = new EntityAttr[(int)PlayerProp.End - (int)EntityProp.Begin];
            entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max];
            BuildPlayerPropList(data, ref entityData.PropList);
            // 根据时装数据决定是否使用外观
            BuildPlayerViewProp(data, ref entityData.ViewList);
            break;
        }
        }

        return(entityData);
    }
示例#2
0
    public static EntityCreateData BuildRobotEntityData(uint dwTempID, uint baseID, uint job, uint level, string name = "", uint moveSpeed = 1)
    {
        EntityCreateData entityData = new EntityCreateData();

        entityData.ID = dwTempID;
        table.NpcDataBase npcdb = GameTableManager.Instance.GetTableItem <table.NpcDataBase>(baseID);
        if (npcdb != null)
        {
            if (string.IsNullOrEmpty(name))
            {
                entityData.strName = npcdb.strName;
            }
            else
            {
                entityData.strName = name;
            }
        }
        entityData.PropList = new EntityAttr[(int)RobotProp.End - (int)EntityProp.Begin];
        entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max];
        table.RobotDataBase robotdata = GameTableManager.Instance.GetTableItem <table.RobotDataBase>(job, (int)level);
        if (robotdata != null)
        {
            BuildRobotPropList(robotdata, npcdb, moveSpeed, ref entityData.PropList);
            BuildRobotViewProp(robotdata, ref entityData.ViewList);
        }
        return(entityData);
    }
示例#3
0
文件: KNpc.cs 项目: zuojiashun/src
    public int SetDisplayData(uint uID)
    {
        IEntitySystem es = ClientGlobal.Instance().GetEntitySystem();

        table.NpcDataBase npctable = GameTableManager.Instance.GetTableItem <table.NpcDataBase>(uID);
        if (npctable == null)
        {
            return(0);
        }

        GameCmd.t_MapNpcDataPos npcdata = new GameCmd.t_MapNpcDataPos();
        npcdata.mapnpcdata         = new GameCmd.t_MapNpcData();
        npcdata.mapnpcdata.npcdata = new GameCmd.t_NpcData();

        npcdata.mapnpcdata.npcdata.dwBaseID = uID;

        npcdata.mapnpcdata.npcdata.dwTempID  = this.m_dwID;
        npcdata.mapnpcdata.npcdata.movespeed = 600;

        EntityCreateData data = RoleUtil.BuildCreateEntityData(EntityType.EntityType_NPC, npcdata, 0);

        IEntity npc = es.CreateEntity(EntityType.EntityType_NPC, data, true) as INPC;

        //ISkillPart skillPart = npc.GetPart(EntityPart.Skill) as ISkillPart;
        //skillPart.ReqNpcUseSkill(208);

        m_pEntity = npc;

        return(1);
    }
示例#4
0
    public void Execute(stMainUserDataUserCmd_S cmd)
    {
        //MainRole.Instance.MainData = cmd.data;

        // TODO: 后面再来处理
        IEntitySystem es = ClientGlobal.Instance().GetEntitySystem();

        if (es == null)
        {
            Engine.Utility.Log.Error("严重错误:EntitySystem is null!");
            return;
        }

        EntityCreateData data = new EntityCreateData();

        data.PropList = new EntityAttr[(int)PlayerProp.End - (int)EntityProp.Begin];
        data.ID       = cmd.data.dwUserID;
        RoleUtil.BuildPlayerPropList(cmd.data, ref data.PropList);
        IPlayer player = es.FindPlayer(cmd.data.dwUserID);

        if (player != null)
        {
            player.UpdateProp(data);
            DataManager.Manager <UIPanelManager>().SendMsg(PanelID.MainPanel, UIMsgID.eSetRoleProperty, player);
        }
    }
示例#5
0
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    //-------------------------------------------------------------------------------------------------------

    /**
     * @brief 构建实体创建数据
     * @param type 实体类型
     * @param data 服务器数据
     */
    public EntityCreateData BuildCreateEntityData(EntityType type, uint nBaseID, int nState)
    {
        EntityCreateData entityData = new EntityCreateData();

        // 构建EntityCreateData
        entityData.ID      = ++m_uEntityID;
        entityData.strName = "";

        switch (type)
        {
        case EntityType.EntityType_Plant:
        {
            entityData.PropList = new EntityAttr[(int)PlantProp.End - (int)EntityProp.Begin];
            int index = 0;
            entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState);
            entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID);
            break;
        }

        case EntityType.EntityType_Animal:
        {
            entityData.PropList = new EntityAttr[(int)AnimalProp.End - (int)EntityProp.Begin];
            int index = 0;
            entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState);
            entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID);
            break;
        }

        case EntityType.EntityType_Tree:
        {
            entityData.PropList = new EntityAttr[(int)TreeProp.End - (int)EntityProp.Begin];
            int index = 0;
            entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState);
            entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID);
            break;
        }

        case EntityType.EntityType_Minerals:
        {
            entityData.PropList = new EntityAttr[(int)MineralsProp.End - (int)EntityProp.Begin];
            int index = 0;
            entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState);
            entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID);
            break;
        }

        case EntityType.EntityType_Soil:
        {
            entityData.PropList = new EntityAttr[(int)SoilProp.End - (int)EntityProp.Begin];
            int index = 0;
            entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState);
            entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID);
            break;
        }
        }

        return(entityData);
    }
示例#6
0
        //bool isHide = false;
        //public bool IsHide
        //{
        //    set
        //    {
        //        isHide = value;
        //    }
        //    get
        //    {
        //        return isHide;
        //    }
        //}
        public override bool Create(EntityCreateData data, ColliderCheckType colliderCheckType)
        {
            bool bRet = base.Create(data, colliderCheckType);

            // 创建状态机
            CreateStateMachine();

            return(bRet);
        }
示例#7
0
        //-------------------------------------------------------------------------------------------------------
        public virtual bool CreateEntityView(EntityCreateData data)
        {
            if (m_EntityView == null)
            {
                m_EntityView = new EntityView(this, data);
            }

            return(true);
        }
示例#8
0
    //-------------------------------------------------------------------------------------------------------

    /**
     * @brief 添加玩家(木偶)
     * @param strName 名称
     * @param nJob 职业
     * @param nSex 性别
     * @param propList 外观属性
     * @param bMainHost 是否是主角对象
     */
    public IPuppet AddPuppet(string strName, int nJob, int nSex, EntityViewProp[] propList, bool bMainHost = false)
    {
        EntityCreateData data = new EntityCreateData();

        data.ID      = ++m_uEntityID;
        data.strName = strName;

        int speed = 0;

        Client.IPlayer player = ClientGlobal.Instance().MainPlayer;
        if (player != null)
        {
            speed = player.GetProp((int)WorldObjProp.MoveSpeed);
        }


        data.PropList = new EntityAttr[(int)PuppetProp.End - (int)EntityProp.Begin];
        int index = 0;

        data.PropList[index++] = new EntityAttr((int)PuppetProp.Job, nJob);
        data.PropList[index++] = new EntityAttr((int)PuppetProp.Sex, nSex);
        data.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, 0);
        data.PropList[index++] = new EntityAttr((int)WorldObjProp.MoveSpeed, speed);
        data.ViewList          = propList;

        IEntitySystem es = ClientGlobal.Instance().GetEntitySystem();

        if (es == null)
        {
            Engine.Utility.Log.Error("严重错误:EntitySystem is null!");
            return(null);
        }

        IPuppet entity = es.CreateEntity(EntityType.EntityType_Puppet, data) as IPuppet;

        if (entity == null)
        {
            Engine.Utility.Log.Error("AddEntity:创建家园对象失败!");
            return(null);
        }

        if (bMainHost)
        {
            IControllerSystem cs = ClientGlobal.Instance().GetControllerSystem();
            if (cs == null)
            {
                return(null);
            }

            cs.GetActiveCtrl().SetHost(entity);
            CameraFollow.Instance.target = entity;
        }

        m_dicPuppet.Add((int)entity.GetID(), entity);

        return(entity);
    }
示例#9
0
文件: Box.cs 项目: zuojiashun/src
        //-------------------------------------------------------------------------------------------------------
        public override bool CreateEntityView(EntityCreateData data)
        {
            base.CreateEntityView(data);
            if (GetEntityType() != EntityType.EntityType_Box)
            {
                Engine.Utility.Log.Error("Box:CreateEntityView failed:{0}", GetName());
                return(false);
            }


            int    nID        = GetProp((int)EntityProp.BaseID);
            string strResName = "";
            var    table_data = GameTableManager.Instance.GetTableItem <table.ItemDataBase>((uint)nID);

            if (table_data == null)
            {
                Engine.Utility.Log.Error("不存在这个NPC: " + nID);
                return(false);
            }
            if (nID == 0)
            {
                SetName(table_data.itemName + "X" + GetProp((int)BoxProp.Number));
            }
            else
            {
                SetName(table_data.itemName);
            }

            table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.dropIcon);
            if (resDB == null)
            {
                Engine.Utility.Log.Error("Box:找不到Box模型资源路径配置{0}", table_data.dropIcon);
                return(false);
            }
            strResName = resDB.strPath;

            string strPath, strFileName, strExt, strFileNameNoExt;

            Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt);
            m_strObjName = strFileNameNoExt;

            if (data.bImmediate)
            {
                // 立即创建
                if (!m_EntityView.Create(ref strResName, OnCreateRenderObj))
                {
                    Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName);
                }
            }
            else
            {
                EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj);
            }

            return(false);
        }
示例#10
0
文件: Box.cs 项目: zuojiashun/src
        public override bool Create(EntityCreateData data, ColliderCheckType colliderCheckType)
        {
            // 设置属性
            //InitProp();
            //ApplyProp(data);

            //// 创建外观对象
            //CreateEntityView(data);

            return(base.Create(data, colliderCheckType));
        }
示例#11
0
        public virtual bool Create(EntityCreateData data, ColliderCheckType colliderCheckType)
        {
            if (data == null)
            {
                Engine.Utility.Log.Error("Create entity failed!");
                return(false);
            }

            //m_strName = data.strName;
            m_ColliderCheckType = colliderCheckType;
            return(true);
        }
示例#12
0
文件: Monster.cs 项目: zuojiashun/src
        public override bool CreateEntityView(EntityCreateData data)
        {
            base.CreateEntityView(data);
            if (GetEntityType() != EntityType.EntityType_Monster)
            {
                Engine.Utility.Log.Error("CreateEntityView failed:{0}", GetName());
                return(false);
            }

            int    nID        = GetProp((int)EntityProp.BaseID);
            string strResName = "";

            if (nID == 0)
            {
                // 则使用默认数据
                // strResName = data.strName;
            }
            else
            {
                var table_data = GameTableManager.Instance.GetTableItem <table.NpcDataBase>((uint)nID);
                if (table_data == null)
                {
                    Engine.Utility.Log.Error("不存在这个NPC: " + nID);
                    return(false);
                }

                table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.dwModelSet);
                if (resDB == null)
                {
                    Engine.Utility.Log.Error("NPC:找不到NPC模型资源路径配置{0}", table_data.dwModelSet);
                    return(false);
                }
                strResName = resDB.strPath;
                SetName(table_data.strName);
            }

            string strPath, strFileName, strExt, strFileNameNoExt;

            Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt);
            m_strObjName = strFileNameNoExt;

            // TODO: 根据配置表读取数据
            //if (!m_EntityView.Create(ref strResName, OnCreateRenderObj))
            //{
            //    Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName);
            //}
            EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj);

            return(false);
        }
示例#13
0
        public IEntity CreateEntity(EntityType etype, EntityCreateData data)
        {
            if (!CheckEntityType(etype))
            {
                return(null);
            }

            // 设置属性
            IEntity en = CreateEntityObj(etype, data);

            if (en != null)
            {
                en.UpdateProp(data); // 设置属性
            }

            return(en);
        }
示例#14
0
文件: Tree.cs 项目: zuojiashun/src
        public override bool CreateEntityView(EntityCreateData data)
        {
            base.CreateEntityView(data);
            //if (GetEntityType() != EntityType.EntityType_NPC)
            //{
            //    Engine.Utility.Log.Error("NPC:CreateEntityView failed:{0}", GetName());
            //    return false;
            //}

            int    nID        = GetProp((int)EntityProp.BaseID);
            string strResName = "";

            if (nID == 0)
            {
                // 则使用默认数据
                // strResName = data.strName;
            }
            else
            {
                var table_data = GameTableManager.Instance.GetTableItem <table.HomeLandViewDatabase>((uint)nID, GetProp((int)HomeProp.State));
                if (table_data == null)
                {
                    Engine.Utility.Log.Error("不存在这个对象: " + nID);
                    return(false);
                }

                table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>((uint)table_data.dwModelID);
                if (resDB == null)
                {
                    Engine.Utility.Log.Error("Homeland:找不到Homeland模型资源路径配置{0}", table_data.dwModelID);
                    return(false);
                }

                strResName = resDB.strPath;
            }

            SetName(data.strName);

            // TODO: 根据配置表读取数据
            if (!m_EntityView.Create(ref strResName, OnCreateRenderObj))
            {
                Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName);
            }

            return(false);
        }
示例#15
0
        //-------------------------------------------------------------------------------------------------------
        public override bool CreateEntityView(EntityCreateData data)
        {
            base.CreateEntityView(data);
            //if (GetEntityType() != EntityType.EntityType_NPC)
            //{
            //    Engine.Utility.Log.Error("NPC:CreateEntityView failed:{0}", GetName());
            //    return false;
            //}

            int    nID        = GetProp((int)EntityProp.BaseID);
            string strResName = "";

            if (nID == 0)
            {
                // 则使用默认数据
                // strResName = data.strName;
            }
            else
            {
                int nModepathID = GameTableManager.Instance.GetClientGlobalConst <int>("Homeland", "PastureObjPath");
                table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>((uint)nModepathID);
                if (resDB == null)
                {
                    Engine.Utility.Log.Error("Homeland:找不到Homeland模型资源路径配置{0}", nModepathID);
                    return(false);
                }
                strResName = resDB.strPath;
            }

            SetName(data.strName);

            string strPath, strFileName, strExt, strFileNameNoExt;

            Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt);
            m_strObjName = strFileNameNoExt;

            // TODO: 根据配置表读取数据
            //if (!m_EntityView.Create(ref strResName, OnCreateRenderObj))
            //{
            //    Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName);
            //}
            EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj);

            return(false);
        }
示例#16
0
        public override bool Create(EntityCreateData data, ColliderCheckType colliderCheckType)
        {
            // 设置属性
            InitProp();
            ApplyProp(data);

            // 创建组件
            CreateCommpent();

            // 初始化逻辑部件
            CreatePart();

            // 创建外观对象
            CreateEntityView(data);

            // 创建状态机
            //CreateStateMachine();
            return(base.Create(data, colliderCheckType));
        }
示例#17
0
        private EntityCreateData GetEntityCreateData(Entity entity)
        {
            var data     = new EntityCreateData();
            var dataList = new List <EData>();

            foreach (var comp in entity.Components)
            {
                if (comp is NetComponent)
                {
                    var netComp = (NetComponent)comp;
                    if (netComp.HasEData)
                    {
                        dataList.Add(netComp.EntityData);
                    }
                }
            }
            data.Data = dataList.ToArray();
            return(data);
        }
示例#18
0
        //-------------------------------------------------------------------------------------------------------
        // 创建实体

        /**
         * @brief 创建实体
         * @param etype 实体类型
         * @param data 实体数据
         * @param bImmediate 是否立即创建
         */
        public IEntity CreateEntity(EntityType etype, EntityCreateData data, bool bImmediate = false)
        {
            data.bImmediate = bImmediate;
            if (bOnlyCreateMainPlayer)
            {
                if (data.bMainPlayer)
                {
                    return(EntityFactory.Instance().CreateEntity(etype, data));
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(EntityFactory.Instance().CreateEntity(etype, data));
            }
        }
示例#19
0
    //-------------------------------------------------------------------------------------------------------

    /**
     * @brief 构建实体创建数据
     * @param type 实体类型
     * @param data 服务器数据
     */
    public static EntityCreateData BuildCreateEntityData(EntityType type, t_MapObjectData data)
    {
        EntityCreateData entityData = new EntityCreateData();

        // 构建EntityCreateData
        entityData.ID      = data.qwThisID;
        entityData.strName = "";

        switch (type)
        {
        case EntityType.EntityType_Box:
        {
            entityData.PropList = new EntityAttr[(int)BoxProp.End - (int)EntityProp.Begin];
            BuildBoxPropList(data, ref entityData.PropList);
            break;
        }
        }

        return(entityData);
    }
示例#20
0
        //-------------------------------------------------------------------------------------------------------
        public void ApplyProp(EntityCreateData data)
        {
            if (data == null)
            {
                return;
            }

            if (data.PropList == null)
            {
                return;
            }

            m_uID = data.ID;

            for (int i = 0; i < data.PropList.Length; ++i)
            {
                if (data.PropList[i] != null)
                {
                    SetProp(data.PropList[i].nPropIndex, data.PropList[i].value);
                }
            }
        }
示例#21
0
 public void OnAddPet(stAddPetUserCmd_S cmd)
 {
     if (cmd.action == (uint)AddPetAction.AddPetAction_Refresh)
     {
         IEntitySystem es = ClientGlobal.Instance().GetEntitySystem();
         if (es == null)
         {
             Engine.Utility.Log.Error("严重错误:EntitySystem is null!");
             return;
         }
         EntityCreateData data = new EntityCreateData();
         data.PropList = new EntityAttr[(int)PetProp.End - (int)EntityProp.Begin];
         data.ID       = cmd.obj.id;
         RoleUtil.BuildPetPropListByPetData(cmd.obj, ref data.PropList);
         IPet pet = es.FindPet(cmd.obj.id);
         if (pet != null)
         {
             pet.UpdateProp(data);
             pet.SetExtraData(cmd.obj);
             DataManager.Manager <PetDataManager>().RefreshPetProp();
         }
         else
         {
             Log.Error("pet entity create failed !!!");
         }
     }
     else
     {
         AddPet(cmd.obj);
         PetDataBase pdb = GameTableManager.Instance.GetTableItem <PetDataBase>(cmd.obj.base_id);
         if (pdb != null)
         {
             string tips = string.Format("{0}{1}", CommonData.GetLocalString("获得珍兽"), pdb.petName);
             TipsManager.Instance.ShowTips(tips);
             string txt = DataManager.Manager <TextManager>().GetLocalFormatText(LocalTextType.Talk_System_huodezhanghun, pdb.petName);
             ChatDataManager.SendToChatSystem(txt);
         }
     }
 }
示例#22
0
    public void Execute(GameCmd.stRobotLevelUpMagicUserCmd_S cmd)
    {
        Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem();
        if (es == null)
        {
            return;
        }
        Client.IRobot robot = es.FindRobot(cmd.npc_id);
        if (robot == null)
        {
            return;
        }
        uint             baseID     = (uint)robot.GetProp((int)Client.EntityProp.BaseID);
        uint             job        = (uint)robot.GetProp((int)Client.RobotProp.Job);
        uint             level      = (uint)robot.GetProp((int)Client.CreatureProp.Level);
        string           name       = robot.GetName();
        EntityCreateData createData = RoleUtil.BuildRobotEntityData(cmd.npc_id, baseID, job, level, name);

        stPropUpdate lvprop = new stPropUpdate();
        stPropUpdate prop   = new stPropUpdate();

        prop.uid   = robot.GetUID();
        lvprop.uid = robot.GetUID();

        prop.nPropIndex   = (int)CreatureProp.Hp;
        lvprop.nPropIndex = (int)CreatureProp.Level;

        prop.oldValue   = robot.GetProp((int)CreatureProp.Hp);
        lvprop.oldValue = robot.GetProp((int)CreatureProp.Level);

        robot.UpdateProp(createData);

        prop.newValue   = robot.GetProp((int)CreatureProp.Hp);
        lvprop.newValue = robot.GetProp((int)CreatureProp.Level);

        Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_HPUPDATE, prop);
        Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_PROPUPDATE, lvprop);
    }
示例#23
0
    //-------------------------------------------------------------------------------------------------------

    /**
     * @brief 构建实体创建数据
     * @param type 实体类型
     * @param data 服务器数据
     */
    public static EntityCreateData BuildCreateEntityData(EntityType type, GameCmd.t_MapNpcDataPos data, uint master_id)
    {
        if (type == EntityType.EntityTYpe_Robot)
        {
            t_NpcData npcdata = data.mapnpcdata.npcdata;
            return(BuildRobotEntityData(npcdata.dwTempID, npcdata.dwBaseID, npcdata.job, npcdata.level, npcdata.name, npcdata.movespeed));
        }

        EntityCreateData entityData = new EntityCreateData();

        // 构建EntityCreateData
        entityData.ID      = data.mapnpcdata.npcdata.dwTempID;
        entityData.strName = data.mapnpcdata.npcdata.name;

        switch (type)
        {
        case EntityType.EntityType_Monster:
        {
            entityData.PropList = new EntityAttr[(int)NPCProp.End - (int)EntityProp.Begin];
            entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max];
            BuildNPCPropList(data, ref entityData.PropList);
            break;
        }

        case EntityType.EntityType_NPC:
        {
            entityData.PropList = new EntityAttr[(int)NPCProp.End - (int)EntityProp.Begin];
            entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max];
            BuildNPCPropList(data, ref entityData.PropList, master_id);
            // 根据时装数据决定是否使用外观
            BuildNPCViewProp(data, ref entityData.ViewList);
            break;
        }
        }

        return(entityData);
    }
示例#24
0
    //添加实体
    public IEntity AddEntity(string strName, EntityType type, uint nBaseID, int nState)
    {
        EntityCreateData data = BuildCreateEntityData(type, nBaseID, nState);

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

        data.strName = strName;

        IEntitySystem es = ClientGlobal.Instance().GetEntitySystem();

        if (es == null)
        {
            Engine.Utility.Log.Error("严重错误:EntitySystem is null!");
            return(null);
        }

        IEntity entity = es.CreateEntity(type, data);

        if (entity == null)
        {
            Engine.Utility.Log.Error("AddEntity:创建家园对象失败!");
            return(null);
        }

        if (entity.GetEntityType() == EntityType.EntityType_Animal)
        {
            m_AnimalManager.AddAnimal(entity as IAnimal);
        }

        m_dicEntity.Add((int)entity.GetID(), entity);

        return(entity);
    }
示例#25
0
        private IEntity CreateEntityObj(EntityType etype, EntityCreateData data)
        {
            IEntity en = null;

            switch (etype)
            {
            case EntityType.EntityType_Player:
            {
                Player player = new Player();
                if (player != null)
                {
                    player.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(player);
                    if (data.bMainPlayer)
                    {
                        EntitySystem.m_ClientGlobal.MainPlayer = player;
                    }

                    player.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }
                en = player;
                break;
            }

            case EntityType.EntityType_Monster:
            {
                Monster monster = new Monster();
                if (monster != null)
                {
                    monster.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(monster);
                    monster.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = monster;
                break;
            }

            case EntityType.EntityType_NPC:
            {
                NPC npc = new NPC();
                if (npc != null)
                {
                    npc.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(npc);
                    npc.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = npc;
                break;
            }

            case EntityType.EntityTYpe_Robot:
            {
                Robot robot = new Robot();
                if (robot != null)
                {
                    robot.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(robot);
                    robot.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = robot;
                break;
            }

            case EntityType.EntityType_Item:     // 物品
            {
                Item item = new Item();
                if (item != null)
                {
                    item.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(item);
                    item.Create(data, ColliderCheckType.ColliderCheckType_null);
                }

                en = item;
                break;
            }

            case EntityType.EntityType_Pet:     // 宠物
            {
                Pet pet = new Pet();
                if (pet != null)
                {
                    pet.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(pet);
                    pet.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = pet;
                break;
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////
            // 家园对象
            case EntityType.EntityType_Plant:     // 植物
            {
                Plant plant = new Plant();
                if (plant != null)
                {
                    plant.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(plant);
                    plant.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = plant;
                break;
            }

            case EntityType.EntityType_Animal:     // 动物
            {
                Animal animal = new Animal();
                if (animal != null)
                {
                    animal.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(animal);
                    animal.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = animal;
                break;
            }

            case EntityType.EntityType_Tree:     // 许愿树
            {
                Tree tree = new Tree();
                if (tree != null)
                {
                    tree.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(tree);
                    tree.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = tree;
                break;
            }

            case EntityType.EntityType_Minerals:     // 矿产
            {
                Minerals mine = new Minerals();
                if (mine != null)
                {
                    mine.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(mine);
                    mine.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = mine;
                break;
            }

            case EntityType.EntityType_Soil:     // 土地
            {
                Soil soil = new Soil();
                if (soil != null)
                {
                    soil.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(soil);
                    soil.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = soil;
                break;
            }

            case EntityType.EntityType_Puppet:     // 木偶
            {
                Puppet puppet = new Puppet();
                if (puppet != null)
                {
                    puppet.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(puppet);
                    puppet.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = puppet;
                break;
            }

            case EntityType.EntityType_Box:
            {
                //UnityEngine.Sprite sp;


                Box box = new Box();
                if (box != null)
                {
                    box.SetUID(MakeUID(etype, data.ID));
                    EntityManager.Instance().AddEntity(box);
                    box.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall);
                }

                en = box;
                break;
            }
            }

            //if(en!=null)
            //{
            //    Client.stCreateEntity createEntity = new Client.stCreateEntity();
            //    createEntity.uid = en.GetUID();
            //    Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_CREATEENTITY, createEntity);
            //}

            return(en);
        }
示例#26
0
        private void OnCreateRenderObj(Engine.IRenderObj obj, object param)
        {
            // 加载部件
            if (m_EntityView == null)
            {
                return;
            }
            //if (m_Data == null)
            //{
            //    Engine.Utility.Log.Error("m_data is null");
            //    return;
            //}
            //if (m_Data.ViewList == null)
            //{
            //    return;
            //}

            ////string strResName = "";
            //for (int i = 0; i < m_Data.ViewList.Length; ++i)
            //{
            //    if (m_Data.ViewList[i] == null)
            //    {
            //        continue;
            //    }

            //    if (m_Data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body)
            //    {
            //        var table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value);
            //        m_EntityView.AddSuitData(EquipPos.EquipPos_Body, m_Data.ViewList[i].value, table_data == null ? 0 : (int)table_data.resid, obj);
            //    }

            //    if (m_Data.ViewList[i].nPos != (int)EquipPos.EquipPos_Body)
            //    {
            //        // 读取时装配置表,挂接装备
            //        ChangeEquip changeEquip = new ChangeEquip();
            //        changeEquip.pos = (EquipPos)m_Data.ViewList[i].nPos;

            //        // 武器
            //        table.SuitDataBase table_data = null;
            //        int nSuitID = m_Data.ViewList[i].value;
            //        if (changeEquip.pos == EquipPos.EquipPos_Weapon)
            //        {
            //            if (m_Data.ViewList[i].value == 0)
            //            {
            //                table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value);
            //                if (table_data == null)
            //                {
            //                    var role_data = table.SelectRoleDataBase.Where((GameCmd.enumProfession)GetProp((int)PuppetProp.Job), (GameCmd.enmCharSex)GetProp((int)PuppetProp.Sex));
            //                    if (role_data == null)
            //                    {
            //                        Engine.Utility.Log.Error("OnCreateRenderObj:job{0}或者sex{1}数据非法!", GetProp((int)PuppetProp.Job), GetProp((int)PuppetProp.Sex));
            //                        return;
            //                    }

            //                    table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)role_data.weaponPath);
            //                }
            //            }
            //            else
            //            {
            //                table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value);
            //            }
            //        }
            //        else
            //        {
            //            table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value);
            //        }

            //        if (table_data != null)
            //        {
            //            nSuitID = (int)table_data.base_id;
            //        }
            //        else
            //        {
            //            Engine.Utility.Log.Error("OnCreateRenderObj:{0}位置 资源{1}找不到资源数据!", changeEquip.pos, m_Data.ViewList[i].value);
            //            return;
            //        }

            //        changeEquip.nSuitID = nSuitID;
            //        changeEquip.nLayer = m_Data.nLayer;
            //        SendMessage(EntityMessage.EntityCommand_ChangeEquip, changeEquip);
            //    }
            //}
            m_Data = null; // 释放资源

            // 根据全局配置设置阴影
            int nShadowLevel = EntitySystem.m_ClientGlobal.gameOption.GetInt("Render", "shadow", 1);

            m_EntityView.SetShadowLevel(nShadowLevel);

            // 播放下动画
            PlayAction(m_EntityView.GetCurAniName());

            Client.stCreateEntity createEntity = new Client.stCreateEntity();
            createEntity.uid = GetUID();
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_CREATEENTITY, createEntity);
        }
示例#27
0
        //-------------------------------------------------------------------------------------------------------
        public override bool CreateEntityView(EntityCreateData data)
        {
            base.CreateEntityView(data);

            m_Data = data;

            if (GetEntityType() != EntityType.EntityType_Puppet)
            {
                Engine.Utility.Log.Error("CreateEntityView failed:{0}", GetName());
                return(false);
            }

            //int nID = GetProp((int)EntityProp.BaseID);
            string strResName = "";

            //if (nID == 0)
            //{
            //    // 则使用默认数据
            //    strResName = data.strName;
            //}
            //else
            {
                if (data.ViewList != null)
                {
                    //Profiler.BeginSample("CreateEntityView:Table:Query");
                    for (int i = 0; i < data.ViewList.Length; ++i)
                    {
                        if (data.ViewList[i] == null)
                        {
                            continue;
                        }

                        if (data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body)
                        {
                            var table_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)data.ViewList[i].value);
                            if (table_data == null)
                            {
                                var role_data = table.SelectRoleDataBase.Where((GameCmd.enumProfession)GetProp((int)PuppetProp.Job), (GameCmd.enmCharSex)GetProp((int)PuppetProp.Sex));
                                if (role_data == null)
                                {
                                    Engine.Utility.Log.Error("CreateEntityView:job{0}或者sex{1}数据非法!", GetProp((int)PlayerProp.Job), GetProp((int)PlayerProp.Sex));
                                    return(false);
                                }

                                table_data             = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)role_data.bodyPathID);
                                data.ViewList[i].value = (int)role_data.bodyPathID;
                            }
                            if (table_data != null)
                            {
                                table.ResourceDataBase db = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.resid);
                                if (db == null)
                                {
                                    Debug.LogError("ResourceDataBase is null bodypahtid is " + table_data.resid + "  请检查resource 表格");
                                    return(false);
                                }
                                strResName = db.strPath;
                            }
                            else
                            {
                                strResName = "";
                            }


                            //if (m_EntityView != null)
                            //{
                            //    m_EntityView.AddSuitData(EquipPos.EquipPos_Body, data.ViewList[i].value, (int)table_data.resid);
                            //}
                        }
                    }
                    //Profiler.EndSample();
                }
            }

            // 设置名称
            SetName(data.strName);

            //Profiler.BeginSample("EntityView:Create");
            // TODO: 根据配置表读取数据
            if (!m_EntityView.Create(ref strResName, OnCreateRenderObj, m_Data.bImmediate))
            {
                Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName);
            }
            //Profiler.EndSample();
            //Profiler.EndSample();

            return(true);
        }
示例#28
0
文件: NPC.cs 项目: zuojiashun/src
        //-------------------------------------------------------------------------------------------------------
        public override bool CreateEntityView(EntityCreateData data)
        {
            m_Data = data;

            base.CreateEntityView(data);
            if (GetEntityType() != EntityType.EntityType_NPC)
            {
                Engine.Utility.Log.Error("NPC:CreateEntityView failed:{0}", GetName());
                return(false);
            }

            int     nID      = GetProp((int)EntityProp.BaseID);
            int     suitID   = GetProp((int)NPCProp.SuitID);
            int     masterID = GetProp((int)NPCProp.Masterid);
            int     type     = GetProp((int)NPCProp.MasterType);
            IEntity en       = EntityHelper.GetEntity((GameCmd.SceneEntryType)type, (uint)masterID);

            if (en != null)
            {
                if (EntityHelper.IsMainPlayer(en))
                {
                    m_isMySlave = true;
                }
            }
            string strResName = "";

            if (nID == 0)
            {
                // 则使用默认数据
                // strResName = data.strName;
            }
            else
            {
                var table_data = GameTableManager.Instance.GetTableItem <table.NpcDataBase>((uint)nID);
                if (table_data == null)
                {
                    Engine.Utility.Log.Error("不存在这个NPC: " + nID);
                    return(false);
                }
                m_bCanSelect = table_data.dwCanBeSelect == 1;
                if (m_Data.ViewList == null)
                {
                    uint modelID = table_data.dwModelSet;
                    if (suitID != 0)
                    {
                        table.SuitDataBase sdb = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)suitID, 1);
                        if (sdb != null)
                        {
                            if (sdb.resid != 0)
                            {
                                modelID = sdb.resid;
                            }
                        }
                    }
                    table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(modelID);
                    if (resDB == null)
                    {
                        Engine.Utility.Log.Error("NPC:找不到NPC模型资源路径配置{0}", modelID);
                        return(false);
                    }
                    strResName = resDB.strPath;
                }
                else
                {
                    for (int i = 0; i < data.ViewList.Length; ++i)
                    {
                        if (data.ViewList[i] == null)
                        {
                            continue;
                        }

                        if (data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body)
                        {
                            //if(data.ViewList[i].)
                            var suit_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)data.ViewList[i].value);
                            if (suit_data != null)
                            {
                                table.ResourceDataBase db = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(suit_data.resid);
                                if (db == null)
                                {
                                    Debug.LogError("ResourceDataBase is null bodypahtid is " + suit_data.resid + "  请检查resource 表格");
                                    return(false);
                                }
                                //string bodyPath = db.strPath;
                                //if (data.ViewList[i] != null)
                                //{
                                //    strResName = data.ViewList[i].value == 0 ? bodyPath : EntityHelper.GetModelPath((uint)data.ViewList[i].value, (Cmd.enmCharSex)GetProp((int)PlayerProp.Sex));
                                //}
                                strResName = db.strPath;
                            }
                            else
                            {
                                strResName = "";
                            }
                        }
                    }
                }

                // 技能形态
                m_Data.eSkillState = (SkillSettingState)GetProp((int)NPCProp.SkillStatus);

                if ((int)GameCmd.ArenaNpcType.ArenaNpcType_Player == GetProp((int)NPCProp.ArenaNpcType))
                {
                    SetName(m_Data.strName);
                }
                else
                {
                    if (string.IsNullOrEmpty(data.strName))
                    {
                        SetName(table_data.strName);
                    }
                    else
                    {
                        SetName(data.strName);
                    }
                }
                if (IsSummon())
                {
                    IEntitySystem es = EntitySystem.m_ClientGlobal.GetEntitySystem();
                    if (es != null)
                    {
                        IPlayer player = es.FindEntity <IPlayer>((uint)masterID);
                        if (player != null)
                        {
                            string playerName = player.GetName();
                            string summonName = GetName();
                            string tempName   = playerName + "的" + summonName;
                            SetName(tempName);
                        }
                    }
                }
            }

            // TODO: 根据配置表读取数据
            //if ( !m_EntityView.Create( ref strResName , OnCreateRenderObj ) )
            //{
            //    Engine.Utility.Log.Error( "CreateEntityView failed:{0}" , strResName );
            //}

            string strPath, strFileName, strExt, strFileNameNoExt;

            Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt);
            m_strObjName = strFileNameNoExt;

            // 功能NPC立即创建
            if (!IsMonster() && !IsPet() && !IsSummon())
            {
                m_Data.bImmediate = true;
            }

            if (m_Data.bImmediate)
            {
                // 立即创建
                if (!m_EntityView.Create(ref strResName, OnCreateRenderObj, false))
                {
                    Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName);
                }
            }
            else
            {
                EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj);
            }


            return(false);
        }
示例#29
0
文件: Player.cs 项目: zuojiashun/src
        public override bool CreateEntityView(EntityCreateData data)
        {
            //Profiler.BeginSample("CreateEntityView");
            m_Data = data;
            base.CreateEntityView(data);
            if (GetEntityType() != EntityType.EntityType_Player)
            {
                m_bChangeRestore = false;
                Engine.Utility.Log.Error("CreateEntityView failed:{0}", GetName());
                return(false);
            }

            string strResName = "";
            //if (data.PropList != null)
            //{
            //    for (int i = 0; i < data.PropList.Length; ++i )
            //    {
            //        if (data.PropList[i].nPropIndex == (int)PlayerProp.TransModelResId)
            //        {
            int ntransModelID = GetProp((int)PlayerProp.TransModelResId);//.PropList[i].value;

            if (ntransModelID != 0)
            {
                table.ResourceDataBase resData = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>((uint)ntransModelID);
                if (resData != null)
                {
                    strResName = resData.strPath;
                }
            }
            //            break;
            //        }
            //    }
            //}

            table.SuitDataBase table_data = null;
            if (string.IsNullOrEmpty(strResName) && data.ViewList != null)
            {
                //Profiler.BeginSample("CreateEntityView:Table:Query");
                for (int i = 0; i < data.ViewList.Length; ++i)
                {
                    if (data.ViewList[i] == null)
                    {
                        continue;
                    }

                    if (data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body)
                    {
                        table_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)data.ViewList[i].value);
                        if (table_data == null)
                        {
                            GameCmd.enumProfession profession = (GameCmd.enumProfession)GetProp((int)PlayerProp.Job);
                            GameCmd.enmCharSex     sex        = (GameCmd.enmCharSex)GetProp((int)PlayerProp.Sex);
                            var role_data = table.SelectRoleDataBase.Where(profession, sex);
                            if (role_data == null)
                            {
                                Engine.Utility.Log.Error("CreateEntityView:job{0}或者sex{1}数据非法!", profession, sex);
                                return(false);
                            }

                            table_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)role_data.bodyPathID);
                        }
                        if (table_data != null)
                        {
                            table.ResourceDataBase db = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.resid);
                            if (db == null)
                            {
                                Debug.LogError("ResourceDataBase is null bodypahtid is " + table_data.resid + "  请检查resource 表格");
                                return(false);
                            }
                            strResName = db.strPath;
                        }
                        //else
                        //{
                        //    strResName = "";
                        //}

                        //if(m_EntityView!=null)
                        //{
                        //    m_EntityView.AddSuitData(EquipPos.EquipPos_Body, data.ViewList[i].value, (int)table_data.resid);
                        //}
                    }
                }
                //Profiler.EndSample();
            }

            // 修改技能形态值
            m_Data.eSkillState = (SkillSettingState)GetProp((int)PlayerProp.SkillStatus);

            // 设置名称
            SetName(data.strName);
            string strPath, strFileName, strExt, strFileNameNoExt;

            Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt);
            m_strObjName = strFileNameNoExt;

            if (m_Data.bImmediate)
            {
                // 立即创建
                if (!m_EntityView.Create(ref strResName, OnCreateRenderObj, m_Data.bImmediate))
                {
                    Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName);
                    return(false);
                }
            }
            else
            {
                EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj);
            }

            //Profiler.EndSample();
            //Profiler.EndSample();
            return(true);
        }
示例#30
0
 // 更新多条属性
 public virtual void UpdateProp(EntityCreateData data)
 {
     ApplyProp(data);
 }