using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.UI; namespace DisComputer { /* * @func 零件格子 * @author lz * @date 2020/05/28 * */ public class SpareGrids : UIShowOrHide { [Header("格子信息")] public List gridInfos; /// /// 格子预制 /// public GameObject gridPrfGo; /// /// 格子数量 /// public int gridNum; private void Awake() { InitGrid(); } /// /// 实例化零件格子 /// void InitGrid() { for(int i = 0; i < gridNum; i++) { GameObject tempGridGo = Instantiate(gridPrfGo, this.transform); tempGridGo.transform.localPosition = new Vector3((-650+93*i),0,0); tempGridGo.SetActive(true); Grid grid = tempGridGo.GetComponent(); grid.initPos = tempGridGo.transform.position; GridInfo info = new GridInfo(); info.type = grid.type; info.grid = grid; gridInfos.Add(info); } } public override void OnShow(object data = null) { base.OnShow(data); //ResetSpareGrids(); ResetSpareInfoGrids(); if (isShow) { OnHide(); return; } } private bool isInit = false; /// /// 初始化格子信息 /// private void ResetSpareInfoGrids() { if (isInit) return; ResetAllGrid(); isInit = true; SpareType[] spares = GameConfig.GetItemInfos; List spareInfos = new List(); if(GameDataConfig.Instance.pcId == 1) { spareInfos = GameDataConfig.Instance.AllSpareInfos(); }else { spareInfos = GameDataConfig.Instance.gameSpareInfos(); } if (GameConfig.state == GameState.Load) { for (int i = 0; i < gridNum; i++) { for(int j = 0;j < spareInfos.Count; j++) { if(spares[i] == spareInfos[j].type) { if (i >= GameConfig.curProgressIndex) { if (gridInfos[i].type == SpareType.Null) { gridInfos[i].type = spares[i]; gridInfos[i].grid.SetGridInfo(spareInfos[j]); } } break; } } } } else { for (int i = 0; i < gridNum; i++) { for(int j = 0;j < spareInfos.Count; j++) { if(spares[i] == spareInfos[j].type) { if (i <= GameConfig.curProgressIndex - 1) { if (gridInfos[i].type == SpareType.Null) { gridInfos[i].type = spares[i]; Debug.LogFormat(">>>>>>>> j {0}",j); gridInfos[i].grid.SetGridInfo(spareInfos[j]); } } break; } } } } } /// /// 添加进格子 /// public void AddSpareToGrid(SpareType _type) { for (int i = 0; i < gridNum; i++) { if (gridInfos[i].type == SpareType.Null) { gridInfos[i].type = _type; FlySpareAct(gridInfos[i]); break; } } } public void AddSpareToGrid(SpareInfo info) { for (int i = 0; i < gridNum; i++) { if (gridInfos[i].type == SpareType.Null) { gridInfos[i].type = info.type; FlySpareAct(gridInfos[i],info); break; } } } /// /// 清理所有格子信息 /// public void ResetAllGrid() { for (int i = 0; i < gridNum; i++) { gridInfos[i].type = SpareType.Null; gridInfos[i].grid.CleraGird(); } isInit = false; } /// /// 零件格子飞入 /// /// void FlySpareAct(GridInfo _gridInfo) { GameObject flyGo = new GameObject("FlySpare"); flyGo.layer = 5; flyGo.transform.SetParent(this.transform.parent); flyGo.transform.localScale = new Vector3(1, 1, 1); flyGo.transform.localPosition = new Vector3(0, 0, 0); RawImage raw = flyGo.AddComponent(); raw.texture = _gridInfo.grid.GetSpareTex(_gridInfo.type); SpareFly fly = flyGo.AddComponent(); fly.FlyAction(_gridInfo.grid.transform.position,()=> { _gridInfo.grid.SetGridInfo(_gridInfo.type); MessageContainer.SendMessage("temp", this, MsgName.MainViewGrowthBar); }); } /// /// 零件格子飞入 /// /// /// void FlySpareAct(GridInfo _gridInfo,SpareInfo info) { GameObject flyGo = new GameObject("FlySpare"); flyGo.layer = 5; flyGo.transform.SetParent(this.transform.parent); flyGo.transform.localScale = new Vector3(1, 1, 1); flyGo.transform.localPosition = new Vector3(0, 0, 0); RawImage raw = flyGo.AddComponent(); raw.texture = info.texture; SpareFly fly = flyGo.AddComponent(); fly.FlyAction(_gridInfo.grid.transform.position, () => { _gridInfo.grid.SetGridInfo(_gridInfo.type,info); MessageContainer.SendMessage("temp", this, MsgName.MainViewGrowthBar); }); } } [Serializable] public class GridInfo { /// /// 格子存储数据 /// public SpareType type; /// /// 格子位置信息 /// public Grid grid; } public enum SpareType { JiXiang, NeiCun, YingPan, XianKa, Cpu, DianYuan, GuangQu, ZhuBan, Null } }