jass基礎(chǔ)-選擇篇章和難度案例

// 對話框和按鈕
// 案例: 選擇篇章和難度
// 需求1: 2個(gè)篇章4個(gè)難度,分別在用2個(gè)對話框展示
// 需求2:選完篇章選難度,支持返回上一個(gè)對話框
library demo initializer test
???globals
???????button bt1 = null // 篇章一按鈕
???????button bt2 = null// 篇章二按鈕
???????dialog dl1 = null // 選擇篇章的對話框
???????dialog dl2 = null // 選擇難度的對話框
???????button bt11 = null// 難度一按鈕
???????button bt22 = null// 難度二按鈕
???????button bt33 = null// 難度三按鈕
???????button bt44 = null// 難度四按鈕
???????button bt55 = null// 返回上一層按鈕
???????trigger t1 = null// 選擇完篇章 彈出難度對話框的觸發(fā)器
???????trigger t2 = null // 選擇難度的觸發(fā)器
???endglobals
???function destroySomething takes nothing returns nothing
???????call DialogDestroy(dl1)
???????call DialogDestroy(dl2)
???????call DestroyTrigger(t1)
???????call DestroyTrigger(t2)
???????set bt1 = null
???????set bt2 = null
???????set bt11 = null
???????set bt22 = null
???????set bt33 = null
???????set bt44 = null
???????set bt55 = null
???????set dl1 = null
???????set dl2 = null
???????set t1 = null
???????set t2 = null
???endfunction
???function selectLevel takes nothing returns nothing
???????local button clickedBt = GetClickedButton()
???????if clickedBt == bt55 then
???????????call DialogDisplay(Player(0), dl1, true)
???????????return
???????endif
???????if clickedBt == bt11 then
???????????call BJDebugMsg("選擇了難度一")
???????endif
???????if clickedBt == bt22 then
???????????call BJDebugMsg("選擇了難度二")
???????endif
???????if clickedBt == bt33 then
???????????call BJDebugMsg("選擇了難度三")
???????endif
???????if clickedBt == bt44 then
???????????call BJDebugMsg("選擇了難度四")
???????endif
???????call destroySomething()
???endfunction
???function selectLevelDialog1 takes nothing returns nothing
???????if dl2 == null then
???????????set dl2 = DialogCreate()
???????????set bt11 = DialogAddButton(dl2, "難度一(Q)", 'Q')
???????????set bt22 = DialogAddButton(dl2, "難度二(W)", 'W')
???????????set bt55 = DialogAddButton(dl2, "返回上一層(E)", 'E')
???????????call DialogSetMessage(dl2, "選擇難度")
???????endif
???????call DialogDisplay(Player(0), dl2, true)
???????if t2 == null then
???????????set t2 = CreateTrigger()
???????????call TriggerRegisterDialogEvent(t2, dl2)
???????????call TriggerAddAction(t2, function selectLevel)
???????endif
???endfunction
???function selectLevelDialog2 takes nothing returns nothing
???????if dl2 == null then
???????????set dl2 = DialogCreate()
???????????set bt33 = DialogAddButton(dl2, "難度三(Q)", 'Q')
???????????set bt44 = DialogAddButton(dl2, "難度四(W)", 'W')
???????????set bt55 = DialogAddButton(dl2, "返回上一層(E)", 'E')
???????????call DialogSetMessage(dl2, "選擇難度")
???????endif
???????call DialogDisplay(Player(0), dl2, true)
???????if t2 == null then
???????????set t2 = CreateTrigger()
???????????call TriggerRegisterDialogEvent(t2, dl2)
???????????call TriggerAddAction(t2, function selectLevel)
???????endif
???endfunction
???function selectCharpter takes nothing returns nothing
???????local button clickedBt = GetClickedButton()
???????if clickedBt == bt1 then
???????????call selectLevelDialog1()
???????endif
???????if clickedBt == bt2 then
???????????call selectLevelDialog2()
???????endif
???endfunction
???function enterRegionAction takes nothing returns nothing
???????set dl1 = DialogCreate()
???????set t1 = CreateTrigger()
???????set bt1 = DialogAddButton(dl1, "篇章一(Q)", 'Q')
???????set bt2 = DialogAddButton(dl1, "篇章二(W)", 'W')
???????call DialogSetMessage(dl1, "選擇篇章")
???????call DialogDisplay(Player(0), dl1, true)
???????call TriggerRegisterDialogEvent(t1, dl1)
???????call TriggerAddAction(t1, function selectCharpter)
???endfunction
???function test takes nothing returns nothing
???????local rect re = Rect(- 146, 497, 150, 666)
???????local rect re2 = Rect(482, 487, 801, 667)
???????local region reg = CreateRegion()
???????local trigger t = CreateTrigger()
???????call RegionAddRect(reg, re)
???????call RegionAddRect(reg, re2)
???????call TriggerRegisterEnterRegion(t, reg, null)
???????call TriggerAddAction(t, function enterRegionAction)
???????call FogEnable(false)
???????call FogMaskEnable(false)
???????call CreateUnit(Player(0), 'Hpal', 0, 0, 0)
???endfunction
endlibrary