鋼鐵雄心4 GUI教程 P7gridboxType(二)

注:觀前提示,gridboxType與數(shù)組緊密結(jié)合,在觀看前請(qǐng)確保你有足夠的有關(guān)array的知識(shí)

上一p介紹了gridboxType的基本理解和簡(jiǎn)單應(yīng)用。
根據(jù)數(shù)組內(nèi)容(陣營(yíng)成員)動(dòng)態(tài)變化被列舉窗口(國(guó)家旗幟,名字等組成的窗口)是gridboxType的一大應(yīng)用,這次將介紹gridboxType的另一大應(yīng)用,即批量為相同規(guī)格的元件依據(jù)數(shù)組分配不同的圖像
以TNO豎方向議席(托木茨克議會(huì))為例子

素材準(zhǔn)備:
預(yù)計(jì)用正方形方框代表一個(gè)議會(huì)的席位,不同顏色代表不同的席位支持的party
于是先制作一個(gè)長(zhǎng)圖并且分幀



前端設(shè)計(jì):
還是一樣構(gòu)思一下界面,我們預(yù)計(jì)設(shè)置48個(gè)席位,依據(jù)不同party的支持率分配每個(gè)party所占的議席數(shù)量
如果不使用gridbox的話就意味著需要寫48個(gè)icon然后再給每個(gè)icon分配不同顏色,這顯然是反人類的
回到上一P的“大樓”比喻,這一次我們規(guī)定每間房(被列舉窗口)只有一個(gè)iconType

然后讓我們?cè)O(shè)計(jì)這個(gè)大樓將會(huì)怎么建造:
總共48間房,每層8間房,一共建6層,房間順序按從上到下標(biāo)號(hào)(add_horizontal = no)
這樣子第一間房是第一列第一行,
第二間房是第一列第二行,第七間房(每列最多六間房子)是第二列第一行………以此類推


后端編寫:
還記得上一篇講的dynamic_lists嗎
這里列舉的數(shù)組沒有scope的性質(zhì),且只作為圖片使用的幀數(shù)區(qū)分,所以填寫change_scope = no(可以不填寫,默認(rèn)為不填寫)
然后是properties填寫的部分,由于每間房對(duì)應(yīng)的門牌號(hào)都是獨(dú)一無(wú)二的,使用所列舉數(shù)組的次序進(jìn)行區(qū)分(array^i),對(duì)于第一間房(第一行第一列)而言,它所關(guān)聯(lián)的變量是數(shù)組
gridbx_seat_array的第一位,也就是gridbx_seat_array^0(i = 0,數(shù)組中首位次序是0)
第二間房(第二行第一列,前面填寫過add_horizontal = no,還記得嗎),
它所關(guān)聯(lián)的變量是數(shù)組gridbx_seat_array的第二位,也就是gridbx_seat_array^1(i = 1)
以此類推
所以,我們只需要改變數(shù)組中每個(gè)位次的變量的值,就可以讓對(duì)應(yīng)的icon更換不同的圖像幀

人為地,依據(jù)最開始我們準(zhǔn)備的素材,我們規(guī)定,
變量值= 1,為紅party
變量值= 2,為棕party
變量值= 3,為藍(lán)party
變量值= 4,為灰party
然后是依據(jù)當(dāng)前tag的不同支持率,用上述4個(gè)值來(lái)填充數(shù)組
首先將每個(gè)party的支持率(以百分?jǐn)?shù)形式),乘以48(席位總數(shù)),取整,
可以得到不同party所分配到的席位數(shù)量

將每個(gè)party分配得的席位數(shù)轉(zhuǎn)換為填充進(jìn)數(shù)組時(shí)次序
e.g. 紅party有10個(gè)席位,棕party有12個(gè),那么棕party從第11個(gè)開始,到第22個(gè)結(jié)束
所以,棕party的次序為紅party數(shù)目,加上棕party數(shù)目,其它以此類推
為什么少了灰party的?為了保證總數(shù)為48,結(jié)束位為48

最后填充數(shù)組


以下為完整代碼

由于采用的是決議gui,所以你還需要新建一個(gè)決議然后引用這個(gè)gui

最后進(jìn)游戲測(cè)試


gridbox也終于告一段落了,后續(xù)將以parliament-diagram-main提供的樣本進(jìn)行介紹,敬請(qǐng)期待吧