WXGame/Blacksmith/Assets/Script/UI/DrawingPanel.cs
2024-12-21 14:05:40 +08:00

181 lines
5.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using cfg.BlacksmithData;
using UnityEngine;
using UnityEngine.UI;
public class DrawingPanel : MonoBehaviour
{
[SerializeField]
private List<DrawingItem> DrawingItems;
[SerializeField] private Image icon;
[SerializeField] private Slider _slider;
[SerializeField] private Text name;
[SerializeField] private Text sliderNum;
[SerializeField] private Text attack;
[SerializeField] private Text hp;
[SerializeField] private Text speed;
[SerializeField] private List<Text> lvList = new List<Text>();
[SerializeField] private Button _button;
[SerializeField] private List<DrawingWapenItem> _itemObjs;
[SerializeField] private GameObject parent;
[SerializeField] private FreePanel _freePanel;
[SerializeField] private Button closeFreeButton;
[SerializeField] private Button closeDrawData;
private WeaponAttributeData wData;
private void OnEnable()
{
_button.onClick.AddListener(UpDrawing);
closeFreeButton.onClick.AddListener(CloseFree);
closeDrawData.onClick.AddListener(CloseDrawing);
}
private void OnDisable()
{
_button.onClick.RemoveListener(UpDrawing);
closeFreeButton.onClick.RemoveListener(CloseFree);
closeDrawData.onClick.RemoveListener(CloseDrawing);
}
public void OpenPanel()
{
Reset();
CloseDrawing();
CloseFree();
}
public void OpenDrawing()
{
parent.SetActive(true);
}
public void CloseDrawing()
{
parent.SetActive(false);
}
public void OpenFree(int itemId)
{
_freePanel.gameObject.SetActive(true);
_freePanel.OpenFreePanel(itemId);
}
public void CloseFree()
{
_freePanel.gameObject.SetActive(false);
Reset();
}
// Start is called before the first frame update
public void Reset()
{
var drawData = JsonTab.Instance.tables.Weapon.DataList;
for (int i = 0; i < DrawingItems.Count; i++)
{
DrawingItems[i].InitData(drawData[i].ID,this);
}
}
public void OpenDrawDataPanel(int id)
{
var le=DataManager.GetDrawLevel(id);
var data = JsonTab.Instance.tables.Weapon.Get(id);
wData = JsonTab.Instance.attributeData(data.ID, le);
var datas=JsonTab.Instance.Attribute[data.ID];
var skillList = new List<WeaponAttributeData>();
icon.sprite = AssetBundleManager.ins.Sprite(data.Icon, AtlasType.DrawingIcon);
foreach (var v in datas)
{
if (v.Value.Getskill!=0)
{
skillList.Add(v.Value);
}
}
for (int i = 0; i < skillList.Count; i++)
{
var lsData = JsonTab.Instance.attributeData(data.ID, skillList[i].Level);
lvList[i].text = "等级lv" + skillList[i].Level + "获得" + JsonTab.Instance.tables.Skill.Get(lsData.Getskill).Skillname;
if (DataManager.GetDrawLevel(id)>skillList[i].Level)
{
lvList[i].color = Color.green;
}
else
{
lvList[i].color = Color.grey;
}
}
name.text = data.Name;
_slider.value = (float)DataManager.GetItem(wData.Upgrade)/wData.Upgradenumber;
sliderNum.text = DataManager.GetItem(wData.Upgrade) + " / " + wData.Upgradenumber;
string nextHP = "";
string nexAttack = "";
if (le+1<=40)
{
var nexData=JsonTab.Instance.attributeData(data.ID, le+1);
nextHP = "+"+nexData.HP.ToString();
nexAttack="+"+nexData.Attack.ToString();
}
hp.text = wData.HP.ToString()+"<color=green>"+ nextHP +"</color>";
attack.text = wData.Attack.ToString()+"<color=green>"+ nexAttack +"</color>";
if (DataManager.GetItem(wData.Upgrade)>=wData.Upgradenumber)
{
sliderNum.color=Color.green;
}
else
{
sliderNum.color=Color.red;
}
for (int i = 0; i < data.Include.Count; i++)
{
_itemObjs[i].SetData(data.Include[i],DataManager.GetItem(data.Include[i]));
_itemObjs[i].panel = this;
}
}
public void UpDrawing()
{
if (DataManager.GetItem(wData.Upgrade) >= wData.Upgradenumber)
{
DataManager.SaveDrawLevel(wData.Arms,DataManager.GetDrawLevel(wData.Arms)+1);
DataManager.RemoveItem(wData.Upgrade,wData.Upgradenumber);
var attributeData=JsonTab.Instance.attributeData(wData.Arms, DataManager.GetDrawLevel(wData.Arms));
if (attributeData.Unlock!=0)
{
var craftData = JsonTab.Instance.tables.CraftingRecipes.Get(attributeData.Unlock);
DataManager.SaveItemUnLock(craftData.ID,true);
if (craftData.Levelprops1!=0)
{
DataManager.SaveItemUnLock(craftData.Levelprops1,true);
}
if (craftData.Levelprops2!=0)
{
DataManager.SaveItemUnLock(craftData.Levelprops2,true);
}
if (craftData.Levelprops3!=0)
{
DataManager.SaveItemUnLock(craftData.Levelprops3,true);
}
if (craftData.Levelprops4!=0)
{
DataManager.SaveItemUnLock(craftData.Levelprops4,true);
}
}
}
else
{
}
OpenDrawDataPanel(wData.Arms);
Reset();
}
}