variables { global: 3: menuButtonRadius 4: menuButtonDistance 5: menuGridSize 6: menuTextPadding 7: menuTextScale player: 6: facingDirWhenMenuOpened 7: menuLevel 8: menuButtonPositions 9: destroyMenuButtons 10: menuButtonEffects 11: menuButtonTexts 12: menuButtonRows 13: n 15: menuBottonColumns 16: menuButtonVertOffsets 17: menuButtonHorOffsets 18: menuButtonTextPositions 19: menuButtonHorDirs } rule("**** TEST: create menu button(s)") { event { Ongoing - Each Player; Team 1; All; } conditions { Event Player.menuLevel == 1; } actions { "setup" If(Count Of(Event Player.menuButtonPositions) > 0); Event Player.destroyMenuButtons = True; Wait(0.016, Ignore Condition); End; Event Player.n = -1; "START NEW BUTTON" Event Player.n += 1; "delete?" Wait(0.016, Ignore Condition); "define button row (1-3)" Event Player.menuButtonRows[Event Player.n] = 1; "define button col (1-5)" Event Player.menuBottonColumns[Event Player.n] = 1; Event Player.menuButtonVertOffsets[Event Player.n] = 0.500 + (3 - Event Player.menuButtonRows[Event Player.n]) * Global.menuGridSize; If(Event Player.menuBottonColumns[Event Player.n] < 2); Event Player.menuButtonHorDirs[Event Player.n] = Direction From Angles(Horizontal Angle From Direction( Event Player.facingDirWhenMenuOpened) + 90, 0); Else; Event Player.menuButtonHorDirs[Event Player.n] = Direction From Angles(Horizontal Angle From Direction( Event Player.facingDirWhenMenuOpened) + -90, 0); End; If(Event Player.menuBottonColumns[Event Player.n] == 1 || Event Player.menuBottonColumns[Event Player.n] == 5); Event Player.menuButtonHorOffsets[Event Player.n] = Global.menuGridSize * 2; Else If(Event Player.menuBottonColumns[Event Player.n] == 3); Event Player.menuButtonHorOffsets[Event Player.n] = 0; Else; Event Player.menuButtonHorOffsets[Event Player.n] = Global.menuGridSize * 1; End; "delete?" Wait(0.016, Ignore Condition); Event Player.menuButtonPositions[Event Player.n] = Position Of(Event Player) + Event Player.menuButtonVertOffsets[Event Player.n] * Up + Global.menuButtonDistance * Event Player.facingDirWhenMenuOpened + Event Player.menuButtonHorOffsets[Event Player.n] * Event Player.menuButtonHorDirs[Event Player.n]; "delete?" Wait(0.016, Ignore Condition); "define button colour" Create Effect(Event Player, Sphere, Blue, Event Player.menuButtonPositions[Event Player.n], Global.menuButtonRadius, None); Event Player.menuButtonEffects[Event Player.n] = Last Created Entity; "delete?" Wait(0.016, Ignore Condition); Event Player.menuButtonTextPositions[Event Player.n] = Vector(0, Global.menuTextPadding, 0) + Event Player.menuButtonPositions[Event Player.n]; "define label text/colour" Create In-World Text(Event Player, Custom String("top left blue"), Event Player.menuButtonTextPositions[Event Player.n], Global.menuTextScale, Do Not Clip, None, Blue, Default Visibility); "END?" Event Player.menuButtonTexts[Event Player.n] = Last Text ID; Wait(0.016, Ignore Condition); "START NEW BUTTON" Event Player.n += 1; "delete?" Wait(0.016, Ignore Condition); "define button row (1-3)" Event Player.menuButtonRows[Event Player.n] = 2; "define button col (1-5)" Event Player.menuBottonColumns[Event Player.n] = 3; Event Player.menuButtonVertOffsets[Event Player.n] = 0.500 + (3 - Event Player.menuButtonRows[Event Player.n]) * Global.menuGridSize; If(Event Player.menuBottonColumns[Event Player.n] < 2); Event Player.menuButtonHorDirs[Event Player.n] = Direction From Angles(Horizontal Angle From Direction( Event Player.facingDirWhenMenuOpened) + 90, 0); Else; Event Player.menuButtonHorDirs[Event Player.n] = Direction From Angles(Horizontal Angle From Direction( Event Player.facingDirWhenMenuOpened) + -90, 0); End; If(Event Player.menuBottonColumns[Event Player.n] == 1 || Event Player.menuBottonColumns[Event Player.n] == 5); Event Player.menuButtonHorOffsets[Event Player.n] = Global.menuGridSize * 2; Else If(Event Player.menuBottonColumns[Event Player.n] == 3); Event Player.menuButtonHorOffsets[Event Player.n] = 0; Else; Event Player.menuButtonHorOffsets[Event Player.n] = Global.menuGridSize * 1; End; "delete?" Wait(0.016, Ignore Condition); Event Player.menuButtonPositions[Event Player.n] = Position Of(Event Player) + Event Player.menuButtonVertOffsets[Event Player.n] * Up + Global.menuButtonDistance * Event Player.facingDirWhenMenuOpened + Event Player.menuButtonHorOffsets[Event Player.n] * Event Player.menuButtonHorDirs[Event Player.n]; "delete?" Wait(0.016, Ignore Condition); "define button colour" Create Effect(Event Player, Sphere, Red, Event Player.menuButtonPositions[Event Player.n], Global.menuButtonRadius, None); Event Player.menuButtonEffects[Event Player.n] = Last Created Entity; "delete?" Wait(0.016, Ignore Condition); Event Player.menuButtonTextPositions[Event Player.n] = Vector(0, Global.menuTextPadding, 0) + Event Player.menuButtonPositions[Event Player.n]; "define label text/colour" Create In-World Text(Event Player, Custom String("middle red"), Event Player.menuButtonTextPositions[Event Player.n], Global.menuTextScale, Do Not Clip, None, Red, Default Visibility); "END?" Event Player.menuButtonTexts[Event Player.n] = Last Text ID; Wait(0.016, Ignore Condition); "START NEW BUTTON" Event Player.n += 1; "delete?" Wait(0.016, Ignore Condition); "define button row (1-3)" Event Player.menuButtonRows[Event Player.n] = 3; "define button col (1-5)" Event Player.menuBottonColumns[Event Player.n] = 5; Event Player.menuButtonVertOffsets[Event Player.n] = 0.500 + (3 - Event Player.menuButtonRows[Event Player.n]) * Global.menuGridSize; If(Event Player.menuBottonColumns[Event Player.n] < 2); Event Player.menuButtonHorDirs[Event Player.n] = Direction From Angles(Horizontal Angle From Direction( Event Player.facingDirWhenMenuOpened) + 90, 0); Else; Event Player.menuButtonHorDirs[Event Player.n] = Direction From Angles(Horizontal Angle From Direction( Event Player.facingDirWhenMenuOpened) + -90, 0); End; If(Event Player.menuBottonColumns[Event Player.n] == 1 || Event Player.menuBottonColumns[Event Player.n] == 5); Event Player.menuButtonHorOffsets[Event Player.n] = Global.menuGridSize * 2; Else If(Event Player.menuBottonColumns[Event Player.n] == 3); Event Player.menuButtonHorOffsets[Event Player.n] = 0; Else; Event Player.menuButtonHorOffsets[Event Player.n] = Global.menuGridSize * 1; End; "delete?" Wait(0.016, Ignore Condition); Event Player.menuButtonPositions[Event Player.n] = Position Of(Event Player) + Event Player.menuButtonVertOffsets[Event Player.n] * Up + Global.menuButtonDistance * Event Player.facingDirWhenMenuOpened + Event Player.menuButtonHorOffsets[Event Player.n] * Event Player.menuButtonHorDirs[Event Player.n]; "delete?" Wait(0.016, Ignore Condition); "define button colour" Create Effect(Event Player, Sphere, White, Event Player.menuButtonPositions[Event Player.n], Global.menuButtonRadius, None); Event Player.menuButtonEffects[Event Player.n] = Last Created Entity; "delete?" Wait(0.016, Ignore Condition); Event Player.menuButtonTextPositions[Event Player.n] = Vector(0, Global.menuTextPadding, 0) + Event Player.menuButtonPositions[Event Player.n]; "define label text/colour" Create In-World Text(Event Player, Custom String("bottom right white"), Event Player.menuButtonTextPositions[Event Player.n], Global.menuTextScale, Do Not Clip, None, White, Default Visibility); "END?" Event Player.menuButtonTexts[Event Player.n] = Last Text ID; } }