Exemple #1
0
 // 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;
 }
Exemple #2
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);
            }
Exemple #4
0
    // 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);
        }
    }