Porting other faction's UI feature

From Total War Modding
Revision as of 12:26, 7 July 2023 by Rhox (talk | contribs) (mid save)

This tutorial talks about how to create a custom twui based on other vanilla UI

Synopsis

Let's say I want to create a new feature for Wurrzag based on his dancing. Huh, what does dancing have to do with Total War and how are we going to represent it? Maybe I should focus on the rhythm of the dancing and fitting the perfect harmony. And for that, we should Harmony feature used by Cathay.


(I'm going to skip all the pooled resource parts, for that look at other tutorials)

Getting Original Code

Harmony.png

First, you want to check the path and some component names by playing the Cathay and checking the path to the UI by using the component viewer. You can turn this feature on by checking the check box in the settings and pressing the ` button (the one on your upper left) in your keyboard

Twui.png


On hud_campaign_resource_bar_wh3.twui.xml, you'll find the twui parts responsible for it. Now it's time to copy it and make our own.

Making own twui

Now for Hierarchy, we want to copy 'Root' and all harmony-related parts. So the hierarchy part will look like below.

Harmony hierarchy.png
  1. Now for the component part, we want to copy every component mentioned in the hierarchy, including the root.
  2. After that, we want to change the pooled resource name and effect bundle name into what we have set.
  3. As a final step, we want to feed the hairy robot a twui we made to change the guide
Guid regen.png

Congratulations, now you just finished your own twui. Now we have to show it to people via script.

Scripting

Now make your script and write some script like below


 cm:add_post_first_tick_callback(                                                                       
    function()
       if cm:get_local_faction_name(true) == "wh_main_grn_orcs_of_the_bloody_hand" then--put your faction name
           local parent_ui = find_uicomponent(core:get_ui_root(), "hud_campaign", "resources_bar_holder", "resources_bar");
           local result = core:get_or_create_component("rhox_dancer_harmony_holder", "ui/campaign ui/rhox_dancer.twui.xml", parent_ui) --put your path to the twui
           if not result then
               script_error("Rhox dancer: ".. "ERROR: could not create harmony ui component? How can this be?");
               return false;
           end;
       end
    end
 )

Now start the game as Wurrzag and check whether it works.


And you'll find out it's not working. Now we have to find out what is the problem.



(Under construction)