Files
JJBB/Assets/Project/Script/GUI/MeridiaSoul/SoulTipChild.cs

223 lines
7.8 KiB
C#
Raw Permalink Normal View History

2024-08-23 15:49:34 +08:00
using Games.LogicObj;
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using GCGame;
using Module.Log;
using Games.GlobeDefine;
using System.Collections.Generic;
using System;
using GCGame.Table;
using Games.Events;
public class SoulTipChild : MonoBehaviour
{
public Text Curr;
public GameObject FirstWnd;
public GameObject SecondWnd;
public GameObject FirstAttrObj;
public UIImgText FirstPower;
public UIImgText SecondPower;
public GameObject SecondAttrObj;
public Text NeedStar;
void OnEnable()
{
InputOutView outView = GetComponent<InputOutView>();
if (outView != null)
{
outView.Add(1, false, delegate()
{
gameObject.SetActive(false);
});
}
}
public void InitInfo(int type,int learnNum,int HeavenID)
{
if(type==1)
{
InitLinkInfo(learnNum, HeavenID);
}
else
{
InitDeBlockInfo(learnNum, HeavenID);
}
}
List<GameObject> _CloneGameObjs = new List<GameObject>();
void InitLinkInfo(int learnNum,int HeavenID)
{
for(int i=0;i< _CloneGameObjs.Count;i++)
{
_CloneGameObjs[i].SetActive(false);
_CloneGameObjs[i].transform.SetParent(null);
GameObject.Destroy(_CloneGameObjs[i]);
}
_CloneGameObjs.Clear();
int next = 0;
Tab_SoulGeneralLink firstData = null;
var links = TableManager.GetSoulGeneralLink().Values;
foreach (var link in links)
{
if (link.HeavenID != HeavenID)
continue;
if (firstData == null)
firstData = link;
Tab_SoulHeavenAttr soulHeaven = TableManager.GetSoulHeavenAttrByID(link.HeavenID, 0);
if (soulHeaven == null)
continue;
if (next==0 && link.StarMin <= learnNum && link.StarMax >= learnNum)
{
FirstWnd.SetActive(true);
Curr.text = StrDictionary.GetClientDictionaryString("#{46003}", soulHeaven.Name, string.Format("<color=#019311ff>{0}</color>", learnNum));
FirstPower.text = link.AttrPower.ToString();
for (int j = 0; j < link.getAttrIdCount(); j++)
{
CloneAttrObj(FirstAttrObj, link.GetAttrIdbyIndex(j), link.GetAttrValuebyIndex(j));
}
next++;
continue;
}
if (next == 1)
{
SecondWnd.SetActive(true);
SecondPower.text = link.AttrPower.ToString();
for (int j = 0; j < link.getAttrIdCount(); j++)
{
CloneAttrObj(SecondAttrObj, link.GetAttrIdbyIndex(j), link.GetAttrValuebyIndex(j));
}
NeedStar.text = StrDictionary.GetClientDictionaryString("#{46004}", link.StarMin);
next++;
break;
}
}
foreach (var value in links)
{
if (firstData == null && value.HeavenID == HeavenID)
firstData = value;
}
if (next == 1)
SecondWnd.SetActive(false);
if(next==0)
{
FirstWnd.SetActive(false);
if(firstData!=null)
{
Tab_SoulHeavenAttr soulHeaven = TableManager.GetSoulHeavenAttrByID(firstData.HeavenID, 0);
if (soulHeaven == null)
return;
Curr.text = StrDictionary.GetClientDictionaryString("#{46003}", soulHeaven.Name, string.Format("<color=#019311ff>{0}</color>", learnNum));
SecondWnd.SetActive(true);
SecondPower.text = firstData.AttrPower.ToString();
for (int i = 0; i < firstData.getAttrIdCount(); i++)
{
CloneAttrObj(SecondAttrObj, firstData.GetAttrIdbyIndex(i), firstData.GetAttrValuebyIndex(i));
}
NeedStar.text = StrDictionary.GetClientDictionaryString("#{46004}", firstData.StarMin);
}
}
}
void InitDeBlockInfo(int learnNum,int HeavenID)
{
for (int i = 0; i < _CloneGameObjs.Count; i++)
{
_CloneGameObjs[i].SetActive(false);
_CloneGameObjs[i].transform.SetParent(null);
GameObject.Destroy(_CloneGameObjs[i]);
}
_CloneGameObjs.Clear();
int next = 0;
Tab_SoulHeavenUnlock firstData = null;
var links = TableManager.GetSoulHeavenUnlock().Values;
foreach (var link in links)
{
if (link == null)
continue;
if (link.HeavenID != HeavenID)
continue;
if (firstData == null)
firstData = link;
Tab_SoulHeavenAttr soulHeaven = TableManager.GetSoulHeavenAttrByID(link.HeavenID, 0);
if (soulHeaven == null)
continue;
if (next == 0 && link.StarTotalMin <= learnNum && link.StarTotalMax >= learnNum)
{
FirstWnd.SetActive(true);
Curr.text = StrDictionary.GetClientDictionaryString("#{46005}", string.Format("<color=#019311ff>{0}</color>", learnNum));
FirstPower.text = link.AttrPower.ToString();
for (int j = 0; j < link.getAttrIdCount(); j++)
{
CloneAttrObj(FirstAttrObj, link.GetAttrIdbyIndex(j), link.GetAttrValuebyIndex(j));
}
next++;
continue;
}
if (next == 1)
{
SecondWnd.SetActive(true);
SecondPower.text = link.AttrPower.ToString();
for (int j = 0; j < link.getAttrIdCount(); j++)
{
CloneAttrObj(SecondAttrObj, link.GetAttrIdbyIndex(j), link.GetAttrValuebyIndex(j));
}
NeedStar.text = StrDictionary.GetClientDictionaryString("#{46006}", link.StarTotalMin);
next++;
break;
}
}
foreach (var value in links)
{
if (firstData == null && value.HeavenID == HeavenID)
firstData = value;
}
if (next == 1)
SecondWnd.SetActive(false);
if (next == 0)
{
FirstWnd.SetActive(false);
if (firstData != null)
{
SecondWnd.SetActive(true);
SecondPower.text = firstData.AttrPower.ToString();
Curr.text = StrDictionary.GetClientDictionaryString("#{46005}", string.Format("<color=#019311ff>{0}</color>", learnNum));
for (int i = 0; i < firstData.getAttrIdCount(); i++)
{
CloneAttrObj(SecondAttrObj, firstData.GetAttrIdbyIndex(i), firstData.GetAttrValuebyIndex(i));
}
NeedStar.text = StrDictionary.GetClientDictionaryString("#{46006}", firstData.StarTotalMin);
}
}
}
void CloneAttrObj(GameObject obj,int proID,int proValue)
{
if (proID == -1)
return;
GameObject newObj = GameObject.Instantiate(obj);
newObj.SetActive(true);
newObj.transform.SetParent(obj.transform.parent);
newObj.transform.localPosition = obj.transform.localPosition;
newObj.transform.localScale = obj.transform.localScale;
Text attr = newObj.GetComponent<Text>();
if (attr != null)
attr.text = PropID.GetAttrName((PropID.PropertyID)proID);
Transform child = newObj.transform.Find("Text");
if(child!=null)
{
Text attrValue = child.GetComponent<Text>();
if (attrValue != null)
attrValue.text = proValue.ToString();
}
_CloneGameObjs.Add(newObj);
}
}