From cfe3528c27a01e63824505aa05584e72be8f63b9 Mon Sep 17 00:00:00 2001 From: Hanxing Yang Date: Sun, 28 Apr 2024 12:08:26 +0800 Subject: [PATCH] Fix project running (#415) * export empty code file to avoid running failure * fix import ebiten/v2 * update default sprite image --- spx-gui/src/assets/default-sprite.png | Bin 0 -> 52661 bytes spx-gui/src/assets/default-sprite.svg | 270 ------------ .../panels/sprite/SpriteBasicConfig.vue | 1 + .../components/project/ProjectCreateModal.vue | 10 +- .../src/components/project/ProjectItem.vue | 4 +- spx-gui/src/models/sprite.ts | 4 +- spx-gui/src/models/stage.ts | 4 +- tools/ispx/main.go | 2 + .../hajimehoshi/ebiten/v2/export.go | 406 ++++++++++++++++++ 9 files changed, 418 insertions(+), 283 deletions(-) create mode 100644 spx-gui/src/assets/default-sprite.png delete mode 100644 spx-gui/src/assets/default-sprite.svg create mode 100755 tools/ispx/pkg/github.com/hajimehoshi/ebiten/v2/export.go diff --git a/spx-gui/src/assets/default-sprite.png b/spx-gui/src/assets/default-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..983b7476e93caa1917bcafe063fc7fed59110f32 GIT binary patch literal 52661 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spx-gui/src/components/editor/panels/sprite/SpriteBasicConfig.vue b/spx-gui/src/components/editor/panels/sprite/SpriteBasicConfig.vue index 5a52610d5..2898a50d7 100644 --- a/spx-gui/src/components/editor/panels/sprite/SpriteBasicConfig.vue +++ b/spx-gui/src/components/editor/panels/sprite/SpriteBasicConfig.vue @@ -107,5 +107,6 @@ const addToLibrary = useAddAssetToLibrary() display: flex; gap: 4px; align-items: center; + word-break: keep-all; } diff --git a/spx-gui/src/components/project/ProjectCreateModal.vue b/spx-gui/src/components/project/ProjectCreateModal.vue index 1cd44af3b..c2c6144c4 100644 --- a/spx-gui/src/components/project/ProjectCreateModal.vue +++ b/spx-gui/src/components/project/ProjectCreateModal.vue @@ -49,12 +49,12 @@ import { useI18n } from '@/utils/i18n' import { useMessageHandle } from '@/utils/exception' import { useUserStore } from '@/stores/user' import { ApiException, ApiExceptionCode } from '@/apis/common/exception' -import { Sprite } from '@/models/sprite' +import { Sprite, type SpriteInits } from '@/models/sprite' import { Costume } from '@/models/costume' import { File } from '@/models/common/file' import { uploadFiles } from '@/models/common/cloud' import { filename } from '@/utils/path' -import defaultSpriteSvg from '@/assets/default-sprite.svg' +import defaultSpritePng from '@/assets/default-sprite.png' import defaultBackdropImg from '@/assets/default-backdrop.png' import { Backdrop } from '@/models/backdrop' import { Project } from '@/models/project' @@ -96,9 +96,9 @@ function createFile(url: string) { const handleSubmit = useMessageHandle( async () => { // make default project - const spriteFile = createFile(defaultSpriteSvg) - const spritePos = { x: -71, y: 75 } // offset to make sprite centered. depending on the size of spriteFile - const sprite = Sprite.create('', undefined, spritePos) + const spriteFile = createFile(defaultSpritePng) + const spriteInits: SpriteInits = { x: -71, y: 75, size: 0.5 } // offset & size to make sprite centered. depending on the size of spriteFile + const sprite = Sprite.create('', undefined, spriteInits) sprite.addCostume(Costume.create('', spriteFile)) const backdropFile = createFile(defaultBackdropImg) const backdrop = Backdrop.create('', backdropFile) diff --git a/spx-gui/src/components/project/ProjectItem.vue b/spx-gui/src/components/project/ProjectItem.vue index 811050ed7..cf1d9a3f7 100644 --- a/spx-gui/src/components/project/ProjectItem.vue +++ b/spx-gui/src/components/project/ProjectItem.vue @@ -15,7 +15,7 @@ import { computed } from 'vue' import dayjs from 'dayjs' import { useFileUrl } from '@/utils/file' import { Project } from '@/models/project' -import defaultSpriteSvg from '@/assets/default-sprite.svg' +import defaultSpritePng from '@/assets/default-sprite.png' const props = defineProps<{ inHomepage?: boolean @@ -25,7 +25,7 @@ const props = defineProps<{ const imgSrc = useFileUrl(() => props.project.sprites[0]?.costume?.img) const imgStyle = computed(() => { - const backgroundImage = imgSrc.value || defaultSpriteSvg + const backgroundImage = imgSrc.value || defaultSpritePng return { backgroundImage: `url("${backgroundImage}")` } }) diff --git a/spx-gui/src/models/sprite.ts b/spx-gui/src/models/sprite.ts index 6fc3c3845..01084a54b 100644 --- a/spx-gui/src/models/sprite.ts +++ b/spx-gui/src/models/sprite.ts @@ -207,9 +207,7 @@ export class Sprite extends Disposble { isDraggable: this.isDraggable, costumes: costumeConfigs } - if (this.code !== '') { - files[`${this.name}.spx`] = fromText(`${this.name}.spx`, this.code) - } + files[`${this.name}.spx`] = fromText(`${this.name}.spx`, this.code) files[`${assetPath}/${spriteConfigFileName}`] = fromConfig(spriteConfigFileName, config) return files } diff --git a/spx-gui/src/models/stage.ts b/spx-gui/src/models/stage.ts index 39e2ca122..ce056dae2 100644 --- a/spx-gui/src/models/stage.ts +++ b/spx-gui/src/models/stage.ts @@ -175,9 +175,7 @@ export class Stage { export(): [RawStageConfig, Files] { const files: Files = {} const backdropConfigs: RawBackdropConfig[] = [] - if (this.code !== '') { - files[stageCodeFilePath] = fromText(stageCodeFileName, this.code) - } + files[stageCodeFilePath] = fromText(stageCodeFileName, this.code) for (const backdrop of this._backdrops) { const [backdropConfig, backdropFiles] = backdrop.export() backdropConfigs.push(backdropConfig) diff --git a/tools/ispx/main.go b/tools/ispx/main.go index e73cfa919..e06a858bc 100644 --- a/tools/ispx/main.go +++ b/tools/ispx/main.go @@ -1,6 +1,7 @@ package main //go:generate qexp -outdir pkg github.com/goplus/spx +//go:generate qexp -outdir pkg github.com/hajimehoshi/ebiten/v2 import ( "archive/zip" @@ -10,6 +11,7 @@ import ( "syscall/js" _ "github.com/goplus/builder/ispx/pkg/github.com/goplus/spx" + _ "github.com/goplus/builder/ispx/pkg/github.com/hajimehoshi/ebiten/v2" "github.com/goplus/builder/ispx/zipfs" "github.com/goplus/igop" "github.com/goplus/igop/gopbuild" diff --git a/tools/ispx/pkg/github.com/hajimehoshi/ebiten/v2/export.go b/tools/ispx/pkg/github.com/hajimehoshi/ebiten/v2/export.go new file mode 100755 index 000000000..01f3f41d3 --- /dev/null +++ b/tools/ispx/pkg/github.com/hajimehoshi/ebiten/v2/export.go @@ -0,0 +1,406 @@ +// export by github.com/goplus/igop/cmd/qexp + +package ebiten + +import ( + q "github.com/hajimehoshi/ebiten/v2" + + "go/constant" + "reflect" + + "github.com/goplus/igop" +) + +func init() { + igop.RegisterPackage(&igop.Package{ + Name: "ebiten", + Path: "github.com/hajimehoshi/ebiten/v2", + Deps: map[string]string{ + "fmt": "fmt", + "github.com/hajimehoshi/ebiten/v2/internal/affine": "affine", + "github.com/hajimehoshi/ebiten/v2/internal/clock": "clock", + "github.com/hajimehoshi/ebiten/v2/internal/gamepad": "gamepad", + "github.com/hajimehoshi/ebiten/v2/internal/gamepaddb": "gamepaddb", + "github.com/hajimehoshi/ebiten/v2/internal/graphics": "graphics", + "github.com/hajimehoshi/ebiten/v2/internal/graphicsdriver": "graphicsdriver", + "github.com/hajimehoshi/ebiten/v2/internal/shaderir": "shaderir", + "github.com/hajimehoshi/ebiten/v2/internal/ui": "ui", + "github.com/hajimehoshi/ebiten/v2/internal/vibrate": "vibrate", + "image": "image", + "image/color": "color", + "image/draw": "draw", + "math": "math", + "os": "os", + "strings": "strings", + "sync/atomic": "atomic", + "time": "time", + }, + Interfaces: map[string]reflect.Type{ + "Game": reflect.TypeOf((*q.Game)(nil)).Elem(), + }, + NamedTypes: map[string]reflect.Type{ + "Address": reflect.TypeOf((*q.Address)(nil)).Elem(), + "ColorM": reflect.TypeOf((*q.ColorM)(nil)).Elem(), + "CompositeMode": reflect.TypeOf((*q.CompositeMode)(nil)).Elem(), + "DrawImageOptions": reflect.TypeOf((*q.DrawImageOptions)(nil)).Elem(), + "DrawRectShaderOptions": reflect.TypeOf((*q.DrawRectShaderOptions)(nil)).Elem(), + "DrawTrianglesOptions": reflect.TypeOf((*q.DrawTrianglesOptions)(nil)).Elem(), + "DrawTrianglesShaderOptions": reflect.TypeOf((*q.DrawTrianglesShaderOptions)(nil)).Elem(), + "FillRule": reflect.TypeOf((*q.FillRule)(nil)).Elem(), + "Filter": reflect.TypeOf((*q.Filter)(nil)).Elem(), + "GeoM": reflect.TypeOf((*q.GeoM)(nil)).Elem(), + "Image": reflect.TypeOf((*q.Image)(nil)).Elem(), + "Key": reflect.TypeOf((*q.Key)(nil)).Elem(), + "Shader": reflect.TypeOf((*q.Shader)(nil)).Elem(), + "Vertex": reflect.TypeOf((*q.Vertex)(nil)).Elem(), + "VibrateGamepadOptions": reflect.TypeOf((*q.VibrateGamepadOptions)(nil)).Elem(), + "VibrateOptions": reflect.TypeOf((*q.VibrateOptions)(nil)).Elem(), + }, + AliasTypes: map[string]reflect.Type{ + "CursorModeType": reflect.TypeOf((*q.CursorModeType)(nil)).Elem(), + "CursorShapeType": reflect.TypeOf((*q.CursorShapeType)(nil)).Elem(), + "FPSModeType": reflect.TypeOf((*q.FPSModeType)(nil)).Elem(), + "GamepadButton": reflect.TypeOf((*q.GamepadButton)(nil)).Elem(), + "GamepadID": reflect.TypeOf((*q.GamepadID)(nil)).Elem(), + "MouseButton": reflect.TypeOf((*q.MouseButton)(nil)).Elem(), + "StandardGamepadAxis": reflect.TypeOf((*q.StandardGamepadAxis)(nil)).Elem(), + "StandardGamepadButton": reflect.TypeOf((*q.StandardGamepadButton)(nil)).Elem(), + "TouchID": reflect.TypeOf((*q.TouchID)(nil)).Elem(), + "WindowResizingModeType": reflect.TypeOf((*q.WindowResizingModeType)(nil)).Elem(), + }, + Vars: map[string]reflect.Value{}, + Funcs: map[string]reflect.Value{ + "AppendGamepadIDs": reflect.ValueOf(q.AppendGamepadIDs), + "AppendInputChars": reflect.ValueOf(q.AppendInputChars), + "AppendTouchIDs": reflect.ValueOf(q.AppendTouchIDs), + "CurrentFPS": reflect.ValueOf(q.CurrentFPS), + "CurrentTPS": reflect.ValueOf(q.CurrentTPS), + "CursorMode": reflect.ValueOf(q.CursorMode), + "CursorPosition": reflect.ValueOf(q.CursorPosition), + "CursorShape": reflect.ValueOf(q.CursorShape), + "DeviceScaleFactor": reflect.ValueOf(q.DeviceScaleFactor), + "FPSMode": reflect.ValueOf(q.FPSMode), + "GamepadAxis": reflect.ValueOf(q.GamepadAxis), + "GamepadAxisNum": reflect.ValueOf(q.GamepadAxisNum), + "GamepadAxisValue": reflect.ValueOf(q.GamepadAxisValue), + "GamepadButtonNum": reflect.ValueOf(q.GamepadButtonNum), + "GamepadIDs": reflect.ValueOf(q.GamepadIDs), + "GamepadName": reflect.ValueOf(q.GamepadName), + "GamepadSDLID": reflect.ValueOf(q.GamepadSDLID), + "InputChars": reflect.ValueOf(q.InputChars), + "IsFocused": reflect.ValueOf(q.IsFocused), + "IsFullscreen": reflect.ValueOf(q.IsFullscreen), + "IsGamepadButtonPressed": reflect.ValueOf(q.IsGamepadButtonPressed), + "IsKeyPressed": reflect.ValueOf(q.IsKeyPressed), + "IsMouseButtonPressed": reflect.ValueOf(q.IsMouseButtonPressed), + "IsRunnableOnUnfocused": reflect.ValueOf(q.IsRunnableOnUnfocused), + "IsScreenClearedEveryFrame": reflect.ValueOf(q.IsScreenClearedEveryFrame), + "IsScreenFilterEnabled": reflect.ValueOf(q.IsScreenFilterEnabled), + "IsScreenTransparent": reflect.ValueOf(q.IsScreenTransparent), + "IsStandardGamepadButtonPressed": reflect.ValueOf(q.IsStandardGamepadButtonPressed), + "IsStandardGamepadLayoutAvailable": reflect.ValueOf(q.IsStandardGamepadLayoutAvailable), + "IsVsyncEnabled": reflect.ValueOf(q.IsVsyncEnabled), + "IsWindowBeingClosed": reflect.ValueOf(q.IsWindowBeingClosed), + "IsWindowClosingHandled": reflect.ValueOf(q.IsWindowClosingHandled), + "IsWindowDecorated": reflect.ValueOf(q.IsWindowDecorated), + "IsWindowFloating": reflect.ValueOf(q.IsWindowFloating), + "IsWindowMaximized": reflect.ValueOf(q.IsWindowMaximized), + "IsWindowMinimized": reflect.ValueOf(q.IsWindowMinimized), + "IsWindowResizable": reflect.ValueOf(q.IsWindowResizable), + "MaxTPS": reflect.ValueOf(q.MaxTPS), + "MaximizeWindow": reflect.ValueOf(q.MaximizeWindow), + "MinimizeWindow": reflect.ValueOf(q.MinimizeWindow), + "NewImage": reflect.ValueOf(q.NewImage), + "NewImageFromImage": reflect.ValueOf(q.NewImageFromImage), + "NewShader": reflect.ValueOf(q.NewShader), + "RestoreWindow": reflect.ValueOf(q.RestoreWindow), + "RunGame": reflect.ValueOf(q.RunGame), + "ScheduleFrame": reflect.ValueOf(q.ScheduleFrame), + "ScreenSizeInFullscreen": reflect.ValueOf(q.ScreenSizeInFullscreen), + "SetCursorMode": reflect.ValueOf(q.SetCursorMode), + "SetCursorShape": reflect.ValueOf(q.SetCursorShape), + "SetFPSMode": reflect.ValueOf(q.SetFPSMode), + "SetFullscreen": reflect.ValueOf(q.SetFullscreen), + "SetInitFocused": reflect.ValueOf(q.SetInitFocused), + "SetMaxTPS": reflect.ValueOf(q.SetMaxTPS), + "SetRunnableOnUnfocused": reflect.ValueOf(q.SetRunnableOnUnfocused), + "SetScreenClearedEveryFrame": reflect.ValueOf(q.SetScreenClearedEveryFrame), + "SetScreenFilterEnabled": reflect.ValueOf(q.SetScreenFilterEnabled), + "SetScreenTransparent": reflect.ValueOf(q.SetScreenTransparent), + "SetVsyncEnabled": reflect.ValueOf(q.SetVsyncEnabled), + "SetWindowClosingHandled": reflect.ValueOf(q.SetWindowClosingHandled), + "SetWindowDecorated": reflect.ValueOf(q.SetWindowDecorated), + "SetWindowFloating": reflect.ValueOf(q.SetWindowFloating), + "SetWindowIcon": reflect.ValueOf(q.SetWindowIcon), + "SetWindowPosition": reflect.ValueOf(q.SetWindowPosition), + "SetWindowResizable": reflect.ValueOf(q.SetWindowResizable), + "SetWindowResizingMode": reflect.ValueOf(q.SetWindowResizingMode), + "SetWindowSize": reflect.ValueOf(q.SetWindowSize), + "SetWindowSizeLimits": reflect.ValueOf(q.SetWindowSizeLimits), + "SetWindowTitle": reflect.ValueOf(q.SetWindowTitle), + "StandardGamepadAxisValue": reflect.ValueOf(q.StandardGamepadAxisValue), + "StandardGamepadButtonValue": reflect.ValueOf(q.StandardGamepadButtonValue), + "TouchIDs": reflect.ValueOf(q.TouchIDs), + "TouchPosition": reflect.ValueOf(q.TouchPosition), + "UpdateStandardGamepadLayoutMappings": reflect.ValueOf(q.UpdateStandardGamepadLayoutMappings), + "Vibrate": reflect.ValueOf(q.Vibrate), + "VibrateGamepad": reflect.ValueOf(q.VibrateGamepad), + "Wheel": reflect.ValueOf(q.Wheel), + "WindowPosition": reflect.ValueOf(q.WindowPosition), + "WindowResizingMode": reflect.ValueOf(q.WindowResizingMode), + "WindowSize": reflect.ValueOf(q.WindowSize), + "WindowSizeLimits": reflect.ValueOf(q.WindowSizeLimits), + }, + TypedConsts: map[string]igop.TypedConst{ + "AddressClampToZero": {reflect.TypeOf(q.AddressClampToZero), constant.MakeInt64(int64(q.AddressClampToZero))}, + "AddressRepeat": {reflect.TypeOf(q.AddressRepeat), constant.MakeInt64(int64(q.AddressRepeat))}, + "AddressUnsafe": {reflect.TypeOf(q.AddressUnsafe), constant.MakeInt64(int64(q.AddressUnsafe))}, + "CompositeModeClear": {reflect.TypeOf(q.CompositeModeClear), constant.MakeInt64(int64(q.CompositeModeClear))}, + "CompositeModeCopy": {reflect.TypeOf(q.CompositeModeCopy), constant.MakeInt64(int64(q.CompositeModeCopy))}, + "CompositeModeDestination": {reflect.TypeOf(q.CompositeModeDestination), constant.MakeInt64(int64(q.CompositeModeDestination))}, + "CompositeModeDestinationAtop": {reflect.TypeOf(q.CompositeModeDestinationAtop), constant.MakeInt64(int64(q.CompositeModeDestinationAtop))}, + "CompositeModeDestinationIn": {reflect.TypeOf(q.CompositeModeDestinationIn), constant.MakeInt64(int64(q.CompositeModeDestinationIn))}, + "CompositeModeDestinationOut": {reflect.TypeOf(q.CompositeModeDestinationOut), constant.MakeInt64(int64(q.CompositeModeDestinationOut))}, + "CompositeModeDestinationOver": {reflect.TypeOf(q.CompositeModeDestinationOver), constant.MakeInt64(int64(q.CompositeModeDestinationOver))}, + "CompositeModeLighter": {reflect.TypeOf(q.CompositeModeLighter), constant.MakeInt64(int64(q.CompositeModeLighter))}, + "CompositeModeMultiply": {reflect.TypeOf(q.CompositeModeMultiply), constant.MakeInt64(int64(q.CompositeModeMultiply))}, + "CompositeModeSourceAtop": {reflect.TypeOf(q.CompositeModeSourceAtop), constant.MakeInt64(int64(q.CompositeModeSourceAtop))}, + "CompositeModeSourceIn": {reflect.TypeOf(q.CompositeModeSourceIn), constant.MakeInt64(int64(q.CompositeModeSourceIn))}, + "CompositeModeSourceOut": {reflect.TypeOf(q.CompositeModeSourceOut), constant.MakeInt64(int64(q.CompositeModeSourceOut))}, + "CompositeModeSourceOver": {reflect.TypeOf(q.CompositeModeSourceOver), constant.MakeInt64(int64(q.CompositeModeSourceOver))}, + "CompositeModeXor": {reflect.TypeOf(q.CompositeModeXor), constant.MakeInt64(int64(q.CompositeModeXor))}, + "CursorModeCaptured": {reflect.TypeOf(q.CursorModeCaptured), constant.MakeInt64(int64(q.CursorModeCaptured))}, + "CursorModeHidden": {reflect.TypeOf(q.CursorModeHidden), constant.MakeInt64(int64(q.CursorModeHidden))}, + "CursorModeVisible": {reflect.TypeOf(q.CursorModeVisible), constant.MakeInt64(int64(q.CursorModeVisible))}, + "CursorShapeCrosshair": {reflect.TypeOf(q.CursorShapeCrosshair), constant.MakeInt64(int64(q.CursorShapeCrosshair))}, + "CursorShapeDefault": {reflect.TypeOf(q.CursorShapeDefault), constant.MakeInt64(int64(q.CursorShapeDefault))}, + "CursorShapeEWResize": {reflect.TypeOf(q.CursorShapeEWResize), constant.MakeInt64(int64(q.CursorShapeEWResize))}, + "CursorShapeNSResize": {reflect.TypeOf(q.CursorShapeNSResize), constant.MakeInt64(int64(q.CursorShapeNSResize))}, + "CursorShapePointer": {reflect.TypeOf(q.CursorShapePointer), constant.MakeInt64(int64(q.CursorShapePointer))}, + "CursorShapeText": {reflect.TypeOf(q.CursorShapeText), constant.MakeInt64(int64(q.CursorShapeText))}, + "EvenOdd": {reflect.TypeOf(q.EvenOdd), constant.MakeInt64(int64(q.EvenOdd))}, + "FPSModeVsyncOffMaximum": {reflect.TypeOf(q.FPSModeVsyncOffMaximum), constant.MakeInt64(int64(q.FPSModeVsyncOffMaximum))}, + "FPSModeVsyncOffMinimum": {reflect.TypeOf(q.FPSModeVsyncOffMinimum), constant.MakeInt64(int64(q.FPSModeVsyncOffMinimum))}, + "FPSModeVsyncOn": {reflect.TypeOf(q.FPSModeVsyncOn), constant.MakeInt64(int64(q.FPSModeVsyncOn))}, + "FillAll": {reflect.TypeOf(q.FillAll), constant.MakeInt64(int64(q.FillAll))}, + "FilterLinear": {reflect.TypeOf(q.FilterLinear), constant.MakeInt64(int64(q.FilterLinear))}, + "FilterNearest": {reflect.TypeOf(q.FilterNearest), constant.MakeInt64(int64(q.FilterNearest))}, + "GamepadButton0": {reflect.TypeOf(q.GamepadButton0), constant.MakeInt64(int64(q.GamepadButton0))}, + "GamepadButton1": {reflect.TypeOf(q.GamepadButton1), constant.MakeInt64(int64(q.GamepadButton1))}, + "GamepadButton10": {reflect.TypeOf(q.GamepadButton10), constant.MakeInt64(int64(q.GamepadButton10))}, + "GamepadButton11": {reflect.TypeOf(q.GamepadButton11), constant.MakeInt64(int64(q.GamepadButton11))}, + "GamepadButton12": {reflect.TypeOf(q.GamepadButton12), constant.MakeInt64(int64(q.GamepadButton12))}, + "GamepadButton13": {reflect.TypeOf(q.GamepadButton13), constant.MakeInt64(int64(q.GamepadButton13))}, + "GamepadButton14": {reflect.TypeOf(q.GamepadButton14), constant.MakeInt64(int64(q.GamepadButton14))}, + "GamepadButton15": {reflect.TypeOf(q.GamepadButton15), constant.MakeInt64(int64(q.GamepadButton15))}, + "GamepadButton16": {reflect.TypeOf(q.GamepadButton16), constant.MakeInt64(int64(q.GamepadButton16))}, + "GamepadButton17": {reflect.TypeOf(q.GamepadButton17), constant.MakeInt64(int64(q.GamepadButton17))}, + "GamepadButton18": {reflect.TypeOf(q.GamepadButton18), constant.MakeInt64(int64(q.GamepadButton18))}, + "GamepadButton19": {reflect.TypeOf(q.GamepadButton19), constant.MakeInt64(int64(q.GamepadButton19))}, + "GamepadButton2": {reflect.TypeOf(q.GamepadButton2), constant.MakeInt64(int64(q.GamepadButton2))}, + "GamepadButton20": {reflect.TypeOf(q.GamepadButton20), constant.MakeInt64(int64(q.GamepadButton20))}, + "GamepadButton21": {reflect.TypeOf(q.GamepadButton21), constant.MakeInt64(int64(q.GamepadButton21))}, + "GamepadButton22": {reflect.TypeOf(q.GamepadButton22), constant.MakeInt64(int64(q.GamepadButton22))}, + "GamepadButton23": {reflect.TypeOf(q.GamepadButton23), constant.MakeInt64(int64(q.GamepadButton23))}, + "GamepadButton24": {reflect.TypeOf(q.GamepadButton24), constant.MakeInt64(int64(q.GamepadButton24))}, + "GamepadButton25": {reflect.TypeOf(q.GamepadButton25), constant.MakeInt64(int64(q.GamepadButton25))}, + "GamepadButton26": {reflect.TypeOf(q.GamepadButton26), constant.MakeInt64(int64(q.GamepadButton26))}, + "GamepadButton27": {reflect.TypeOf(q.GamepadButton27), constant.MakeInt64(int64(q.GamepadButton27))}, + "GamepadButton28": {reflect.TypeOf(q.GamepadButton28), constant.MakeInt64(int64(q.GamepadButton28))}, + "GamepadButton29": {reflect.TypeOf(q.GamepadButton29), constant.MakeInt64(int64(q.GamepadButton29))}, + "GamepadButton3": {reflect.TypeOf(q.GamepadButton3), constant.MakeInt64(int64(q.GamepadButton3))}, + "GamepadButton30": {reflect.TypeOf(q.GamepadButton30), constant.MakeInt64(int64(q.GamepadButton30))}, + "GamepadButton31": {reflect.TypeOf(q.GamepadButton31), constant.MakeInt64(int64(q.GamepadButton31))}, + "GamepadButton4": {reflect.TypeOf(q.GamepadButton4), constant.MakeInt64(int64(q.GamepadButton4))}, + "GamepadButton5": {reflect.TypeOf(q.GamepadButton5), constant.MakeInt64(int64(q.GamepadButton5))}, + "GamepadButton6": {reflect.TypeOf(q.GamepadButton6), constant.MakeInt64(int64(q.GamepadButton6))}, + "GamepadButton7": {reflect.TypeOf(q.GamepadButton7), constant.MakeInt64(int64(q.GamepadButton7))}, + "GamepadButton8": {reflect.TypeOf(q.GamepadButton8), constant.MakeInt64(int64(q.GamepadButton8))}, + "GamepadButton9": {reflect.TypeOf(q.GamepadButton9), constant.MakeInt64(int64(q.GamepadButton9))}, + "GamepadButtonMax": {reflect.TypeOf(q.GamepadButtonMax), constant.MakeInt64(int64(q.GamepadButtonMax))}, + "Key0": {reflect.TypeOf(q.Key0), constant.MakeInt64(int64(q.Key0))}, + "Key1": {reflect.TypeOf(q.Key1), constant.MakeInt64(int64(q.Key1))}, + "Key2": {reflect.TypeOf(q.Key2), constant.MakeInt64(int64(q.Key2))}, + "Key3": {reflect.TypeOf(q.Key3), constant.MakeInt64(int64(q.Key3))}, + "Key4": {reflect.TypeOf(q.Key4), constant.MakeInt64(int64(q.Key4))}, + "Key5": {reflect.TypeOf(q.Key5), constant.MakeInt64(int64(q.Key5))}, + "Key6": {reflect.TypeOf(q.Key6), constant.MakeInt64(int64(q.Key6))}, + "Key7": {reflect.TypeOf(q.Key7), constant.MakeInt64(int64(q.Key7))}, + "Key8": {reflect.TypeOf(q.Key8), constant.MakeInt64(int64(q.Key8))}, + "Key9": {reflect.TypeOf(q.Key9), constant.MakeInt64(int64(q.Key9))}, + "KeyA": {reflect.TypeOf(q.KeyA), constant.MakeInt64(int64(q.KeyA))}, + "KeyAlt": {reflect.TypeOf(q.KeyAlt), constant.MakeInt64(int64(q.KeyAlt))}, + "KeyAltLeft": {reflect.TypeOf(q.KeyAltLeft), constant.MakeInt64(int64(q.KeyAltLeft))}, + "KeyAltRight": {reflect.TypeOf(q.KeyAltRight), constant.MakeInt64(int64(q.KeyAltRight))}, + "KeyApostrophe": {reflect.TypeOf(q.KeyApostrophe), constant.MakeInt64(int64(q.KeyApostrophe))}, + "KeyArrowDown": {reflect.TypeOf(q.KeyArrowDown), constant.MakeInt64(int64(q.KeyArrowDown))}, + "KeyArrowLeft": {reflect.TypeOf(q.KeyArrowLeft), constant.MakeInt64(int64(q.KeyArrowLeft))}, + "KeyArrowRight": {reflect.TypeOf(q.KeyArrowRight), constant.MakeInt64(int64(q.KeyArrowRight))}, + "KeyArrowUp": {reflect.TypeOf(q.KeyArrowUp), constant.MakeInt64(int64(q.KeyArrowUp))}, + "KeyB": {reflect.TypeOf(q.KeyB), constant.MakeInt64(int64(q.KeyB))}, + "KeyBackquote": {reflect.TypeOf(q.KeyBackquote), constant.MakeInt64(int64(q.KeyBackquote))}, + "KeyBackslash": {reflect.TypeOf(q.KeyBackslash), constant.MakeInt64(int64(q.KeyBackslash))}, + "KeyBackspace": {reflect.TypeOf(q.KeyBackspace), constant.MakeInt64(int64(q.KeyBackspace))}, + "KeyBracketLeft": {reflect.TypeOf(q.KeyBracketLeft), constant.MakeInt64(int64(q.KeyBracketLeft))}, + "KeyBracketRight": {reflect.TypeOf(q.KeyBracketRight), constant.MakeInt64(int64(q.KeyBracketRight))}, + "KeyC": {reflect.TypeOf(q.KeyC), constant.MakeInt64(int64(q.KeyC))}, + "KeyCapsLock": {reflect.TypeOf(q.KeyCapsLock), constant.MakeInt64(int64(q.KeyCapsLock))}, + "KeyComma": {reflect.TypeOf(q.KeyComma), constant.MakeInt64(int64(q.KeyComma))}, + "KeyContextMenu": {reflect.TypeOf(q.KeyContextMenu), constant.MakeInt64(int64(q.KeyContextMenu))}, + "KeyControl": {reflect.TypeOf(q.KeyControl), constant.MakeInt64(int64(q.KeyControl))}, + "KeyControlLeft": {reflect.TypeOf(q.KeyControlLeft), constant.MakeInt64(int64(q.KeyControlLeft))}, + "KeyControlRight": {reflect.TypeOf(q.KeyControlRight), constant.MakeInt64(int64(q.KeyControlRight))}, + "KeyD": {reflect.TypeOf(q.KeyD), constant.MakeInt64(int64(q.KeyD))}, + "KeyDelete": {reflect.TypeOf(q.KeyDelete), constant.MakeInt64(int64(q.KeyDelete))}, + "KeyDigit0": {reflect.TypeOf(q.KeyDigit0), constant.MakeInt64(int64(q.KeyDigit0))}, + "KeyDigit1": {reflect.TypeOf(q.KeyDigit1), constant.MakeInt64(int64(q.KeyDigit1))}, + "KeyDigit2": {reflect.TypeOf(q.KeyDigit2), constant.MakeInt64(int64(q.KeyDigit2))}, + "KeyDigit3": {reflect.TypeOf(q.KeyDigit3), constant.MakeInt64(int64(q.KeyDigit3))}, + "KeyDigit4": {reflect.TypeOf(q.KeyDigit4), constant.MakeInt64(int64(q.KeyDigit4))}, + "KeyDigit5": {reflect.TypeOf(q.KeyDigit5), constant.MakeInt64(int64(q.KeyDigit5))}, + "KeyDigit6": {reflect.TypeOf(q.KeyDigit6), constant.MakeInt64(int64(q.KeyDigit6))}, + "KeyDigit7": {reflect.TypeOf(q.KeyDigit7), constant.MakeInt64(int64(q.KeyDigit7))}, + "KeyDigit8": {reflect.TypeOf(q.KeyDigit8), constant.MakeInt64(int64(q.KeyDigit8))}, + "KeyDigit9": {reflect.TypeOf(q.KeyDigit9), constant.MakeInt64(int64(q.KeyDigit9))}, + "KeyDown": {reflect.TypeOf(q.KeyDown), constant.MakeInt64(int64(q.KeyDown))}, + "KeyE": {reflect.TypeOf(q.KeyE), constant.MakeInt64(int64(q.KeyE))}, + "KeyEnd": {reflect.TypeOf(q.KeyEnd), constant.MakeInt64(int64(q.KeyEnd))}, + "KeyEnter": {reflect.TypeOf(q.KeyEnter), constant.MakeInt64(int64(q.KeyEnter))}, + "KeyEqual": {reflect.TypeOf(q.KeyEqual), constant.MakeInt64(int64(q.KeyEqual))}, + "KeyEscape": {reflect.TypeOf(q.KeyEscape), constant.MakeInt64(int64(q.KeyEscape))}, + "KeyF": {reflect.TypeOf(q.KeyF), constant.MakeInt64(int64(q.KeyF))}, + "KeyF1": {reflect.TypeOf(q.KeyF1), constant.MakeInt64(int64(q.KeyF1))}, + "KeyF10": {reflect.TypeOf(q.KeyF10), constant.MakeInt64(int64(q.KeyF10))}, + "KeyF11": {reflect.TypeOf(q.KeyF11), constant.MakeInt64(int64(q.KeyF11))}, + "KeyF12": {reflect.TypeOf(q.KeyF12), constant.MakeInt64(int64(q.KeyF12))}, + "KeyF2": {reflect.TypeOf(q.KeyF2), constant.MakeInt64(int64(q.KeyF2))}, + "KeyF3": {reflect.TypeOf(q.KeyF3), constant.MakeInt64(int64(q.KeyF3))}, + "KeyF4": {reflect.TypeOf(q.KeyF4), constant.MakeInt64(int64(q.KeyF4))}, + "KeyF5": {reflect.TypeOf(q.KeyF5), constant.MakeInt64(int64(q.KeyF5))}, + "KeyF6": {reflect.TypeOf(q.KeyF6), constant.MakeInt64(int64(q.KeyF6))}, + "KeyF7": {reflect.TypeOf(q.KeyF7), constant.MakeInt64(int64(q.KeyF7))}, + "KeyF8": {reflect.TypeOf(q.KeyF8), constant.MakeInt64(int64(q.KeyF8))}, + "KeyF9": {reflect.TypeOf(q.KeyF9), constant.MakeInt64(int64(q.KeyF9))}, + "KeyG": {reflect.TypeOf(q.KeyG), constant.MakeInt64(int64(q.KeyG))}, + "KeyGraveAccent": {reflect.TypeOf(q.KeyGraveAccent), constant.MakeInt64(int64(q.KeyGraveAccent))}, + "KeyH": {reflect.TypeOf(q.KeyH), constant.MakeInt64(int64(q.KeyH))}, + "KeyHome": {reflect.TypeOf(q.KeyHome), constant.MakeInt64(int64(q.KeyHome))}, + "KeyI": {reflect.TypeOf(q.KeyI), constant.MakeInt64(int64(q.KeyI))}, + "KeyInsert": {reflect.TypeOf(q.KeyInsert), constant.MakeInt64(int64(q.KeyInsert))}, + "KeyJ": {reflect.TypeOf(q.KeyJ), constant.MakeInt64(int64(q.KeyJ))}, + "KeyK": {reflect.TypeOf(q.KeyK), constant.MakeInt64(int64(q.KeyK))}, + "KeyKP0": {reflect.TypeOf(q.KeyKP0), constant.MakeInt64(int64(q.KeyKP0))}, + "KeyKP1": {reflect.TypeOf(q.KeyKP1), constant.MakeInt64(int64(q.KeyKP1))}, + "KeyKP2": {reflect.TypeOf(q.KeyKP2), constant.MakeInt64(int64(q.KeyKP2))}, + "KeyKP3": {reflect.TypeOf(q.KeyKP3), constant.MakeInt64(int64(q.KeyKP3))}, + "KeyKP4": {reflect.TypeOf(q.KeyKP4), constant.MakeInt64(int64(q.KeyKP4))}, + "KeyKP5": {reflect.TypeOf(q.KeyKP5), constant.MakeInt64(int64(q.KeyKP5))}, + "KeyKP6": {reflect.TypeOf(q.KeyKP6), constant.MakeInt64(int64(q.KeyKP6))}, + "KeyKP7": {reflect.TypeOf(q.KeyKP7), constant.MakeInt64(int64(q.KeyKP7))}, + "KeyKP8": {reflect.TypeOf(q.KeyKP8), constant.MakeInt64(int64(q.KeyKP8))}, + "KeyKP9": {reflect.TypeOf(q.KeyKP9), constant.MakeInt64(int64(q.KeyKP9))}, + "KeyKPAdd": {reflect.TypeOf(q.KeyKPAdd), constant.MakeInt64(int64(q.KeyKPAdd))}, + "KeyKPDecimal": {reflect.TypeOf(q.KeyKPDecimal), constant.MakeInt64(int64(q.KeyKPDecimal))}, + "KeyKPDivide": {reflect.TypeOf(q.KeyKPDivide), constant.MakeInt64(int64(q.KeyKPDivide))}, + "KeyKPEnter": {reflect.TypeOf(q.KeyKPEnter), constant.MakeInt64(int64(q.KeyKPEnter))}, + "KeyKPEqual": {reflect.TypeOf(q.KeyKPEqual), constant.MakeInt64(int64(q.KeyKPEqual))}, + "KeyKPMultiply": {reflect.TypeOf(q.KeyKPMultiply), constant.MakeInt64(int64(q.KeyKPMultiply))}, + "KeyKPSubtract": {reflect.TypeOf(q.KeyKPSubtract), constant.MakeInt64(int64(q.KeyKPSubtract))}, + "KeyL": {reflect.TypeOf(q.KeyL), constant.MakeInt64(int64(q.KeyL))}, + "KeyLeft": {reflect.TypeOf(q.KeyLeft), constant.MakeInt64(int64(q.KeyLeft))}, + "KeyLeftBracket": {reflect.TypeOf(q.KeyLeftBracket), constant.MakeInt64(int64(q.KeyLeftBracket))}, + "KeyM": {reflect.TypeOf(q.KeyM), constant.MakeInt64(int64(q.KeyM))}, + "KeyMax": {reflect.TypeOf(q.KeyMax), constant.MakeInt64(int64(q.KeyMax))}, + "KeyMenu": {reflect.TypeOf(q.KeyMenu), constant.MakeInt64(int64(q.KeyMenu))}, + "KeyMeta": {reflect.TypeOf(q.KeyMeta), constant.MakeInt64(int64(q.KeyMeta))}, + "KeyMetaLeft": {reflect.TypeOf(q.KeyMetaLeft), constant.MakeInt64(int64(q.KeyMetaLeft))}, + "KeyMetaRight": {reflect.TypeOf(q.KeyMetaRight), constant.MakeInt64(int64(q.KeyMetaRight))}, + "KeyMinus": {reflect.TypeOf(q.KeyMinus), constant.MakeInt64(int64(q.KeyMinus))}, + "KeyN": {reflect.TypeOf(q.KeyN), constant.MakeInt64(int64(q.KeyN))}, + "KeyNumLock": {reflect.TypeOf(q.KeyNumLock), constant.MakeInt64(int64(q.KeyNumLock))}, + "KeyNumpad0": {reflect.TypeOf(q.KeyNumpad0), constant.MakeInt64(int64(q.KeyNumpad0))}, + "KeyNumpad1": {reflect.TypeOf(q.KeyNumpad1), constant.MakeInt64(int64(q.KeyNumpad1))}, + "KeyNumpad2": {reflect.TypeOf(q.KeyNumpad2), constant.MakeInt64(int64(q.KeyNumpad2))}, + "KeyNumpad3": {reflect.TypeOf(q.KeyNumpad3), constant.MakeInt64(int64(q.KeyNumpad3))}, + "KeyNumpad4": {reflect.TypeOf(q.KeyNumpad4), constant.MakeInt64(int64(q.KeyNumpad4))}, + "KeyNumpad5": {reflect.TypeOf(q.KeyNumpad5), constant.MakeInt64(int64(q.KeyNumpad5))}, + "KeyNumpad6": {reflect.TypeOf(q.KeyNumpad6), constant.MakeInt64(int64(q.KeyNumpad6))}, + "KeyNumpad7": {reflect.TypeOf(q.KeyNumpad7), constant.MakeInt64(int64(q.KeyNumpad7))}, + "KeyNumpad8": {reflect.TypeOf(q.KeyNumpad8), constant.MakeInt64(int64(q.KeyNumpad8))}, + "KeyNumpad9": {reflect.TypeOf(q.KeyNumpad9), constant.MakeInt64(int64(q.KeyNumpad9))}, + "KeyNumpadAdd": {reflect.TypeOf(q.KeyNumpadAdd), constant.MakeInt64(int64(q.KeyNumpadAdd))}, + "KeyNumpadDecimal": {reflect.TypeOf(q.KeyNumpadDecimal), constant.MakeInt64(int64(q.KeyNumpadDecimal))}, + "KeyNumpadDivide": {reflect.TypeOf(q.KeyNumpadDivide), constant.MakeInt64(int64(q.KeyNumpadDivide))}, + "KeyNumpadEnter": {reflect.TypeOf(q.KeyNumpadEnter), constant.MakeInt64(int64(q.KeyNumpadEnter))}, + "KeyNumpadEqual": {reflect.TypeOf(q.KeyNumpadEqual), constant.MakeInt64(int64(q.KeyNumpadEqual))}, + "KeyNumpadMultiply": {reflect.TypeOf(q.KeyNumpadMultiply), constant.MakeInt64(int64(q.KeyNumpadMultiply))}, + "KeyNumpadSubtract": {reflect.TypeOf(q.KeyNumpadSubtract), constant.MakeInt64(int64(q.KeyNumpadSubtract))}, + "KeyO": {reflect.TypeOf(q.KeyO), constant.MakeInt64(int64(q.KeyO))}, + "KeyP": {reflect.TypeOf(q.KeyP), constant.MakeInt64(int64(q.KeyP))}, + "KeyPageDown": {reflect.TypeOf(q.KeyPageDown), constant.MakeInt64(int64(q.KeyPageDown))}, + "KeyPageUp": {reflect.TypeOf(q.KeyPageUp), constant.MakeInt64(int64(q.KeyPageUp))}, + "KeyPause": {reflect.TypeOf(q.KeyPause), constant.MakeInt64(int64(q.KeyPause))}, + "KeyPeriod": {reflect.TypeOf(q.KeyPeriod), constant.MakeInt64(int64(q.KeyPeriod))}, + "KeyPrintScreen": {reflect.TypeOf(q.KeyPrintScreen), constant.MakeInt64(int64(q.KeyPrintScreen))}, + "KeyQ": {reflect.TypeOf(q.KeyQ), constant.MakeInt64(int64(q.KeyQ))}, + "KeyQuote": {reflect.TypeOf(q.KeyQuote), constant.MakeInt64(int64(q.KeyQuote))}, + "KeyR": {reflect.TypeOf(q.KeyR), constant.MakeInt64(int64(q.KeyR))}, + "KeyRight": {reflect.TypeOf(q.KeyRight), constant.MakeInt64(int64(q.KeyRight))}, + "KeyRightBracket": {reflect.TypeOf(q.KeyRightBracket), constant.MakeInt64(int64(q.KeyRightBracket))}, + "KeyS": {reflect.TypeOf(q.KeyS), constant.MakeInt64(int64(q.KeyS))}, + "KeyScrollLock": {reflect.TypeOf(q.KeyScrollLock), constant.MakeInt64(int64(q.KeyScrollLock))}, + "KeySemicolon": {reflect.TypeOf(q.KeySemicolon), constant.MakeInt64(int64(q.KeySemicolon))}, + "KeyShift": {reflect.TypeOf(q.KeyShift), constant.MakeInt64(int64(q.KeyShift))}, + "KeyShiftLeft": {reflect.TypeOf(q.KeyShiftLeft), constant.MakeInt64(int64(q.KeyShiftLeft))}, + "KeyShiftRight": {reflect.TypeOf(q.KeyShiftRight), constant.MakeInt64(int64(q.KeyShiftRight))}, + "KeySlash": {reflect.TypeOf(q.KeySlash), constant.MakeInt64(int64(q.KeySlash))}, + "KeySpace": {reflect.TypeOf(q.KeySpace), constant.MakeInt64(int64(q.KeySpace))}, + "KeyT": {reflect.TypeOf(q.KeyT), constant.MakeInt64(int64(q.KeyT))}, + "KeyTab": {reflect.TypeOf(q.KeyTab), constant.MakeInt64(int64(q.KeyTab))}, + "KeyU": {reflect.TypeOf(q.KeyU), constant.MakeInt64(int64(q.KeyU))}, + "KeyUp": {reflect.TypeOf(q.KeyUp), constant.MakeInt64(int64(q.KeyUp))}, + "KeyV": {reflect.TypeOf(q.KeyV), constant.MakeInt64(int64(q.KeyV))}, + "KeyW": {reflect.TypeOf(q.KeyW), constant.MakeInt64(int64(q.KeyW))}, + "KeyX": {reflect.TypeOf(q.KeyX), constant.MakeInt64(int64(q.KeyX))}, + "KeyY": {reflect.TypeOf(q.KeyY), constant.MakeInt64(int64(q.KeyY))}, + "KeyZ": {reflect.TypeOf(q.KeyZ), constant.MakeInt64(int64(q.KeyZ))}, + "MouseButtonLeft": {reflect.TypeOf(q.MouseButtonLeft), constant.MakeInt64(int64(q.MouseButtonLeft))}, + "MouseButtonMiddle": {reflect.TypeOf(q.MouseButtonMiddle), constant.MakeInt64(int64(q.MouseButtonMiddle))}, + "MouseButtonRight": {reflect.TypeOf(q.MouseButtonRight), constant.MakeInt64(int64(q.MouseButtonRight))}, + "StandardGamepadAxisLeftStickHorizontal": {reflect.TypeOf(q.StandardGamepadAxisLeftStickHorizontal), constant.MakeInt64(int64(q.StandardGamepadAxisLeftStickHorizontal))}, + "StandardGamepadAxisLeftStickVertical": {reflect.TypeOf(q.StandardGamepadAxisLeftStickVertical), constant.MakeInt64(int64(q.StandardGamepadAxisLeftStickVertical))}, + "StandardGamepadAxisMax": {reflect.TypeOf(q.StandardGamepadAxisMax), constant.MakeInt64(int64(q.StandardGamepadAxisMax))}, + "StandardGamepadAxisRightStickHorizontal": {reflect.TypeOf(q.StandardGamepadAxisRightStickHorizontal), constant.MakeInt64(int64(q.StandardGamepadAxisRightStickHorizontal))}, + "StandardGamepadAxisRightStickVertical": {reflect.TypeOf(q.StandardGamepadAxisRightStickVertical), constant.MakeInt64(int64(q.StandardGamepadAxisRightStickVertical))}, + "StandardGamepadButtonCenterCenter": {reflect.TypeOf(q.StandardGamepadButtonCenterCenter), constant.MakeInt64(int64(q.StandardGamepadButtonCenterCenter))}, + "StandardGamepadButtonCenterLeft": {reflect.TypeOf(q.StandardGamepadButtonCenterLeft), constant.MakeInt64(int64(q.StandardGamepadButtonCenterLeft))}, + "StandardGamepadButtonCenterRight": {reflect.TypeOf(q.StandardGamepadButtonCenterRight), constant.MakeInt64(int64(q.StandardGamepadButtonCenterRight))}, + "StandardGamepadButtonFrontBottomLeft": {reflect.TypeOf(q.StandardGamepadButtonFrontBottomLeft), constant.MakeInt64(int64(q.StandardGamepadButtonFrontBottomLeft))}, + "StandardGamepadButtonFrontBottomRight": {reflect.TypeOf(q.StandardGamepadButtonFrontBottomRight), constant.MakeInt64(int64(q.StandardGamepadButtonFrontBottomRight))}, + "StandardGamepadButtonFrontTopLeft": {reflect.TypeOf(q.StandardGamepadButtonFrontTopLeft), constant.MakeInt64(int64(q.StandardGamepadButtonFrontTopLeft))}, + "StandardGamepadButtonFrontTopRight": {reflect.TypeOf(q.StandardGamepadButtonFrontTopRight), constant.MakeInt64(int64(q.StandardGamepadButtonFrontTopRight))}, + "StandardGamepadButtonLeftBottom": {reflect.TypeOf(q.StandardGamepadButtonLeftBottom), constant.MakeInt64(int64(q.StandardGamepadButtonLeftBottom))}, + "StandardGamepadButtonLeftLeft": {reflect.TypeOf(q.StandardGamepadButtonLeftLeft), constant.MakeInt64(int64(q.StandardGamepadButtonLeftLeft))}, + "StandardGamepadButtonLeftRight": {reflect.TypeOf(q.StandardGamepadButtonLeftRight), constant.MakeInt64(int64(q.StandardGamepadButtonLeftRight))}, + "StandardGamepadButtonLeftStick": {reflect.TypeOf(q.StandardGamepadButtonLeftStick), constant.MakeInt64(int64(q.StandardGamepadButtonLeftStick))}, + "StandardGamepadButtonLeftTop": {reflect.TypeOf(q.StandardGamepadButtonLeftTop), constant.MakeInt64(int64(q.StandardGamepadButtonLeftTop))}, + "StandardGamepadButtonMax": {reflect.TypeOf(q.StandardGamepadButtonMax), constant.MakeInt64(int64(q.StandardGamepadButtonMax))}, + "StandardGamepadButtonRightBottom": {reflect.TypeOf(q.StandardGamepadButtonRightBottom), constant.MakeInt64(int64(q.StandardGamepadButtonRightBottom))}, + "StandardGamepadButtonRightLeft": {reflect.TypeOf(q.StandardGamepadButtonRightLeft), constant.MakeInt64(int64(q.StandardGamepadButtonRightLeft))}, + "StandardGamepadButtonRightRight": {reflect.TypeOf(q.StandardGamepadButtonRightRight), constant.MakeInt64(int64(q.StandardGamepadButtonRightRight))}, + "StandardGamepadButtonRightStick": {reflect.TypeOf(q.StandardGamepadButtonRightStick), constant.MakeInt64(int64(q.StandardGamepadButtonRightStick))}, + "StandardGamepadButtonRightTop": {reflect.TypeOf(q.StandardGamepadButtonRightTop), constant.MakeInt64(int64(q.StandardGamepadButtonRightTop))}, + "WindowResizingModeDisabled": {reflect.TypeOf(q.WindowResizingModeDisabled), constant.MakeInt64(int64(q.WindowResizingModeDisabled))}, + "WindowResizingModeEnabled": {reflect.TypeOf(q.WindowResizingModeEnabled), constant.MakeInt64(int64(q.WindowResizingModeEnabled))}, + "WindowResizingModeOnlyFullscreenEnabled": {reflect.TypeOf(q.WindowResizingModeOnlyFullscreenEnabled), constant.MakeInt64(int64(q.WindowResizingModeOnlyFullscreenEnabled))}, + }, + UntypedConsts: map[string]igop.UntypedConst{ + "ColorMDim": {"untyped int", constant.MakeInt64(int64(q.ColorMDim))}, + "DefaultTPS": {"untyped int", constant.MakeInt64(int64(q.DefaultTPS))}, + "GeoMDim": {"untyped int", constant.MakeInt64(int64(q.GeoMDim))}, + "MaxIndicesNum": {"untyped int", constant.MakeInt64(int64(q.MaxIndicesNum))}, + "SyncWithFPS": {"untyped int", constant.MakeInt64(int64(q.SyncWithFPS))}, + "UncappedTPS": {"untyped int", constant.MakeInt64(int64(q.UncappedTPS))}, + }, + }) +}