C#C
C#3y ago
249 replies
kokars

❔ List string variables

Hello, I'm really new to C# and would like to get help.
How is the correct way to give variable for each case name? So it would display like - "WOOD x1" "STONE x2" etc... My code is below.
This is for Rust game plugin.
    private void CreateButtons(BasePlayer player, BaseContainer parent, BuildingPrivlidge tc)
    {
      // Title
      TextContainer.Create(parent, Anchor.TopLeft, new Offset(60f, -50f, 210f, -3f))
        .WithSize(15)
        .WithText("BASE UPGRADE")
        .WithOutline(m_OutlineWhite);


      List<string> u_ButtonNames = new List<string> { "WOOD " + "(resource)", "STONE " + "(resource)", "METAL " + "(resource)", "HQM " + "(resource)" };

      // Button Container
      ImageContainer.Create(parent, Anchor.FullStretch, new Offset(5f, 5f, -5f, -25f))
        .WithStyle(m_PanelStyle)
        .WithLayoutGroup(u_ButtonLayout, u_ButtonNames, 0, (int i, string t, BaseContainer buttons, Anchor anchor, Offset offset) =>
        {
          ImageContainer.Create(buttons, anchor, offset)
            .WithStyle(m_ButtonStyle)
            .WithChildren(header =>
            {
              TextContainer.Create(header, Anchor.FullStretch, Offset.zero)
                .WithText(t)
                .WithAlignment(TextAnchor.MiddleCenter);

              ButtonContainer.Create(header, Anchor.FullStretch, Offset.zero)
                .WithColor(Color.Clear)
            .WithCallback(m_CallbackHandler, arg =>
            {
              switch (t)
              {
                case "WOOD": rust.RunClientCommand(player, "chat.say", "/up 1"); break;
                case "STONE": rust.RunClientCommand(player, "chat.say", "/up 2"); break;
                case "METAL": rust.RunClientCommand(player, "chat.say", "/up 3"); break;
                case "HQM": rust.RunClientCommand(player, "chat.say", "/up 4"); break;
              }
            }, $"{player.UserIDString}.{t}");
            });
        });
    }
Was this page helpful?