struct KeyBindings native { native static String NameKeys(int k1, int k2); native int, int GetKeysForCommand(String cmd); native void SetBind(int key, String cmd); native void UnbindACommand (String str); } struct OptionValues native { native static int GetCount(Name group); native static String GetText(Name group, int index); native static double GetValue(Name group, int index); native static String GetTextValue(Name group, int index); } struct JoystickConfig native { enum EJoyAxis { JOYAXIS_None = -1, JOYAXIS_Yaw, JOYAXIS_Pitch, JOYAXIS_Forward, JOYAXIS_Side, JOYAXIS_Up, // JOYAXIS_Roll, // Ha ha. No roll for you. NUM_JOYAXIS, }; native float GetSensitivity(); native void SetSensitivity(float scale); native float GetAxisScale(int axis); native void SetAxisScale(int axis, float scale); native float GetAxisDeadZone(int axis); native void SetAxisDeadZone(int axis, float zone); native int GetAxisMap(int axis); native void SetAxisMap(int axis, int gameaxis); } class Menu : Object native { enum EMenuKey { MKEY_Up, MKEY_Down, MKEY_Left, MKEY_Right, MKEY_PageUp, MKEY_PageDown, MKEY_Enter, MKEY_Back, MKEY_Clear, NUM_MKEYS, // These are not buttons but events sent from other menus MKEY_Input, MKEY_Abort, MKEY_MBYes, MKEY_MBNo, } enum EMenuMouse { MOUSE_Click, MOUSE_Move, MOUSE_Release }; //native static int MenuTime(); native static void SetVideoMode(); native static Menu GetCurrentMenu(); native static JoystickConfig GetCurrentJoystickConfig(); native static void SetMenu(Name mnu, int param = 0); native static void StartMessage(String msg, int mode = 0, Name command = 'none'); native virtual bool MenuEvent (int mkey, bool fromcontroller); native virtual bool MouseEvent(int type, int mx, int my); native virtual void Drawer(); static void MenuSound(Sound snd) { S_Sound (snd, CHAN_VOICE | CHAN_UI, snd_menuvolume, ATTN_NONE); } static void DrawConText (int color, int x, int y, String str) { screen.DrawText (ConFont, color, x, y, str, DTA_CellX, 8 * CleanXfac_1, DTA_CellY, 8 * CleanYfac_1); } } class MenuDescriptor : Object native { native Name mMenuName; native String mNetgameMessage; native Class mClass; } struct FOptionMenuSettings { int mTitleColor; int mFontColor; int mFontColorValue; int mFontColorMore; int mFontColorHeader; int mFontColorHighlight; int mFontColorSelection; int mLinespacing; } class OptionMenuDescriptor : MenuDescriptor native { native Array mItems; native String mTitle; native int mSelectedItem; native int mDrawTop; native int mScrollTop; native int mScrollPos; native int mIndent; native int mPosition; native bool mDontDim; //native void CalcIndent(); //native OptionMenuItem GetItem(Name iname); void Reset() { // Reset the default settings (ignore all other values in the struct) mPosition = 0; mScrollTop = 0; mIndent = 0; mDontDim = 0; } } class OptionMenu : Menu native { native bool CanScrollUp; native bool CanScrollDown; native int VisBottom; native OptionMenuItem mFocusControl; native OptionMenuDescriptor mDesc; void SetFocus(OptionMenuItem fc) { mFocusControl = fc; } bool CheckFocus(OptionMenuItem fc) { return mFocusControl == fc; } void ReleaseFocus() { mFocusControl = null; } }