示例#1
0
        public void AddSceneObj(S2C_SYNC_SCENE_OBJ sceneObj)
        {
            KSceneObjectType sot = (KSceneObjectType)sceneObj.type;
            KHeroObjectType  hot = KHeroObjectType.hotInvalid;
            KDoodadType      dt  = KDoodadType.dddInvalid;

            SceneEntity entity = CreateSceneObject(sceneObj.id, sot, hot, dt, MapUtils.GetMetreFromInt(sceneObj.x, sceneObj.y), ConfigManager.INVALID_ID);

            entity.Init();
        }
示例#2
0
        public void OnAddDoodad(uint objID, int objType, int posX, int posY, RemoteTable table)
        {
            KSceneObjectType sot = KSceneObjectType.sotDoodad;
            KHeroObjectType  hot = KHeroObjectType.hotInvalid;
            KDoodadType      dt  = (KDoodadType)objType;

            SceneEntity entity = CreateSceneObject(objID, sot, hot, dt, MapUtils.GetMetreFromInt(posX, posY), ConfigManager.INVALID_ID);

            if (dt == KDoodadType.dddCollect)
            {
                int collectID = (int)table["CollectMissionID"];

                KCollectMissionInfo info = KConfigFileManager.GetInstance().GetCollectInfo(collectID);
                if (info == null)
                {
                    Debug.Log("AddSceneObj Error Collect ID" + collectID.ToString());
                }

                entity.collectInfo = info;
                entity.Init();
                entity.DispatchEvent(ControllerCommand.LOAD_NAME_LABEL);
                entity.DispatchEvent(ControllerCommand.CHANGE_NAME, info.strName);
            }
            else if (dt == KDoodadType.dddDrop)
            {
                KDropType dType  = (KDropType)(int)table["eDropType"];
                int       nValue = table["nDropValue"];
                int       nIndex = table["nDropIndex"];
                entity.property.dropType  = dType;
                entity.property.dropValue = nValue;
                entity.property.dropIndex = nIndex;
                entity.Init();
                entity.DispatchEvent(ControllerCommand.LOAD_NAME_LABEL);

                if (dType == KDropType.dtMoney)
                {
                    string strMoney = "money *" + nValue;
                    entity.DispatchEvent(ControllerCommand.CHANGE_NAME, strMoney);
                }
                else if (dType == KDropType.dtEquip)
                {
                    KTabLineEquip equipData = KConfigFileManager.GetInstance().equipTabInfos.getData(nIndex.ToString());
                    entity.DispatchEvent(ControllerCommand.CHANGE_NAME, equipData.Name);
                }
                else if (dType == KDropType.dtItem)
                {
                    KTabLineItem itemData = KConfigFileManager.GetInstance().itemTabInfos.getData(nIndex.ToString());
                    entity.DispatchEvent(ControllerCommand.CHANGE_NAME, itemData.Name);
                }
            }
        }
示例#3
0
        public SceneEntity CreateSceneObject(uint id, KSceneObjectType type, KHeroObjectType heroType, KDoodadType doodadType, Vector3 pos, ulong OwnerID)
        {
            log.Assert(type > (int)KSceneObjectType.sotInvalid);
            log.Assert(id != ConfigManager.INVALID_ID);
            SceneEntity obj = null;

            string soName = type.ToString() + "_" + id.ToString() + "(" + heroType.ToString() + ")";

            obj                        = SceneEntity.Create(soName);
            obj.Position               = pos;
            obj.property.Id            = id;
            obj.OwnerID                = OwnerID;
            obj.property.sceneObjType  = type;
            obj.property.heroObjType   = heroType;
            obj.property.doodadObjType = doodadType;

            allObjectsMap[obj.property.Id] = obj;
            obj.enabled          = true;
            obj.gameObject.layer = CameraLayerManager.GetInstance().GetSceneObjectTag();
            return(obj);
        }
示例#4
0
        //public static DebugCounter debugCounter =  new DebugCounter();
        public void AddHero(S2C_SYNC_NEW_HERO hero)
        {
            //debugCounter.Restart();
            //debugCounter.AddMark("heroSet");
            KSceneObjectType sot         = KSceneObjectType.sotHero;
            KHeroObjectType  hot         = KHeroObjectType.hotInvalid;
            KDoodadType      dt          = KDoodadType.dddInvalid;
            KHeroSetting     heroSetting = KConfigFileManager.GetInstance().heroSetting.getData(hero.wNpcIDOrJob.ToString());

            log.Assert(heroSetting != null);
            hot = heroSetting.HeroType;
            string Name  = "";
            string Title = "";

            switch (heroSetting.HeroType)
            {
            case KHeroObjectType.hotNpc:
            {
                if (!npcidToSceneidDic.ContainsKey((int)heroSetting.ID))
                {
                    npcidToSceneidDic.Add((int)heroSetting.ID, hero.id);
                }
                else
                {
                    npcidToSceneidDic[(int)heroSetting.ID] = hero.id;
                }
                Name  = heroSetting.Name;
                Title = heroSetting.Title;
            }
            break;

            case KHeroObjectType.hotMonster:
            {
                Name = heroSetting.Name;
            }
            break;

            case KHeroObjectType.hotPlayer:
            {
                Assets.Scripts.Model.Player.Player newPlayerInfo = PlayerManager.GetInstance().GetPlayer(hero.uOwnerID);
                if (newPlayerInfo != null)
                {
                    Name = newPlayerInfo.PlayerName;
                }
                else
                {
                    Name = "not init";
                }
            }
            break;

            default:
            {
                throw new ArgumentException("error heroSetting.HeroType = " + heroSetting.HeroType + " at hero which id = " + hero.id + " uOwnerID =  " + hero.uOwnerID);
            }
            }

            if (hero.uOwnerID == PlayerManager.GetInstance().MajorPlayer.PlayerID)
            {
                PlayerManager.GetInstance().MajorPlayer.hero = hero.id;
                EventDispatcher.GameWorld.Dispath(ControllerCommand.CHANGE_NICKNAME, PlayerManager.GetInstance().MajorPlayer.PlayerName);
            }

            SceneEntity entity = CreateSceneObject(hero.id, sot, hot, dt, MapUtils.GetMetreFromInt(hero.posX, hero.posY), hero.uOwnerID);

            entity.heroSetting = heroSetting;

            if (heroSetting.HeroType == KHeroObjectType.hotMonster && hero.bNewHero != 0)
            {
                entity.property.bNewHero = true;
            }
            entity.Init();
            entity.DispatchEvent(ControllerCommand.SET_SPEED, hero.moveSpeed);
            entity.property.isDeaded    = entity.property.isDeadTemp = (hero.moveState == (byte)KMoveState.mosDeath);
            entity.property.Face        = hero.faceDir;
            entity.property.maxHp       = (int)hero.MaxHP;
            entity.property.maxMp       = (int)hero.MaxMP;
            entity.property.fightHp     = entity.property.hp = (int)hero.HP;
            entity.property.mp          = (int)hero.MP;
            entity.AttackSpeed          = (int)hero.attackSpeed;
            entity.transform.localScale = new Vector3(heroSetting.Scale, heroSetting.Scale, heroSetting.Scale);
            entity.property.characterController.size   = new Vector3(0.7f, 2f, 0.7f);
            entity.property.characterController.center = new Vector3(0, 1, 0);

            if (hot == KHeroObjectType.hotPlayer && hero.uOwnerID == PlayerManager.GetInstance().MajorPlayer.PlayerID)
            {
                SceneLogic.GetInstance().MainHero = entity;
            }

            Vector3 destination = MapUtils.GetMetreFromInt(hero.desX, hero.desZ, hero.desY);

            if (hero.desX == 0 && hero.desZ == 0 && hero.desY == 0)
            {
                destination = MapUtils.GetMetreFromInt(hero.posX, hero.posY);
            }
            entity.TabID = hero.wNpcIDOrJob;
            entity.Job   = KJob.jobNone;
            if (entity.HeroType == KHeroObjectType.hotPlayer)
            {
                entity.Job = (KJob)hero.wNpcIDOrJob;
            }

            entity.DispatchEvent(ControllerCommand.SET_DESTINATION, destination, (int)KForceMoveType.fmtInvalid);
            entity.DispatchEvent(ControllerCommand.CHANGE_NAME, Name);
            entity.DispatchEvent(ControllerCommand.LOAD_RES);
            entity.DispatchEvent(ControllerCommand.LOAD_NAME_LABEL, Name);
            if (Title.Length > 0)
            {
                entity.DispatchEvent(ControllerCommand.CHANGE_TITLE, Title);
            }
            entity.EquipIDs = hero.equipIDs;

            if (entity.property.isDeadTemp)
            {
                entity.property.isDeadTemp = true;
                entity.Action.IsBeDead();
            }
            else if (heroSetting.HeroType == KHeroObjectType.hotMonster && hero.bNewHero != 0)
            {
                entity.ActiveAction = new ActionMousterOut(entity);
            }
        }