Interface modding

本頁面講述的內容長期有效

在《鋼鐵雄心IV》中,界面是指玩家用來與遊戲交互的用戶界面。

概述

界面文件的組件可以分為兩組:容器和元素。例如,containerWindowType 是一個容器,而 iconType 是一個元素。

界面文件使用 .gui 文件類型。 所有界面文件都可以在 /Hearts of Iron IV/interface/ 中找到。

當出現 internal 字樣時,這個部分的源代碼是只有P社可以修改的,即它所指的主題是不可修改的。

可以在界面文件中使用宏,以便更輕鬆地調整位置。

例如,這將使一個名為 WINDOW_X_POS 的宏,其值為 10。

@WINDOW_X_POS = 10

可以在元素中這樣引用它:

containerWindowType = {
    name = "my_container"
    position = { x = @WINDOW_X_POS y = -600 }

    # ...
}

容器

容器用於將元素組合在一起,並將它們與內部函數相關聯。

除非通過腳本化 GUI,否則無法添加新容器。這是因為容器的 name 屬性在內部鏈接到容器所需的任何數據。常見的例外是,您可以在 countrytechtreeview.gui 中為自定義技術文件夾添加新容器。

容器定義的順序和嵌套會影響它們的顯示方式。

containerWindowType

最常見的容器類型,用於保存任何一組元素。

通常使用以下屬性:

  • name - 容器的名稱。
  • background - 容器的背景。
  • position - 容器的屏幕位置。
  • size - 容器的邊界框。接受百分數( 如 100%% )。
  • moveable - 設置是否可以拖動容器。
  • fullscreen -設置是否將容器全屏化。
  • orientation - 設置 position 屬性的方向原點。
  • clipping - 設置容器是否將修剪其他元素(如在邊界處剪切其元素)。

以下屬性用於動畫容器:

  • show_position - 容器在顯示模式下移動到的屏幕位置。
  • hide_position - 容器在隱藏模式下移動到的屏幕位置。
  • show_animation_type - 用於顯示容器的動畫類型(始終減速)
  • hide_animation_type - 用於隱藏容器的動畫類型(始終加速)。
  • animation_time - 動畫播放時間(始終為 300)。
  • upsound - 當容器移動到顯示位置時要播放的聲音。
  • downsound - 當容器移動到隱藏位置時要播放的聲音。
  • fade_time - 淡入淡出的時間。
  • fade_type - 淡入的類型(始終為線性)。

以下屬性很少或從不使用:

  • dontRender - 不渲染
  • horizontalBorder - 水平邊界
  • verticalBorder - 垂直邊界

scrollbarType

滾動條用於定義滾動條由哪些元素組成。

使用以下屬性:

  • name - 滾動條名稱。
  • slider - 用作滾動條滑塊的按鈕元素。
  • track - 用作滾動條跟蹤器的按鈕元素。
  • leftbutton - 用作滾動條左增量按鈕的按鈕元素。
  • rightbutton - 用作滾動條右增量按鈕的按鈕元素。
  • position - 滾動條的屏幕位置。
  • size - 滾動條的邊界框。
  • priority - 滾動條相對於其他元素的優先級。
  • borderSize - 滾動條邊框的邊界框。
  • maxValue - 滾動條能移動的最大值(用於控制增量)。
  • minValue - 滾動條能移動的最小值(用於控制增量)。
  • stepSize - 使用增量按鈕的單次增量大小。
  • startValue - 滾動條滑塊的初始大小。
  • horizontal - 設置滾動條是水平 (1) 還是垂直 (0)。

Elements

容器中使用了多種元素類型。所有元素都必須在容器內使用,它們不會在容器之外工作。

元素將繼承它們所在的容器的方向,除非為自己指定了方向。

以下元素可以自由添加,並可用於腳本化 GUI。

  • iconType - 用於靜態圖像。
  • instantTextBoxType - 用於文本。
  • buttonType - 用於按鈕。

以下元素依賴於內部代碼。您可以添加新元素,它們不會填充數據。

  • smoothListboxType - 用於平滑滾動列表。
  • listboxType - 用於滾動列表。
  • checkboxType - 用於複選框。
  • OverlappingElementsBoxType - 用於重疊元素。
  • editBoxType - 用於可編輯的文本框。
  • shieldtype - 用於顯示國家/地區旗幟。

以下元素已過時:

  • guiButtonType - 與 buttonType 相同。
  • textBoxType -與 instantTextBoxType 相同。
  • eu3dialogtype - 與 windowType 相同。
  • shieldtype - 僅在 eu3dialogtype 中使用。 較新的文件中的標誌使用不同的元素。

iconType

圖標元素用於向界面添加圖像。它的用法與 buttonType 重疊,但後者作為按鈕運行。

使用以下屬性:

  • name - 圖標名稱。
  • position - 圖標的屏幕位置。
  • orientation - 設置位置屬性的方向原點。
  • spriteType - 用於圖標的圖像。引用 spriteType 定義。
  • quadTextureSprite - 用於圖標的圖像。引用動態的 spriteType 定義(例如旗幟)或多幀的 spriteType 定義。
  • frame - 使用多幀圖像時要用於圖標的幀。
  • alwaystransparent - 強制圖標透明,如點擊只能一個元素後面的另一個元素。
  • hint_tag - 設置鼠標懸停在圖標上方時用於顯示提示的關鍵字。
  • pdx_tooltip - 設置要向玩家顯示的提示。採用本地化關鍵字。
  • pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。採用本地化關鍵字。
  • centerposition - 設置位置是否以圖標的中心為原點。

instantTextBoxType

實例文本框元素用於向界面添加文本。在某些情況下,元素的文本是在內部生成的(如regiment_count)。在這些情況下,除非文本在本地化字符串中公開,否則無法對其進行編輯。

使用以下屬性:

  • name - 文本框名稱。
  • position - 文本框的屏幕位置。
  • orientation - 設置位置屬性的方向原點。
  • text - 文本框顯示的文本。
  • font - 用於文本的字體。
  • maxWidth - 顯示文本的總寬度,以像素為單位。
  • maxHeight - 顯示文本的總高度,以像素為單位。
  • format - 文本的對齊方式。
  • fixedsize - 文本框是否截斷超出其邊框的文本。
  • borderSize - 文本框邊框的邊界框。
  • alwaystransparent - 強制文本透明,如點擊只能一個元素後面的另一個元素。
  • pdx_tooltip - 設置要向玩家顯示的提示。採用本地化關鍵字。
  • pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。採用本地化關鍵字。

以下屬性很少或從不使用:

  • textureFile - 從不使用。

可用的 format 值:

  • left
  • centre
  • right

buttonType

按鈕元素用於向界面添加按鈕。按鈕由圖像和文本組成,因此它們的操作方式與 iconTypeinstantTextBoxType 類似。

使用以下屬性:

  • name - 按鈕名稱。
  • position - 按鈕名稱。
  • orientation - 設置位置屬性的方向原點。
  • spriteType - 用於按鈕的圖像。引用 spriteType 定義。
  • quadTextureSprite - 用於按鈕的圖像。引用動態的 spriteType 定義(如旗幟)或多幀的 spriteType 定義。
  • frame - 使用多幀圖像時要用於按鈕的幀。
  • alwaystransparent - 強制按鈕透明,如點擊只能一個元素後面的另一個元素。
  • buttonText - 按鈕顯示的文本。
  • buttonFont - 用於文本的字體。
  • shortcut - 為此按鈕添加的快捷方式。
  • clicksound - 點擊時要播放的聲音。
  • oversound - 懸停時要播放的聲音。
  • hint_tag - 設置鼠標懸停在按鈕上方時用於顯示提示的關鍵字。
  • pdx_tooltip - 設置要向玩家顯示的提示。採用本地化關鍵字。
  • pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。採用本地化關鍵字。
  • scale - 縮放按鈕大小。

以下屬性很少或從不使用:

  • tooltip - 從未使用過。
  • tooltipText - 從未使用過。
  • delayedTooltipText - 從未使用過。

smoothListboxType

平滑列表框元素用於定義列表框,該列表框是用條目填充的可滾動列表。 通常,這些元素在內部與另一個容器鏈接,來構成列表框中使用的實際條目。

使用以下屬性:

  • name - 列表框名稱。
  • position - 列表框的屏幕位置。
  • orientation - 設置位置屬性的方向原點。
  • size - 列表框的邊界框。
  • spacing - 列表框條目的間距。
  • horizontal - 列表框是水平 (1) 還是垂直 (0)。
  • scrollbartype - 用於列表框的滾動條。
  • bordersize - 列表框邊框的邊界框。
  • alwaystransparent - 強制列表框透明,如點擊只能一個元素後面的另一個元素。

以下屬性很少或從不使用:

  • background - 從不使用。

listboxType

列表框元素用於定義列表框,列表框是用條目填充的可滾動列表。通常,這些元素在內部與另一個容器鏈接,該容器構成列表框中使用的實際條目。

使用以下屬性:

  • name - 列表框名稱。
  • position - 列表框的屏幕位置。
  • orientation - 設置位置屬性的方向原點。
  • size - 列表框的邊界框。
  • spacing - 列表框條目的間距。
  • horizontal - 列表框是水平 (1) 還是垂直 (0)。
  • scrollbartype - 用於列表框的滾動條。
  • bordersize - 列表框邊框的邊界框。
  • alwaystransparent - 強制列表框透明,如點擊只能一個元素後面的另一個元素。

以下屬性很少或從不使用:

  • background - 從未使用過。

checkboxType

複選框元素用於向界面添加複選框。複選框的實際效果在內部( internal )定義。

使用以下屬性:

  • name - 複選框名稱。
  • position - 複選框的屏幕位置。
  • orientation - 設置位置屬性的方向原點。
  • spriteType - 用於複選框的圖像。引用 spriteType 定義。
  • quadTextureSprite - 用於複選框的圖像。 引用動態的 spriteType 定義(例如旗幟)或多幀的 spriteType 定義。
  • frame - 使用多幀圖像時要用於圖標的幀。
  • alwaystransparent - 強制複選框透明,如點擊只能一個元素後面的另一個元素。
  • buttonText - 複選框顯示的文本。
  • buttonFont - 用於文本的字體。
  • shortcut - 要為此複選框添加的快捷方式。
  • clicksound - 點擊時要使用的聲音。
  • hint_tag - 設置鼠標懸停在複選框上方時用於顯示提示的關鍵字。
  • pdx_tooltip - 設置要向玩家顯示的提示。
  • pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。
  • scale - 縮放複選框大小。

以下屬性很少或從不使用:

  • tooltip - 從未使用過。
  • tooltipText - 從未使用過。
  • delayedTooltipText - 從未使用過。

editBoxType

編輯文本框元素用於將可編輯的文本框添加到界面。

使用以下屬性:

  • name - 文本框名稱。
  • position - 文本框的屏幕位置。
  • orientation - 設置位置屬性的方向原點。
  • text - 文本框顯示的文本。
  • font - 用於文本的字體。
  • maxWidth - 顯示文本的總寬度,以像素為單位。
  • maxHeight - 顯示文本的總高度,以像素為單位。
  • format - 文本的對齊方式。
  • fixedsize - 文本框是否截斷超出其邊框的文本。
  • borderSize - 文本框邊框的邊界框。
  • alwaystransparent - 強制文本框透明,如點擊只能一個元素後面的另一個元素。
  • ignore_tab_navigation - 使元素忽略選項卡導航。

可用的 format 值:

  • left
  • centre
  • right

OverlappingElementsBoxType

重疊元素框元素用於定義一種特殊類型的列表框,該列表框在其內部動態重疊子元素。

使用以下屬性:

  • name - 列表框名稱。
  • position - 列表框的屏幕位置。
  • orientation - 設置位置屬性的方向原點。
  • size - 列表框的邊界框。
  • spacing - 列表框條目的間距。
  • horizontal - 列表框是水平 (1) 還是垂直 (0)。
  • bordersize - 列表框邊框的邊界框。
  • alwaystransparent - 強制列表框透明,如點擊只能一個元素後面的另一個元素。

以下屬性很少或從不使用:

  • textureFile - 從不使用。

位置與方向原點

了解位置坐標如何工作對於正確編輯界面非常重要。

元素(或容器)使用的 orientation 屬性會通知您元素的錨點所在位置。例如,UPPER_LEFT 表示位於屏幕的左上角的 (0, 0) 位置,而 LOWER_RIGHT 是右下角。

然後,position 屬性從此錨點位置工作。因此,如果您希望元素位於屏幕的另一側,則需要先更改 orientation

使用這個系統是因為它允許界面適應不同的分辨率。因為所有的位置都與一個特定的原點相聯繫,這個原點是根據玩家的屏幕分辨率動態計算的,所以容器和元素的位置保持穩定。

所以,如果你想確保你的界面編輯是穩定的,你必須正確使用 orientation 屬性。

一個錯誤的做法是只編輯 position , 例如 position = { x = 1800 y = 200 }。這在擁有1800以上像素的顯示器(如1900 x 1200 以上)中能正常工作,但在更小的顯示器上就看不到了。

可用的 orientation 值 (大小寫不敏感):

  • CENTER
  • UPPER_LEFT
  • LOWER_LEFT
  • UPPER_RIGHT
  • LOWER_RIGHT

字體

參考: Font Modding

在《鋼鐵雄心IV》中可用的字體如下:

  • Arial12
  • Arial12_bold
  • cg_16b
  • cg_18b
  • garamond_12
  • garamond_14
  • garamond_14_bold
  • garamond_16
  • garamond_16_bold
  • garamond_24
  • hoi_16mbs
  • hoi_16tooltip3
  • hoi_16typewriter
  • hoi_18
  • hoi_18b
  • hoi_18mbs
  • hoi_20b
  • hoi_20bs
  • hoi_22tech
  • hoi_22typewriter
  • hoi_24header
  • hoi_26mbs
  • hoi_30header
  • hoi_33
  • hoi_36header
  • hoi4_typewriter16
  • hoi4_typewriter22
  • hoi_mapfont4
  • hoi_arrow_font
  • newsfeed_body
  • newsfeed_title
  • standard
  • standard_18
  • standard_22
  • tahoma_20_bold
  • vic_18
  • vic_18_grey
  • vic_18s
  • vic_22
  • vic_22_bl
  • vic_22s
  • vic_36
  • vic_36s