jass基础-选择篇章和难度案例

// 对话框和按钮
// 案例: 选择篇章和难度
// 需求1: 2个篇章4个难度,分别在用2个对话框展示
// 需求2:选完篇章选难度,支持返回上一个对话框
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// 选择完篇章 弹出难度对话框的触发器
trigger t2 = null // 选择难度的触发器
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