欢迎光临散文网 会员登陆 & 注册

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

2023-07-16 01:54 作者:庞各庄大棚  | 我要投稿

// 对话框和按钮

// 案例: 选择篇章和难度

// 需求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


jass基础-选择篇章和难度案例的评论 (共 条)

分享到微博请遵守国家法律