mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
Original Source for 1.13 Mod High Resolution version from 12/06/05
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@21 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
#include "BuildDefines.h"
|
||||
|
||||
#ifdef JA2EDITOR
|
||||
//popupmenu.h
|
||||
//Author: Kris Morness
|
||||
//Created: Sept 4, 1997
|
||||
|
||||
#ifndef __POPUPMENU_H
|
||||
#define __POPUPMENU_H
|
||||
|
||||
/*
|
||||
POPUP MENU
|
||||
|
||||
DESIGN CONSIDERATIONS
|
||||
There is currently no support for nested popup menus. Let Kris know if
|
||||
you need this.
|
||||
|
||||
USER INSTRUCTIONS
|
||||
The goal of this popup menu system is to create a quick and intuitive
|
||||
interface system which is functionally similar to Win95 and MacOS.
|
||||
As soon as you click on a button which activates the popup menu, the user
|
||||
will choose a selection in one of three ways:
|
||||
|
||||
1) KEYBOARD - at anytime, the user can use the keyboard regardless of mouse
|
||||
mode. The up/down arrow keys will cycle through the choices and enter will
|
||||
accept the choice. ESC will cancel the menu without making a choice.
|
||||
2) When the mousedown event activates the menu, the user releases the mouse before
|
||||
entering the popup menu region. The menu mode will change and become persistant.
|
||||
Clicking on the hilighted item will close the popup and activate the choice.
|
||||
Clicking elsewhere, the popup will be closed without making a selection. This
|
||||
is functionally equivalent to Win95.
|
||||
3) When the mousedown event activates the menu, the user holds the mouse down and
|
||||
moves the cursor over the popup region. At this moment the menu becomes
|
||||
non-persistant and a choice is made by releasing the mouse. If the mouse is
|
||||
released on a highlighted choice, that choice is selected, otherwise the popup
|
||||
is cancelled. This is functionally equivalent to MacOS. The small diffence is
|
||||
that under Win95's standard convention, the release of the mouse outside of the
|
||||
region doesn't kill the menu, but in MacOS, it does.
|
||||
*/
|
||||
|
||||
|
||||
enum popupMenuIDs
|
||||
{
|
||||
CHANGETSET_POPUP,
|
||||
CHANGECIVGROUP_POPUP,
|
||||
SCHEDULEACTION_POPUP,
|
||||
ACTIONITEM_POPUP,
|
||||
OWNERSHIPGROUP_POPUP,
|
||||
};
|
||||
|
||||
//The direction of the popup menu relative to the button
|
||||
//pressed to activate it or mouse position. In editor mode,
|
||||
//this will attempt to go up and to the right of the button.
|
||||
#define UPMASK 0x00
|
||||
#define DNMASK 0x10
|
||||
#define RTMASK 0x00
|
||||
#define LTMASK 0x01
|
||||
#define DIR_UPRIGHT (UPMASK + RTMASK)
|
||||
#define DIR_UPLEFT (UPMASK + LTMASK)
|
||||
#define DIR_DOWNRIGHT (DNMASK + RTMASK)
|
||||
#define DIR_DOWNLEFT (DNMASK + LTMASK)
|
||||
|
||||
#define POPUP_ACTIVETYPE_NOT_YET_DETERMINED 0
|
||||
#define POPUP_ACTIVETYPE_PERSISTANT 1
|
||||
#define POPUP_ACTIVETYPE_NONPERSISTANT 2
|
||||
|
||||
#define MAX_COLUMNS 8
|
||||
|
||||
//This structure contains all the required information for rendering
|
||||
//the popup menu while in
|
||||
typedef struct currentPopupMenuInformation{
|
||||
UINT8 ubPopupMenuID;
|
||||
UINT8 ubSelectedIndex; //current popup menu index hilited.
|
||||
UINT8 ubNumEntries;
|
||||
UINT8 ubColumns;
|
||||
UINT8 ubMaxEntriesPerColumn;
|
||||
UINT8 ubColumnWidth[ MAX_COLUMNS ];
|
||||
UINT8 ubActiveType;
|
||||
UINT16 usFont;
|
||||
BOOLEAN fActive;
|
||||
BOOLEAN fUseKeyboardInfoUntilMouseMoves;
|
||||
UINT16 usLeft, usTop, usRight, usBottom; //popup region coords.
|
||||
UINT16 usLastMouseX, usLastMouseY;
|
||||
}CurrentPopupMenuInformation;
|
||||
|
||||
//A global var that keeps the popup menu information.
|
||||
extern CurrentPopupMenuInformation gPopup;
|
||||
extern UINT16 *popupMenuStrings[5];
|
||||
|
||||
//These are the two main functions that outside users would call.
|
||||
void InitPopupMenu( INT32 iButtonID, UINT8 ubPopupMenuID, UINT8 ubDirection );
|
||||
BOOLEAN ProcessPopupMenuIfActive();
|
||||
|
||||
//Internal functions that handled by ProcessPopupMenuIfActive
|
||||
void RenderPopupMenu();
|
||||
void PopupMenuHandle();
|
||||
void ProcessPopupMenuSelection();
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user