// Token: 0x06000514 RID: 1300 RVA: 0x0002A9F8 File Offset: 0x00028BF8 private void UpdatePieceBuildStatusAll(List <Piece> pieces, Player player) { for (int i = 0; i < this.m_pieceIcons.Count; i++) { Hud.PieceIconData pieceIconData = this.m_pieceIcons[i]; if (i < pieces.Count) { Piece piece = pieces[i]; bool flag = player.HaveRequirements(piece, Player.RequirementMode.CanBuild); pieceIconData.m_icon.color = (flag ? new Color(1f, 1f, 1f, 1f) : new Color(1f, 0f, 1f, 0f)); } else { pieceIconData.m_icon.color = Color.white; } } this.m_pieceIconUpdateIndex = 0; }
// Token: 0x06000513 RID: 1299 RVA: 0x0002A93C File Offset: 0x00028B3C private void UpdatePieceBuildStatus(List <Piece> pieces, Player player) { if (this.m_pieceIcons.Count == 0) { return; } if (this.m_pieceIconUpdateIndex >= this.m_pieceIcons.Count) { this.m_pieceIconUpdateIndex = 0; } Hud.PieceIconData pieceIconData = this.m_pieceIcons[this.m_pieceIconUpdateIndex]; if (this.m_pieceIconUpdateIndex < pieces.Count) { Piece piece = pieces[this.m_pieceIconUpdateIndex]; bool flag = player.HaveRequirements(piece, Player.RequirementMode.CanBuild); pieceIconData.m_icon.color = (flag ? new Color(1f, 1f, 1f, 1f) : new Color(1f, 0f, 1f, 0f)); } this.m_pieceIconUpdateIndex++; }
public static bool Prefix(ref Hud __instance, ref Player player, ref Vector2Int selectedNr, ref Piece.PieceCategory category, ref bool updateAllBuildStatuses) { if (BuildExpansionMod.isEnabled.Value) { List <Piece> buildPieces = player.GetBuildPieces(); int columns = BuildExpansionMod.newGridWidth.Value; calculatedRows = (buildPieces.Count / columns) + 1; if (buildPieces.Count <= 1) { calculatedRows = 1; columns = 1; } category = (Piece.PieceCategory) 5; if (needRefresh || __instance.m_pieceIcons.Count(x => x.m_go.activeSelf) != buildPieces.Count) { BuildExpansionMod.buildFilterLogger.LogDebug($"\npieceIcons: {__instance.m_pieceIcons.Count(x => x.m_go.activeSelf)}\nBuild pieces: {buildPieces.Count}"); BuildExpansionMod.buildFilterLogger.LogDebug($"\nRows: {calculatedRows}\nColumns: {columns}"); __instance.m_pieceListRoot.sizeDelta = new Vector2((int)(__instance.m_pieceIconSpacing * BuildExpansionMod.newGridWidth.Value), (int)(__instance.m_pieceIconSpacing * calculatedRows) + 16); foreach (Hud.PieceIconData pieceIconData in __instance.m_pieceIcons) { UnityEngine.Object.Destroy(pieceIconData.m_go); } __instance.m_pieceIcons.Clear(); for (int yaxis = 0; yaxis < calculatedRows; yaxis++) { for (int xaxis = 0; xaxis < columns; xaxis++) { int index = yaxis * columns + xaxis; GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(__instance.m_pieceIconPrefab, __instance.m_pieceListRoot); (gameObject.transform as RectTransform).anchorMin = new Vector2(0, 1); (gameObject.transform as RectTransform).anchorMax = new Vector2(0, 1); (gameObject.transform as RectTransform).pivot = new Vector2(0, 1); (gameObject.transform as RectTransform).anchoredPosition = Vector2.zero; (gameObject.transform as RectTransform).localPosition = new Vector2(xaxis * __instance.m_pieceIconSpacing, -16 + (-yaxis) * __instance.m_pieceIconSpacing); Hud.PieceIconData templatePieceData = new Hud.PieceIconData(); templatePieceData.m_go = gameObject; templatePieceData.m_tooltip = gameObject.GetComponent <UITooltip>(); templatePieceData.m_icon = gameObject.transform.Find("icon").GetComponent <Image>(); templatePieceData.m_marker = gameObject.transform.Find("selected").gameObject; templatePieceData.m_upgrade = gameObject.transform.Find("upgrade").gameObject; templatePieceData.m_icon.color = new Color(1f, 0f, 1f, 0f); UIInputHandler templateHandler = gameObject.GetComponent <UIInputHandler>(); templateHandler.m_onLeftDown = (Action <UIInputHandler>)Delegate.Combine( templateHandler.m_onLeftDown, new Action <UIInputHandler>(__instance.OnLeftClickPiece)); templateHandler.m_onRightDown = (Action <UIInputHandler>)Delegate.Combine( templateHandler.m_onRightDown, new Action <UIInputHandler>(__instance.OnRightClickPiece)); templateHandler.m_onPointerEnter = (Action <UIInputHandler>)Delegate.Combine( templateHandler.m_onPointerEnter, new Action <UIInputHandler>(__instance.OnHoverPiece)); templateHandler.m_onPointerExit = (Action <UIInputHandler>)Delegate.Combine( templateHandler.m_onPointerExit, new Action <UIInputHandler>(__instance.OnHoverPieceExit)); templatePieceData.m_marker.SetActive(new Vector2Int(xaxis, yaxis) == selectedNr); if (index < buildPieces.Count) { Piece piece = buildPieces[index]; templatePieceData.m_icon.sprite = piece.m_icon; templatePieceData.m_icon.enabled = true; templatePieceData.m_tooltip.m_text = piece.m_name; templatePieceData.m_upgrade.SetActive(piece.m_isUpgrade); templatePieceData.m_go.SetActive(true); } else { templatePieceData.m_icon.enabled = false; templatePieceData.m_tooltip.m_text = ""; templatePieceData.m_upgrade.SetActive(false); templatePieceData.m_go.SetActive(false); } BuildExpansionMod.buildFilterLogger.LogDebug($"\nPiece name: {templatePieceData.m_tooltip.m_text}" + $"\nPiece icon: {templatePieceData.m_icon.enabled}" + $"\nPiece index: {index}" + $"\nPiece x: {xaxis}" + $"\nPiece y: {yaxis}"); __instance.m_pieceIcons.Add(templatePieceData); } } if (needRefresh) { needRefresh = false; } } for (int yaxis = 0; yaxis < calculatedRows; yaxis++) { for (int xaxis = 0; xaxis < columns; xaxis++) { int index = yaxis * columns + xaxis; __instance.m_pieceIcons[index].m_marker.SetActive(new Vector2Int(xaxis, yaxis) == selectedNr); } } __instance.UpdatePieceBuildStatus(buildPieces, player); if (updateAllBuildStatuses) { __instance.UpdatePieceBuildStatusAll(buildPieces, player); } if (__instance.m_lastPieceCategory != category) { __instance.m_lastPieceCategory = category; __instance.m_pieceBarPosX = __instance.m_pieceBarTargetPosX; __instance.UpdatePieceBuildStatusAll(buildPieces, player); } return(false); } return(true); }
// Token: 0x0600050A RID: 1290 RVA: 0x0002A490 File Offset: 0x00028690 private void UpdatePieceList(Player player, Vector2Int selectedNr, Piece.PieceCategory category, bool updateAllBuildStatuses) { List <Piece> buildPieces = player.GetBuildPieces(); int num = 10; int num2 = 5; if (buildPieces.Count <= 1) { num = 1; num2 = 1; } if (this.m_pieceIcons.Count != num * num2) { foreach (Hud.PieceIconData pieceIconData in this.m_pieceIcons) { UnityEngine.Object.Destroy(pieceIconData.m_go); } this.m_pieceIcons.Clear(); for (int i = 0; i < num2; i++) { for (int j = 0; j < num; j++) { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(this.m_pieceIconPrefab, this.m_pieceListRoot); (gameObject.transform as RectTransform).anchoredPosition = new Vector2((float)j * this.m_pieceIconSpacing, (float)(-(float)i) * this.m_pieceIconSpacing); Hud.PieceIconData pieceIconData2 = new Hud.PieceIconData(); pieceIconData2.m_go = gameObject; pieceIconData2.m_tooltip = gameObject.GetComponent <UITooltip>(); pieceIconData2.m_icon = gameObject.transform.Find("icon").GetComponent <Image>(); pieceIconData2.m_marker = gameObject.transform.Find("selected").gameObject; pieceIconData2.m_upgrade = gameObject.transform.Find("upgrade").gameObject; pieceIconData2.m_icon.color = new Color(1f, 0f, 1f, 0f); UIInputHandler component = gameObject.GetComponent <UIInputHandler>(); component.m_onLeftDown = (Action <UIInputHandler>)Delegate.Combine(component.m_onLeftDown, new Action <UIInputHandler>(this.OnLeftClickPiece)); component.m_onRightDown = (Action <UIInputHandler>)Delegate.Combine(component.m_onRightDown, new Action <UIInputHandler>(this.OnRightClickPiece)); component.m_onPointerEnter = (Action <UIInputHandler>)Delegate.Combine(component.m_onPointerEnter, new Action <UIInputHandler>(this.OnHoverPiece)); component.m_onPointerExit = (Action <UIInputHandler>)Delegate.Combine(component.m_onPointerExit, new Action <UIInputHandler>(this.OnHoverPieceExit)); this.m_pieceIcons.Add(pieceIconData2); } } } for (int k = 0; k < num2; k++) { for (int l = 0; l < num; l++) { int num3 = k * num + l; Hud.PieceIconData pieceIconData3 = this.m_pieceIcons[num3]; pieceIconData3.m_marker.SetActive(new Vector2Int(l, k) == selectedNr); if (num3 < buildPieces.Count) { Piece piece = buildPieces[num3]; pieceIconData3.m_icon.sprite = piece.m_icon; pieceIconData3.m_icon.enabled = true; pieceIconData3.m_tooltip.m_text = piece.m_name; pieceIconData3.m_upgrade.SetActive(piece.m_isUpgrade); } else { pieceIconData3.m_icon.enabled = false; pieceIconData3.m_tooltip.m_text = ""; pieceIconData3.m_upgrade.SetActive(false); } } } this.UpdatePieceBuildStatus(buildPieces, player); if (updateAllBuildStatuses) { this.UpdatePieceBuildStatusAll(buildPieces, player); } if (this.m_lastPieceCategory != category) { this.m_lastPieceCategory = category; this.m_pieceBarPosX = this.m_pieceBarTargetPosX; this.UpdatePieceBuildStatusAll(buildPieces, player); } }