Inheritance: MonoBehaviour
    private void AddNpc(int id, Vector3 position, Vector3 rotation, Vector3 scale)
    {
        NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id);

        if (null == tmpConfig)
        {
            return;
        }

        GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource,
                                                                                         AssetType.Char);

        if (null == sourceObj)
        {
            return;
        }
        GameObject instance = GameObject.Instantiate(sourceObj);

        ComponentTool.Attach(m_ObjNpcRoot.transform, instance.transform);

        m_Config.Rotation = rotation.y;

        m_CreatedNpcObject = instance;
        m_CreatedNpcObject.transform.position    = position;
        m_CreatedNpcObject.transform.eulerAngles = rotation;
        m_CreatedNpcObject.transform.localScale  = scale;

        //disable npc anim
        Animator anim = m_CreatedNpcObject.GetComponent <Animator>();

        if (null != anim)
        {
            anim.applyRootMotion = false;
        }
    }
Example #2
0
        public async Task CreateNpcDetailCfg(NpcConfig cfg)
        {
            int output = await dbConnection.ExecuteAsync(@"INSERT INTO npcConfigs(npcid, name, description, imagePath, backgroundImagePath) 
                VALUES(@npc, @name, @description, @imagePath, @backgroundImagePath)",
                                                         new
            {
                npc                 = cfg.NpcId,
                name                = cfg.Name,
                description         = cfg.Description,
                imagePath           = cfg.ImagePath,
                backgroundImagePath = cfg.BackgroundImagePath
            });

            if (output == 0)
            {
                await dbConnection.ExecuteAsync(@"UPDATE npcConfigs SET name = @name, description = @description, imagePath = @imagePath, backgroundImagePath = @backgroundImagePath WHERE npcid = @npc",
                                                new
                {
                    npc                 = cfg.NpcId,
                    name                = cfg.Name,
                    description         = cfg.Description,
                    imagePath           = cfg.ImagePath,
                    backgroundImagePath = cfg.BackgroundImagePath
                });
            }
        }
    private void AddNpc(int id)
    {
        if (!CheckCanCreateNpc(id))
        {
            EditorUtility.DisplayDialog("id 错误", "场景中已存在该id的npc ,id= " + id, "ok");
            return;
        }

        NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id);

        if (null == tmpConfig)
        {
            EditorUtility.DisplayDialog("id 错误", "请检查表中npc id ,错误 id= " + id, "ok");
            return;
        }

        GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource,
                                                                                         AssetType.Char);

        if (null == sourceObj)
        {
            EditorUtility.DisplayDialog("模型 id 错误", "请检查表中npc id ,错误 id= " + tmpConfig.ModelResource, "ok");
            return;
        }

        Npc elem = new Npc();

        elem.Initialize(id);

        m_CreatedNpcList.Add(elem);
    }
Example #4
0
    public NpcConfig GetNpcConfig(int id)
    {
        NpcConfigTable config = TryGetConfig <NpcConfigTable>(ConfigPath_NpcConfig);
        NpcConfig      res    = null;

        config.NpcCofigMap.TryGetValue(id, out res);
        return(res);
    }
Example #5
0
        string GetHeroNameByHeroid(uint heroid)
        {
            NpcConfig config = ConfigAsset2.Instance.GetById <NpcConfig>(heroid.ToString());

            if (config != null)
            {
                return(config.name);
            }
            return(heroid.ToString());
        }
Example #6
0
    private void DisplayBaseInfo()
    {
        var config = NpcConfig.Get(bossId);

        m_BossName.SetText(config.name);
        m_BossLevel.SetText(config.level);

        var worldBossConfig = WorldBossConfig.Get(bossId);

        m_BossDescription.SetLanguage(worldBossConfig.name);
    }
Example #7
0
    private void AddNpc(int id, Vector3 position, Vector3 rotation, Vector3 scale)
    {
        NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id);

        if (null == tmpConfig)
        {
            EditorUtility.DisplayDialog("id 错误", "请检查表中npc id ,错误 id= " + id, "ok");
            return;
        }

        GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource,
                                                                                         AssetType.Char);

        if (null == sourceObj)
        {
            EditorUtility.DisplayDialog("模型 id 错误", "请检查表中npc id ,错误 id= " + tmpConfig.ModelResource, "ok");
            return;
        }

        if (IsExistNpcInScene(id))
        {
            EditorUtility.DisplayDialog("npc重复", "场景中已经存在相同ID的npc,错误 id= " + id, "ok");
            return;
        }

        NpcEditorData elem = new NpcEditorData();

        elem.m_NpcData       = new TerrainNpcData();
        elem.m_NpcData.Pos   = new ThriftVector3();
        elem.m_NpcData.Rot   = new ThriftVector3();
        elem.m_NpcData.Scale = new ThriftVector3();
        elem.m_NpcData.Id    = id;

        elem.m_NpcData.Pos.SetVector3(position);
        elem.m_NpcData.Rot.SetVector3(rotation);
        elem.m_NpcData.Scale.SetVector3(scale);

        elem.m_Instance = new Npc();
        elem.m_Instance.Initialize(id);
        GameObject instance = ((CharTransformData)(elem.m_Instance.GetTransformData())).GetGameObject();

        ComponentTool.Attach(m_ObjNpcRoot.transform, instance.transform);
        ((CharTransformData)(elem.m_Instance.GetTransformData())).SetPhysicStatus(false);
        elem.m_Instance.GetTransformData().SetPosition(position);
        elem.m_Instance.GetTransformData().SetRotation(rotation);
        elem.m_Instance.GetTransformData().SetScale(scale);


        m_NpcList.Add(elem);
    }
Example #8
0
    static string NpcMatchEvaluator(Match match)
    {
        try
        {
            var integerMatch = Regex.Match(match.Value, "\\d+");
            var id           = integerMatch != null?int.Parse(integerMatch.Value) : 0;

            var config = NpcConfig.Get(id);
            return(Language.Get(config.name));
        }
        catch (System.Exception ex)
        {
            DebugEx.Log(ex);
            return(string.Empty);
        }
    }
Example #9
0
 public static void Init()
 {
     ItemConfig.Init();
     TestConfig.Init();
     WindowConfig.Init();
     EffectConfig.Init();
     EquipConfig.Init();
     IconConfig.Init();
     LanguageConfig.Init();
     WorldBossConfig.Init();
     NpcConfig.Init();
     MapConfig.Init();
     DungeonConfig.Init();
     DamageNumConfig.Init();
     SkillConfig.Init();
     MobAssetConfig.Init();
     //初始化结束
 }
Example #10
0
        private void onAddNpc()
        {
            NpcConfig npcCfg = ConfigAsset.Instance.getNpcConfigs(int.Parse(input_npcId.text));

            if (npcCfg == null)
            {
                Debug.Log("该NPC不在npc表中  " + int.Parse(input_npcId.text));
                return;
            }
            else
            {
                try
                {
                    input_npcModel.text = int.Parse(npcCfg.modelId).ToString();
                    input_npcModel.text = "n_fujiaertongnv";
                }
                catch
                {
                    input_npcModel.text = npcCfg.modelId;
                }
            }
            MapNpc npcNode = new MapNpc(int.Parse(input_npcId.text));

            npcNode.ntype     = npcCfg.type;
            npcNode.x         = int.Parse(input_npcX.text);
            npcNode.y         = int.Parse(input_npcY.text);
            npcNode.ai        = int.Parse(input_npcAI.text);
            npcNode.num       = int.Parse(input_npcNum.text);
            npcNode.interval  = int.Parse(input_npcInterval.text);
            npcNode.scope     = int.Parse(input_npcScope.text);
            npcNode.chase     = int.Parse(input_npcChase.text);
            npcNode.enemyType = int.Parse(input_npcEnemyType.text);
            npcNode.level     = int.Parse(input_npcLevel.text);

            EditMapManager.Instance.editMapNpc(npcNode, EditMapManager.OPERATE_ADD);

            float   h1     = EditMapManager.Instance.terrainMan.GetHeight(int.Parse(input_npcX.text), int.Parse(input_npcY.text));
            Vector3 npcPos = new Vector3(int.Parse(input_npcX.text), h1, int.Parse(input_npcY.text));

            npcNode.modelId = input_npcModel.text;
            EditMapManager.Instance.mapNpcMgr.Preload(input_npcModel.text, npcPos, npcNode.uniqueId.ToString());
            // mapNpcMgr.ShowSkillFx((GameObject.Find(RoleCtrl) as RoleCtrl), "n_fujiaertongnv");
            EditMapManager.Instance.mapNpcMgr.ShowSkillFx(null, input_npcModel.text, npcPos);
        }
Example #11
0
    private void AddNpc(int id, Vector3 position, Vector3 rotation, Vector3 scale)
    {
        NpcConfig tmpConfig = ConfigManager.Instance.GetNpcConfig(id);

        if (null == tmpConfig)
        {
            EditorUtility.DisplayDialog("id 错误", "请检查表中npc id ,错误 id= " + id, "ok");
            return;
        }

        GameObject sourceObj = ResourceManager.Instance.LoadBuildInResource <GameObject>(tmpConfig.ModelResource,
                                                                                         AssetType.Char);

        if (null == sourceObj)
        {
            EditorUtility.DisplayDialog("模型 id 错误", "请检查表中npc id ,错误 id= " + tmpConfig.ModelResource, "ok");
            return;
        }
        GameObject instance = GameObject.Instantiate(sourceObj);

        ComponentTool.Attach(m_ObjNpcRoot.transform, instance.transform);


        m_Config.Id = id;
        m_Config.Pos.SetVector3(position);
        m_Config.Rot.SetVector3(rotation);
        m_Config.Scale.SetVector3(scale);

        m_CreatedNpcObject = instance;
        m_CreatedNpcObject.transform.position    = position;
        m_CreatedNpcObject.transform.eulerAngles = rotation;
        m_CreatedNpcObject.transform.localScale  = scale;

        //disable npc anim
        Animator anim = m_CreatedNpcObject.GetComponent <Animator>();

        if (null != anim)
        {
            anim.applyRootMotion = false;
        }
    }
Example #12
0
    public void Initialize(int id)
    {
        m_iId = id;
        m_NpcBaseInfo = ConfigManager.Instance.GetNpcConfig(id);
        if (null == m_NpcBaseInfo)
        {
            Debuger.LogWarning("can't load target npc: " + id);
            return;
        }
        m_bInitGroup = m_NpcBaseInfo.IsInGroup;
        m_StateMachine = new StateMachine(0, 0, this);
        m_CharTransformData = new CharTransformData();
        m_CharTransformData.Initialize(this, m_NpcBaseInfo.ModelResource, AssetType.Char);
        //m_CharTransformData.AddNavmeshObs();
        m_AIAgent = new AIAgent(m_NpcBaseInfo.AiId);

        LifeTickTask.Instance.RegisterToUpdateList(Update);
        MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_HIT_TERRAIN, OnHitTerrain);
        MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_HIT_LIFE, OnHitLife);

        LifeManager.RegisterLife(m_iId, this);
    }
Example #13
0
        public NpcEntity(string name, NpcConfig npcConfig)
        {
            proto = npcConfig.npcProtos[name];

            gameObject = new GameObject(name);
            gameObject.AddComponent <BoxCollider2D>();
            gameObject.AddComponent <NpcClickHandler>();

            SpriteRenderer spriteRenderer = gameObject.AddComponent <SpriteRenderer>();

            spriteRenderer.sprite = Utils.loadResource <Sprite>(Paths.NPC_PATH + name);

            spriteRenderer.sortingLayerName = "Npc";
            spriteRenderer.material         = new Material(Utils.DEFAULT_SPRITE_SHADER);

            gameObject.setBoundsFromSprite();

            Vector3 pos = gameObject.transform.position;

            pos.y = DEFAULT_Y_POS;
            gameObject.transform.position = pos;
        }
Example #14
0
    public void Initialize(int id)
    {
        m_iId         = id;
        m_NpcBaseInfo = ConfigManager.Instance.GetNpcConfig(id);
        if (null == m_NpcBaseInfo)
        {
            Debuger.LogWarning("can't load target npc: " + id);
            return;
        }
        m_bInitGroup        = m_NpcBaseInfo.IsInGroup;
        m_StateMachine      = new StateMachine(0, 0, this);
        m_CharTransformData = new CharTransformData();
        m_CharTransformData.Initialize(this, m_NpcBaseInfo.ModelResource, AssetType.Char);
        //m_CharTransformData.AddNavmeshObs();
        m_AIAgent = new AIAgent(m_NpcBaseInfo.AiId);

        LifeTickTask.Instance.RegisterToUpdateList(Update);
        MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_HIT_TERRAIN, OnHitTerrain);
        MessageDispatcher.Instance.RegistMessage(ClientCustomMessageDefine.C_HIT_LIFE, OnHitLife);

        LifeManager.RegisterLife(m_iId, this);
    }
Example #15
0
    public static NpcConfig Get(int id)
    {
        if (!inited)
        {
            Debug.Log("NpcConfigConfig 还未完成初始化。");
            return(null);
        }

        if (configs.ContainsKey(id))
        {
            return(configs[id]);
        }

        NpcConfig config = null;

        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new NpcConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }

        return(config);
    }
Example #16
0
 private void initMapNpc()
 {
     foreach (KeyValuePair <string, MapNpc> kp in npcCollection)
     {
         MapNpc    npc    = kp.Value;
         NpcConfig npcCfg = ConfigAsset.Instance.getNpcConfigs(npc.id);
         try
         {
             kp.Value.modelId = int.Parse(npcCfg.modelId).ToString();
             kp.Value.modelId = "n_fujiaertongnv";
         }
         catch
         {
             kp.Value.modelId = npcCfg.modelId;
         }
         int     x      = (int)sw.util.PathUtil.Logic2RealX(npc.x);
         int     y      = (int)sw.util.PathUtil.Logic2RealZ(npc.y);
         float   h1     = terrainMan.GetHeight(x, y);
         Vector3 npcPos = new Vector3(x, h1, y);
         mapNpcMgr.Preload(kp.Value.modelId, npcPos, kp.Value.uniqueId.ToString());
         // mapNpcMgr.ShowSkillFx((GameObject.Find(RoleCtrl) as RoleCtrl), "n_fujiaertongnv");
         mapNpcMgr.ShowSkillFx(null, kp.Value.modelId, npcPos);
     }
 }
Example #17
0
    public static void ScanAllScenes()
    {
        var configName = "scenes.json";
        var filename   = FI.ConfigPath + configName;

        var trancfgName  = "transtriggers.json";
        var tranFileName = FI.ConfigPath + trancfgName;

        var npccfgName  = "npctriggers.json";
        var npcFileName = FI.ConfigPath + npccfgName;

        var facilitycfgName  = "facilitytriggers.json";
        var facilityFileName = FI.ConfigPath + facilitycfgName;

        var questcfgName  = "questtriggers.json";
        var questFileName = FI.ConfigPath + questcfgName;

        var investigatecfgName  = "investigatetriggers.json";
        var investigateFileName = FI.ConfigPath + investigatecfgName;

        var jsonWriter     = new ScannerJsonWriter();
        var config         = new SceneConfig();
        var cfgTran        = new TranConfig();
        var cfgFacility    = new FacilityConfig();
        var cfgNpc         = new NpcConfig();
        var cfgQuest       = new QuestAreaConfig();
        var cfgInvestigate = new InvestigateConfig();

        var allScenes = Directory.GetFiles("Assets/Scenes/game/streets", "*.unity", SearchOption.AllDirectories).ToList();

        for (int i = 0; i < allScenes.Count; ++i)
        {
            var scene = allScenes[i];
            EditorUtility.DisplayProgressBar("Scan all scenes", "scanning " + scene, (float)i / allScenes.Count);

            Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand;
            var sceneName        = Path.GetFileNameWithoutExtension(scene);
            var triggerSceneFile = "Assets/Scenes/city_triggers/" + sceneName + "_trigger.unity";

            UnityEditor.SceneManagement.EditorSceneManager.OpenScene(scene, UnityEditor.SceneManagement.OpenSceneMode.Single);
            if (File.Exists(triggerSceneFile))
            {
                UnityEditor.SceneManagement.EditorSceneManager.OpenScene(triggerSceneFile, UnityEditor.SceneManagement.OpenSceneMode.Additive);
            }

            Lightmapping.giWorkflowMode = Lightmapping.GIWorkflowMode.OnDemand;

            var curScene = EditorApplication.currentScene;
            if (curScene != null && curScene != "")
            {
                sceneName = System.IO.Path.GetFileNameWithoutExtension(curScene);
                var street       = new SceneConfig.Street(sceneName);
                var ttan         = new TranConfig.Trigger(sceneName);
                var tnpc         = new NpcConfig.Trigger(sceneName);
                var tfacility    = new FacilityConfig.Trigger(sceneName);
                var tquest       = new QuestAreaConfig.Trigger(sceneName);
                var tinvestigate = new InvestigateConfig.Trigger(sceneName);

                var scanner = new SceneScanner(street, ttan, tfacility, tnpc, tquest, tinvestigate);
                scanner.ScanCurrentScene(sceneName);
                config.AddStreet(street);
                cfgTran.AddTrigger(ttan);
                cfgNpc.AddTrigger(tnpc);
                cfgFacility.AddTrigger(tfacility);
                cfgQuest.AddTrigger(tquest);
                cfgInvestigate.AddTrigger(tinvestigate);

                LogUtil.Debug("Scene " + curScene + " scan success");
            }
            else
            {
                LogUtil.Debug("You need to select a scene before scan");
            }
        }
        jsonWriter.OutputToFile(filename, config.ToJson());
        jsonWriter.OutputToFile(tranFileName, cfgTran.ToJson());
        jsonWriter.OutputToFile(facilityFileName, cfgFacility.ToJson());
        jsonWriter.OutputToFile(npcFileName, cfgNpc.ToJson());
        jsonWriter.OutputToFile(questFileName, cfgQuest.ToJson());
        jsonWriter.OutputToFile(investigateFileName, cfgInvestigate.ToJson());


        LogUtil.Debug("Scene " + filename + " successfully generated in game-config folder");
        EditorUtility.ClearProgressBar();
        AssetDatabase.SaveAssets();
    }