From 2b479845e946d7b7590687ba91437b18a9c829b7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 07 二月 2026 20:43:44 +0800
Subject: [PATCH] 0312 隐藏灵兽,皇宫,府邸标签;内政中功能未开启时对应的npc也不显示
---
Main/System/InternalAffairs/AffairBaseWin.cs | 27 +++++++++++++++++++++++++--
Main/System/InternalAffairs/FuncNPCManager.cs | 30 +++++++++++++++++++++++++-----
2 files changed, 50 insertions(+), 7 deletions(-)
diff --git a/Main/System/InternalAffairs/AffairBaseWin.cs b/Main/System/InternalAffairs/AffairBaseWin.cs
index e9d19ed..67b686d 100644
--- a/Main/System/InternalAffairs/AffairBaseWin.cs
+++ b/Main/System/InternalAffairs/AffairBaseWin.cs
@@ -119,6 +119,20 @@
autoBtn.SetActive(false);
goldRushItemBtn.SetActive(false);
}
+
+
+ foreach (var npc in funcNPCs)
+ {
+ var key = npc.heroSkinID;
+ if (!FuncOpen.Instance.IsFuncOpen(FuncNPCManager.Instance.funcNPCToFuncID[key]))
+ {
+ npc.SetActive(false);
+ }
+ else
+ {
+ npc.SetActive(true);
+ }
+ }
}
@@ -172,8 +186,17 @@
void OnFiveSecondEvent()
{
- var index = FuncNPCManager.Instance.GetRandomAffairNpcTalk();
- var talk = FuncNPCManager.Instance.GetAffairTalk(funcNPCs[index].heroSkinID);
+ var skinID = FuncNPCManager.Instance.GetRandomAffairNpcTalk();
+ var talk = FuncNPCManager.Instance.GetAffairTalk(skinID);
+ var index = 0;
+ for (int i = 0; i < funcNPCs.Length; i++)
+ {
+ if (funcNPCs[i].heroSkinID == skinID)
+ {
+ index = i;
+ break;
+ }
+ }
if (talk != null)
{
talkTexts[index].text = Language.Get(talk);
diff --git a/Main/System/InternalAffairs/FuncNPCManager.cs b/Main/System/InternalAffairs/FuncNPCManager.cs
index 6d482f2..6308d2d 100644
--- a/Main/System/InternalAffairs/FuncNPCManager.cs
+++ b/Main/System/InternalAffairs/FuncNPCManager.cs
@@ -8,6 +8,7 @@
//鍐呮斂NPC
Dictionary<int, string[]> affairNpcTalkDic = new Dictionary<int, string[]>();
public List<int> affairTalkIndexList = new List<int>();
+ public Dictionary<int, int> funcNPCToFuncID = new Dictionary<int, int>();
public float lastAffairTalkTime;
public int lastAffiarRandomIndex;
@@ -38,10 +39,7 @@
affairNpcTalkDic.Add(npcID, talkList);
}
- for (int i = 0; i < affairNpcTalkDic.Count; i++)
- {
- affairTalkIndexList.Add(i);
- }
+
json = JsonMapper.ToObject(config.Numerical2);
keys = json.Keys.ToList();
@@ -56,19 +54,41 @@
guildTalkIndexList.Add(i);
}
+ funcNPCToFuncID = ConfigParse.ParseIntDict(config.Numerical3);
+ }
+
+
+ void RefreshAffairTalkIndexList()
+ {
+ affairTalkIndexList.Clear();
+ foreach (var key in affairNpcTalkDic.Keys)
+ {
+ if (!FuncOpen.Instance.IsFuncOpen(funcNPCToFuncID[key]))
+ {
+ continue;
+ }
+ if (funcNPCToFuncID[key] == 54 && MinggeManager.Instance.isStartAuto)
+ {
+ //绠楀懡涓笉鍙備笌鍠婅瘽
+ continue;
+ }
+ affairTalkIndexList.Add(key);
+ }
}
//闅忔満鏌愪釜NPC瀵硅瘽锛屼笌涓婁竴娆¢殢鏈虹殑NPC绱㈠紩涓嶉噸澶�
+ //杩斿洖NPCID
public int GetRandomAffairNpcTalk()
{
+ RefreshAffairTalkIndexList();
int index = Random.Range(0, affairTalkIndexList.Count);
if (index == lastAffiarRandomIndex)
{
index = (index + 1) % affairTalkIndexList.Count;
}
lastAffiarRandomIndex = index;
- return index;
+ return affairTalkIndexList[index];
}
public int GetRandomGuildNpcTalk()
--
Gitblit v1.8.0