mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Added missing #includes Added LUA scripting and console Changed the way tracers are visualized, so they work more like real tracers instead of a light fountain Fixed signedness of many grid variables used in GetMouseMapPos calls Fixed enemy weapon choosing: Sometimes a mortar is chosen but later rejected, but the grenade class was not reset. Caused assertion failure Added checks so enemies don't try to chuck RPG grenades with their hands Now possible to shoot a someone in the head if he's in water Fixed InitSightArrays to also clear soldier interrupt duel points. This was causing an assertion failure elsewhere in the code because the interrupt list still had soldiers on it sometimes when this function was called. Soldiers are much less willing to forfeit their turn over an attempt to use more APs than they have Removed early setting of muzzle flash. This would allow enemies to get an interrupt before you even fired. Fixed item dropping by AI. If AI tried to drop something while standing it would cause deadlock Change to greatly speed up closing the sector inventory window in an unloaded sector Added conditional compile flag to always give robot weapon ready advantage, even for 360 degree sighting Check builddefines.h for the conditional flags. Of greatest interest might be LUA_CONSOLE. This will cause the game to bring up a command console when run. However this console is severely lacking in many areas. If anybody knows of an open-source terminal/console that could be used instead, it would be appreciated. The existing console does bad things when you try to close it, and since it counts as a separate app, it pauses the game while it has focus. LUA scripting is very limited, basically just proof of concept. There is one global variable, the Soldiers array. An array index gives you the soldier in that slot in the currently loaded sector. The soldier has a few things that can be accessed: name (short name); fullname (long name); grid (current grid #, can be changed); walkto(grid) (function to walk to another grid); runto(grid) (function to run to another grid) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@924 3b4a5df2-a311-0410-b5c6-a8a6f20db521
6477 lines
165 KiB
C++
6477 lines
165 KiB
C++
// WANNE 2 <changed some lines>
|
|
#ifdef PRECOMPILEDHEADERS
|
|
#include "Laptop All.h"
|
|
#include "HelpScreen.h"
|
|
#include "BrokenLink.h"
|
|
#include "BobbyRShipments.h"
|
|
#else
|
|
#include "sgp.h"
|
|
#include "Utilities.h"
|
|
#include "WCheck.h"
|
|
#include "Render Dirty.h"
|
|
#include "sysutil.h"
|
|
#include "screens.h"
|
|
#include "cursors.h"
|
|
#include "Event Pump.h"
|
|
#include "laptop.h"
|
|
#include "aim.h"
|
|
#include "AimMembers.h"
|
|
#include "AimFacialIndex.h"
|
|
#include "AimSort.h"
|
|
#include "AimArchives.h"
|
|
#include "AimHistory.h"
|
|
#include "AimLinks.h"
|
|
#include "AimPolicies.h"
|
|
#include "mercs.h"
|
|
#include "mercs Files.h"
|
|
#include "mercs Account.h"
|
|
#include "mercs No Account.h"
|
|
#include "BobbyR.h"
|
|
#include "BobbyRGuns.h"
|
|
#include "BobbyRAmmo.h"
|
|
#include "BobbyRArmour.h"
|
|
#include "BobbyRMisc.h"
|
|
#include "BobbyRUsed.h"
|
|
#include "BobbyRMailOrder.h"
|
|
#include "CharProfile.h"
|
|
#include "florist.h"
|
|
#include "florist Cards.h"
|
|
#include "florist Gallery.h"
|
|
#include "florist Order Form.h"
|
|
#include "insurance.h"
|
|
#include "insurance Contract.h"
|
|
#include "insurance Info.h"
|
|
#include "insurance Comments.h"
|
|
#include "funeral.h"
|
|
#include "sirtech.h"
|
|
#include "finances.h"
|
|
#include "personnel.h"
|
|
#include "history.h"
|
|
#include "files.h"
|
|
#include "email.h"
|
|
#include "Interface Control.h"
|
|
#include "Game Event Hook.h"
|
|
#include "WordWrap.h"
|
|
#include "Game init.h"
|
|
#include "Game Clock.h"
|
|
#include "vobject_blitters.h"
|
|
#include "Soldier Control.h"
|
|
#include "Soldier Profile.h"
|
|
#include "Overhead.h"
|
|
#include "environment.h"
|
|
#include "LibraryDataBase.h"
|
|
#include "music control.h"
|
|
#include "SaveLoadGame.h"
|
|
#include "LaptopSave.h"
|
|
#include "RenderWorld.h"
|
|
#include "gameloop.h"
|
|
#include "english.h"
|
|
#include "random.h"
|
|
#include "Merc Hiring.h"
|
|
#include "Map Screen Interface.h"
|
|
#include "ambient control.h"
|
|
#include "Sound Control.h"
|
|
#include "text.h"
|
|
#include "Message.h"
|
|
#include "Map Screen Interface Bottom.h"
|
|
#include "Cursor Control.h"
|
|
#include "Quests.h"
|
|
#include "Multi Language Graphic Utils.h"
|
|
#include "BrokenLink.h"
|
|
#include "BobbyRShipments.h"
|
|
#include "Dialogue Control.h"
|
|
#include "helpscreen.h"
|
|
#include "cheats.h"
|
|
#include "Strategic Status.h"
|
|
#include "Arms Dealer Init.h"
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// icons text id's
|
|
enum{
|
|
MAIL=0,
|
|
WWW,
|
|
FINANCIAL,
|
|
PERSONNEL,
|
|
HISTORY,
|
|
FILES,
|
|
MAX_ICON_COUNT,
|
|
};
|
|
|
|
enum{
|
|
|
|
};
|
|
enum{
|
|
NO_REGION=0,
|
|
EMAIL_REGION,
|
|
WWW_REGION,
|
|
FINANCIAL_REGION,
|
|
PERSONNEL_REGION,
|
|
HISTORY_REGION,
|
|
FILES_REGION,
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct rgbcolor
|
|
{
|
|
UINT8 ubRed;
|
|
UINT8 ubGreen;
|
|
UINT8 ubBlue;
|
|
};
|
|
|
|
typedef struct rgbcolor RGBCOLOR;
|
|
|
|
RGBCOLOR GlowColors[]={
|
|
{0,0,0},
|
|
{25,0,0},
|
|
{50,0,0},
|
|
{75,0,0},
|
|
{100,0,0},
|
|
{125,0,0},
|
|
{150,0,0},
|
|
{175,0,0},
|
|
{200,0,0},
|
|
{225,0,0},
|
|
{250,0,0},
|
|
};
|
|
|
|
|
|
// laptop programs
|
|
enum{
|
|
LAPTOP_PROGRAM_MAILER,
|
|
LAPTOP_PROGRAM_WEB_BROWSER,
|
|
LAPTOP_PROGRAM_FILES,
|
|
LAPTOP_PROGRAM_PERSONNEL,
|
|
LAPTOP_PROGRAM_FINANCES,
|
|
LAPTOP_PROGRAM_HISTORY,
|
|
|
|
};
|
|
|
|
// laptop program states
|
|
enum{
|
|
LAPTOP_PROGRAM_MINIMIZED,
|
|
LAPTOP_PROGRAM_OPEN,
|
|
};
|
|
#define LAPTOP_ICONS_X iScreenWidthOffset + 33
|
|
#define LAPTOP_ICONS_MAIL_Y iScreenHeightOffset + 30
|
|
#define LAPTOP_ICONS_WWW_Y iScreenHeightOffset + 87
|
|
#define LAPTOP_ICONS_FINANCIAL_Y iScreenHeightOffset + 157
|
|
#define LAPTOP_ICONS_PERSONNEL_Y iScreenHeightOffset + 238
|
|
#define LAPTOP_ICONS_HISTORY_Y iScreenHeightOffset + 305
|
|
#define LAPTOP_ICONS_FILES_Y iScreenHeightOffset + 355
|
|
#define LAPTOP_ICON_TEXT_X iScreenWidthOffset + 24
|
|
|
|
#define LAPTOP_ICON_TEXT_WIDTH 79
|
|
#define LAPTOP_ICON_TEXT_HEIGHT 6
|
|
|
|
#define LAPTOP_ICON_TEXT_MAIL_Y iScreenHeightOffset + 77
|
|
#define LAPTOP_ICON_TEXT_WWW_Y iScreenHeightOffset + 142
|
|
#define LAPTOP_ICON_TEXT_FINANCIAL_Y iScreenHeightOffset + 214
|
|
#define LAPTOP_ICON_TEXT_PERSONNEL_Y iScreenHeightOffset + 296
|
|
#define LAPTOP_ICON_TEXT_HISTORY_Y iScreenHeightOffset + 356
|
|
#define LAPTOP_ICON_TEXT_FILES_Y iScreenHeightOffset + 415
|
|
|
|
#define LAPTOPICONFONT FONT10ARIAL
|
|
#define BOOK_FONT FONT10ARIAL
|
|
#define DOWNLOAD_FONT FONT12ARIAL
|
|
#define ERROR_TITLE_FONT FONT14ARIAL
|
|
#define ERROR_FONT FONT12ARIAL
|
|
|
|
|
|
#define HISTORY_ICON_OFFSET_X 0
|
|
#define FILES_ICON_OFFSET_X 3
|
|
#define FINANCIAL_ICON_OFFSET_X 0
|
|
#define LAPTOP_ICON_WIDTH 80
|
|
#define MAX_BUTTON_COUNT 1
|
|
#define ON_BUTTON 0
|
|
#define GLOW_DELAY 70
|
|
#define WWW_COUNT 6
|
|
#define ICON_INTERVAL 150
|
|
#define BOOK_X iScreenWidthOffset + 111
|
|
#define BOOK_TOP_Y iScreenHeightOffset + 79
|
|
#define BOOK_HEIGHT 12
|
|
#define DOWN_HEIGHT 19
|
|
#define BOOK_WIDTH 100
|
|
#define SCROLL_MIN -100
|
|
#define SCROLL_DIFFERENCE 10
|
|
|
|
#define LONG_UNIT_TIME 120
|
|
#define UNIT_TIME 40
|
|
#define LOAD_TIME UNIT_TIME * 30
|
|
#define FAST_UNIT_TIME 3
|
|
#define FASTEST_UNIT_TIME 2
|
|
#define ALMOST_FAST_UNIT_TIME 25
|
|
#define ALMOST_FAST_LOAD_TIME ALMOST_FAST_UNIT_TIME * 30
|
|
#define FAST_LOAD_TIME FAST_UNIT_TIME * 30
|
|
#define LONG_LOAD_TIME LONG_UNIT_TIME * 30
|
|
#define FASTEST_LOAD_TIME FASTEST_UNIT_TIME * 30
|
|
#define DOWNLOAD_X iScreenWidthOffset + 300
|
|
#define DOWNLOAD_Y iScreenHeightOffset + 200
|
|
#define LAPTOP_WINDOW_X DOWNLOAD_X + 12
|
|
#define LAPTOP_WINDOW_Y DOWNLOAD_Y + 25
|
|
#define LAPTOP_BAR_Y LAPTOP_WINDOW_Y + 2
|
|
#define LAPTOP_BAR_X LAPTOP_WINDOW_X + 1
|
|
#define UNIT_WIDTH 4
|
|
#define LAPTOP_WINDOW_WIDTH 150
|
|
#define LAPTOP_WINDOW_HEIGHT 50
|
|
#define DOWN_STRING_X DOWNLOAD_X + 47
|
|
#define DOWN_STRING_Y DOWNLOAD_Y + 5
|
|
#define ERROR_X iScreenWidthOffset + 300
|
|
#define ERROR_Y iScreenHeightOffset + 200
|
|
#define ERROR_BTN_X iScreenWidthOffset + 43
|
|
#define ERROR_BTN_Y ERROR_Y + 70
|
|
#define ERROR_TITLE_X ERROR_X + 3
|
|
#define ERROR_TITLE_Y ERROR_Y + 3
|
|
#define ERROR_BTN_TEXT_X iScreenWidthOffset + 20
|
|
#define ERROR_BTN_TEXT_Y iScreenHeightOffset + 9
|
|
#define ERROR_TEXT_X iScreenWidthOffset + 0
|
|
#define ERROR_TEXT_Y iScreenHeightOffset + 15
|
|
#define LAPTOP_TITLE_ICONS_X iScreenWidthOffset + 113
|
|
#define LAPTOP_TITLE_ICONS_Y iScreenHeightOffset + 27
|
|
|
|
// HD flicker times
|
|
#define HD_FLICKER_TIME 3000
|
|
#define FLICKER_TIME 50
|
|
|
|
|
|
#define NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS 18
|
|
#define LAPTOP_TITLE_BAR_WIDTH 500
|
|
#define LAPTOP_TITLE_BAR_HEIGHT 24
|
|
|
|
#define LAPTOP_TITLE_BAR_TOP_LEFT_X iScreenWidthOffset + 111
|
|
#define LAPTOP_TITLE_BAR_TOP_LEFT_Y iScreenHeightOffset + 25
|
|
#define LAPTOP_TITLE_BAR_TOP_RIGHT_X iScreenWidthOffset + 610
|
|
#define LAPTOP_TITLE_BAR_TOP_RIGHT_Y LAPTOP_TITLE_BAR_TOP_LEFT_Y
|
|
|
|
#define LAPTOP_TITLE_BAR_ICON_OFFSET_X 5
|
|
#define LAPTOP_TITLE_BAR_ICON_OFFSET_Y 2
|
|
#define LAPTOP_TITLE_BAR_TEXT_OFFSET_X 29
|
|
#define LAPTOP_TITLE_BAR_TEXT_OFFSET_Y 8
|
|
|
|
#define LAPTOP_PROGRAM_ICON_X LAPTOP_TITLE_BAR_TOP_LEFT_X
|
|
#define LAPTOP_PROGRAM_ICON_Y LAPTOP_TITLE_BAR_TOP_LEFT_Y
|
|
#define LAPTOP_PROGRAM_ICON_WIDTH 20
|
|
#define LAPTOP_PROGRAM_ICON_HEIGHT 20
|
|
#define DISPLAY_TIME_FOR_WEB_BOOKMARK_NOTIFY 2000
|
|
|
|
// the wait time for closing of laptop animation/delay
|
|
#define EXIT_LAPTOP_DELAY_TIME 100
|
|
|
|
UINT32 guiTitleBarSurface;
|
|
BOOLEAN gfTitleBarSurfaceAlreadyActive=FALSE;
|
|
extern BOOLEAN fFirstTimeInGameScreen;
|
|
|
|
#define LAPTOP__NEW_FILE_ICON_X iScreenWidthOffset + 83
|
|
#define LAPTOP__NEW_FILE_ICON_Y iScreenHeightOffset + 412
|
|
|
|
#define LAPTOP__NEW_EMAIL_ICON_X iScreenWidthOffset + 67
|
|
#define LAPTOP__NEW_EMAIL_ICON_Y LAPTOP__NEW_FILE_ICON_Y
|
|
|
|
// WANNE
|
|
INT32 guiCurrentGunFilterMode;
|
|
INT32 guiPrevGunFilterMode;
|
|
|
|
INT32 guiCurrentAmmoFilterMode;
|
|
INT32 guiPrevAmmoFilterMode;
|
|
|
|
INT32 guiCurrentUsedFilterMode;
|
|
INT32 guiPrevUsedFilterMode;
|
|
|
|
INT32 guiCurrentArmourFilterMode;
|
|
INT32 guiPrevArmourFilterMode;
|
|
|
|
INT32 guiCurrentMiscFilterMode;
|
|
INT32 guiPrevMiscFilterMode;
|
|
|
|
BOOLEAN gbMessageDisplayed;
|
|
|
|
|
|
// Mode values
|
|
UINT32 guiCurrentLaptopMode;
|
|
UINT32 guiPreviousLaptopMode;
|
|
UINT32 guiCurrentWWWMode = LAPTOP_MODE_NONE;
|
|
INT32 giCurrentSubPage;
|
|
UINT32 guiCurrentLapTopCursor;
|
|
UINT32 guiPreviousLapTopCursor;
|
|
UINT32 guiCurrentSidePanel; // the current navagation panel on the leftside of the laptop screen
|
|
UINT32 guiPreviousSidePanel;
|
|
|
|
extern UINT32 guiVObjectSize;
|
|
extern UINT32 guiVSurfaceSize;
|
|
|
|
|
|
INT32 iHighLightBookLine=-1;
|
|
BOOLEAN fFastLoadFlag = FALSE;
|
|
BOOLEAN gfSideBarFlag;
|
|
BOOLEAN gfEnterLapTop=TRUE;
|
|
BOOLEAN gfShowBookmarks=FALSE;
|
|
|
|
// in progress of loading a page?
|
|
BOOLEAN fLoadPendingFlag=FALSE;
|
|
BOOLEAN fErrorFlag;
|
|
|
|
// mark buttons dirty?
|
|
BOOLEAN fMarkButtonsDirtyFlag = TRUE;
|
|
|
|
// redraw afer rendering buttons?
|
|
BOOLEAN fReDrawPostButtonRender = FALSE;
|
|
|
|
// intermediate refresh flag
|
|
BOOLEAN fIntermediateReDrawFlag = FALSE;
|
|
|
|
// in laptop right now?
|
|
BOOLEAN fCurrentlyInLaptop = FALSE;
|
|
|
|
// exit due to a message box pop up?..don't really leave LAPTOP
|
|
BOOLEAN fExitDueToMessageBox = FALSE;
|
|
|
|
// have we visited IMP yety?
|
|
BOOLEAN fNotVistedImpYet = TRUE;
|
|
|
|
// exit laptop during a load?
|
|
BOOLEAN fExitDuringLoad = FALSE;
|
|
|
|
// done loading?
|
|
BOOLEAN fDoneLoadPending = FALSE;
|
|
|
|
// re connecting to a web page?
|
|
BOOLEAN fReConnectingFlag = FALSE;
|
|
|
|
// going a subpage of a web page?..faster access time
|
|
BOOLEAN fConnectingToSubPage = FALSE;
|
|
|
|
// is this our first time in laptop?
|
|
BOOLEAN fFirstTimeInLaptop = TRUE;
|
|
|
|
// redraw the book mark info panel .. for blitting on top of animations
|
|
BOOLEAN fReDrawBookMarkInfo = FALSE;
|
|
|
|
// show the 2 second info about bookmarks being accessed by clicking on web
|
|
BOOLEAN fShowBookmarkInfo = FALSE;
|
|
|
|
// show start button for ATM panel?
|
|
extern BOOLEAN fShowAtmPanelStartButton;
|
|
|
|
|
|
//TEMP! Disables the loadpending delay when switching b/n www pages
|
|
BOOLEAN gfTemporaryDisablingOfLoadPendingFlag=FALSE;
|
|
|
|
|
|
//GLOBAL FOR WHICH SCREEN TO EXIT TO FOR LAPTOP
|
|
UINT32 guiExitScreen = MAP_SCREEN;
|
|
|
|
MOUSE_REGION gLaptopRegion;
|
|
// Laptop screen graphic handle
|
|
UINT32 guiLAPTOP;
|
|
BOOLEAN fNewWWWDisplay=TRUE;
|
|
|
|
static BOOLEAN fNewWWW=TRUE;
|
|
|
|
//Used to store the site to go to after the 'rain delay' message
|
|
extern UINT32 guiRainLoop;
|
|
|
|
|
|
// WANNE 2
|
|
INT32 giRainDelayInternetSite=-1;
|
|
|
|
|
|
|
|
// have we visitied this site already?
|
|
//BOOLEAN fVisitedBookmarkAlready[20];
|
|
|
|
|
|
// the laptop icons
|
|
UINT32 guiFILESICON;
|
|
UINT32 guiFINANCIALICON;
|
|
UINT32 guiHISTORYICON;
|
|
UINT32 guiMAILICON;
|
|
UINT32 guiPERSICON;
|
|
UINT32 guiWWWICON;
|
|
UINT32 guiBOOKTOP;
|
|
UINT32 guiBOOKHIGH;
|
|
UINT32 guiBOOKMID;
|
|
UINT32 guiBOOKBOT;
|
|
UINT32 guiBOOKMARK;
|
|
UINT32 guiGRAPHWINDOW;
|
|
UINT32 guiGRAPHBAR;
|
|
UINT32 guiLaptopBACKGROUND;
|
|
UINT32 guiDOWNLOADTOP;
|
|
UINT32 guiDOWNLOADMID;
|
|
UINT32 guiDOWNLOADBOT;
|
|
UINT32 guiTITLEBARLAPTOP;
|
|
UINT32 guiLIGHTS;
|
|
UINT32 guiTITLEBARICONS;
|
|
UINT32 guiDESKTOP;
|
|
|
|
// email notification
|
|
UINT32 guiUNREAD;
|
|
UINT32 guiNEWMAIL;
|
|
|
|
//laptop button
|
|
UINT32 guiLAPTOPBUTTON;
|
|
// the sidepanel handle
|
|
UINT32 guiLAPTOPSIDEPANEL;
|
|
|
|
//BOOLEAN gfNewGameLaptop = TRUE;
|
|
|
|
// enter new laptop mode due to sliding bars
|
|
BOOLEAN fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
|
|
|
|
// laptop pop up messages index value
|
|
INT32 iLaptopMessageBox = -1;
|
|
|
|
// whether or not we are initing the slide in title bar
|
|
BOOLEAN fInitTitle = TRUE;
|
|
|
|
// tab handled
|
|
BOOLEAN fTabHandled = FALSE;
|
|
|
|
// are we maxing or mining?
|
|
BOOLEAN fForward = TRUE;
|
|
|
|
// BUTTON IMAGES
|
|
INT32 giLapTopButton[MAX_BUTTON_COUNT];
|
|
INT32 giLapTopButtonImage[MAX_BUTTON_COUNT];
|
|
INT32 giErrorButton[1];
|
|
INT32 giErrorButtonImage[1];
|
|
|
|
INT32 gLaptopButton[ 7 ];
|
|
INT32 gLaptopButtonImage[ 7 ];
|
|
|
|
// minimize button
|
|
INT32 gLaptopMinButton[ 1 ];
|
|
INT32 gLaptopMinButtonImage[ 1 ];
|
|
|
|
|
|
|
|
INT32 gLaptopProgramStates[ LAPTOP_PROGRAM_HISTORY + 1 ];
|
|
|
|
// process of mazimizing
|
|
BOOLEAN fMaximizingProgram = FALSE;
|
|
|
|
// program we are maximizing
|
|
INT8 bProgramBeingMaximized = -1;
|
|
|
|
// are we minimizing
|
|
BOOLEAN fMinizingProgram = FALSE;
|
|
|
|
|
|
// process openned queue
|
|
INT32 gLaptopProgramQueueList[ 6 ];
|
|
|
|
|
|
|
|
// state of createion of minimize button
|
|
BOOLEAN fCreateMinimizeButton = FALSE;
|
|
|
|
BOOLEAN fExitingLaptopFlag = FALSE;
|
|
|
|
// HD and power lights on
|
|
BOOLEAN fPowerLightOn = TRUE;
|
|
BOOLEAN fHardDriveLightOn = FALSE;
|
|
|
|
// HD flicker
|
|
BOOLEAN fFlickerHD = FALSE;
|
|
|
|
// the screens limiting rect
|
|
SGPRect LaptopScreenRect={ LAPTOP_UL_X,LAPTOP_UL_Y - 5,LAPTOP_SCREEN_LR_X + 2,LAPTOP_SCREEN_LR_Y + 5 + 19};
|
|
|
|
|
|
// the sub pages vistsed or not status within the web browser
|
|
BOOLEAN gfWWWaitSubSitesVisitedFlags[LAPTOP_MODE_SIRTECH - LAPTOP_MODE_WWW ];
|
|
|
|
//INT32 iBookMarkList[MAX_BOOKMARKS];
|
|
|
|
// mouse regions
|
|
MOUSE_REGION gEmailRegion;
|
|
MOUSE_REGION gWWWRegion;
|
|
MOUSE_REGION gFinancialRegion;
|
|
MOUSE_REGION gPersonnelRegion;
|
|
MOUSE_REGION gHistoryRegion;
|
|
MOUSE_REGION gFilesRegion;
|
|
MOUSE_REGION gLapTopScreenRegion;
|
|
MOUSE_REGION gBookmarkMouseRegions[MAX_BOOKMARKS];
|
|
MOUSE_REGION pScreenMask;
|
|
MOUSE_REGION gLapTopProgramMinIcon;
|
|
MOUSE_REGION gNewMailIconRegion;
|
|
MOUSE_REGION gNewFileIconRegion;
|
|
|
|
// highlighted mouse region
|
|
INT32 giHighLightRegion=NO_REGION;
|
|
|
|
|
|
// highlighted regions
|
|
INT32 giCurrentRegion=NO_REGION;
|
|
INT32 giOldRegion=NO_REGION;
|
|
|
|
|
|
//used for global variables that need to be saved
|
|
LaptopSaveInfoStruct LaptopSaveInfo;
|
|
|
|
|
|
// function calls
|
|
UINT32 RenderLaptopPanel();
|
|
void RenderLapTopImage();
|
|
void GetLaptopKeyboardInput();
|
|
UINT32 ExitLaptopMode(UINT32 uiMode);
|
|
|
|
UINT32 DrawLapTopText();
|
|
void BtnOnCallback(GUI_BUTTON *btn,INT32 reason);
|
|
UINT32 CreateLaptopButtons();
|
|
void DeleteLapTopButtons();
|
|
BOOLEAN DeleteLapTopMouseRegions();
|
|
BOOLEAN CreateLapTopMouseRegions();
|
|
BOOLEAN fReDrawScreenFlag=FALSE;
|
|
BOOLEAN fPausedReDrawScreenFlag=FALSE; //used in the handler functions to redraw the screen, after the current frame
|
|
void HandleLapTopScreenMouseUi();
|
|
void DrawHighLightRegionBox();
|
|
void HandleLapTopCursorUpDate();
|
|
void PrintBalance( void );
|
|
|
|
|
|
// callbacks
|
|
void FinancialRegionButtonCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void PersonnelRegionButtonCallback(GUI_BUTTON *btn,INT32 reason );
|
|
void WWWRegionButtonCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void EmailRegionButtonCallback(GUI_BUTTON *btn,INT32 reason );
|
|
void FilesRegionButtonCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void HistoryRegionButtonCallback(GUI_BUTTON *btn,INT32 reason);
|
|
void LaptopProgramIconMinimizeCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
|
|
|
|
void WWWRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void EmailRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void RestoreOldRegion(INT32 iOldRegion);
|
|
void HighLightRegion(INT32 iCurrentRegion);
|
|
void FinancialRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void HistoryRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void FilesRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void PersonnelRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void ScreenRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
|
|
// minimize callback
|
|
void LaptopMinimizeProgramButtonCallback(GUI_BUTTON *btn,INT32 reason);
|
|
|
|
|
|
void NewFileIconCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
|
|
|
|
void DisplayBookMarks();
|
|
void InitBookMarkList();
|
|
BOOLEAN LoadBookmark();
|
|
void DeleteBookmark();
|
|
void ScrollDisplayText(INT32 iY);
|
|
void BookmarkCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void CreateBookMarkMouseRegions();
|
|
void BookmarkMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason );
|
|
void DeleteBookmarkRegions();
|
|
void DeleteLoadPending( void );
|
|
BOOLEAN LoadLoadPending( void );
|
|
BOOLEAN DisplayLoadPending( void );
|
|
void DisplayErrorBox( void );
|
|
void CreateDestroyErrorButton( void );
|
|
void DrawTextOnErrorButton();
|
|
BOOLEAN LeaveLapTopScreen( );
|
|
void HandleAnimatedButtons( void );
|
|
void AnimateButton( UINT32 uiIconID, UINT16 usX, UINT16 usY );
|
|
void CreateDestoryBookMarkRegions( void );
|
|
void EnterLaptopInitLaptopPages();
|
|
void CheckMarkButtonsDirtyFlag( void );
|
|
void PostButtonRendering( void );
|
|
void ShouldNewMailBeDisplayed( void );
|
|
void DisplayPlayersBalanceToDate( void );
|
|
void CheckIfNewWWWW( void );
|
|
void HandleLapTopESCKey( void );
|
|
BOOLEAN InitTitleBarMaximizeGraphics( UINT32 uiBackgroundGraphic, STR16 pTitle, UINT32 uiIconGraphic, UINT16 usIconGraphicIndex );
|
|
void RemoveTitleBarMaximizeGraphics();
|
|
BOOLEAN DisplayTitleBarMaximizeGraphic(BOOLEAN fForward, BOOLEAN fInit, UINT16 usTopLeftX, UINT16 usTopLeftY, UINT16 usTopRightX );
|
|
void HandleSlidingTitleBar( void );
|
|
void ShowLights( void );
|
|
void FlickerHDLight( void );
|
|
BOOLEAN ExitLaptopDone( void );
|
|
void CreateDestroyMinimizeButtonForCurrentMode( void );
|
|
void CreateMinimizeButtonForCurrentMode( void );
|
|
void DestroyMinimizeButtonForCurrentMode( void );
|
|
void InitLaptopOpenQueue( void );
|
|
void UpdateListToReflectNewProgramOpened( INT32 iOpenedProgram );
|
|
INT32 FindLastProgramStillOpen( void );
|
|
void SetCurrentToLastProgramOpened( void );
|
|
BOOLEAN HandleExit( void );
|
|
void DeleteDesktopBackground( void );
|
|
BOOLEAN LoadDesktopBackground( void );
|
|
BOOLEAN DrawDeskTopBackground( void );
|
|
void PrintDate( void );
|
|
void DisplayTaskBarIcons();
|
|
void PrintNumberOnTeam( void );
|
|
void HandleDefaultWebpageForLaptop( void );
|
|
void CreateMinimizeRegionsForLaptopProgramIcons( void );
|
|
void DestroyMinimizeRegionsForLaptopProgramIcons( void );
|
|
void CreateDestroyMouseRegionForNewMailIcon( void );
|
|
void NewEmailIconCallback( MOUSE_REGION * pRegion, INT32 iReason );
|
|
void HandleWWWSubSites( void );
|
|
void UpdateStatusOfDisplayingBookMarks( void );
|
|
void InitalizeSubSitesList( void );
|
|
void SetSubSiteAsVisted( void );
|
|
void HandleAltTabKeyInLaptop( void );
|
|
void HandleShiftAltTabKeyInLaptop( void );
|
|
|
|
// display bookmark notify
|
|
void DisplayWebBookMarkNotify( void );
|
|
|
|
// handle timer for bookmark notify
|
|
void HandleWebBookMarkNotifyTimer( void );
|
|
|
|
void CreateBookMarkHelpText( MOUSE_REGION *pRegion, UINT32 uiBookMarkID );
|
|
|
|
void CreateFileAndNewEmailIconFastHelpText( UINT32 uiHelpTextID, BOOLEAN fClearHelpText );
|
|
void CreateLaptopButtonHelpText( INT32 iButtonIndex, UINT32 uiButtonHelpTextID );
|
|
//ppp
|
|
|
|
//Used to determine delay if its raining
|
|
BOOLEAN IsItRaining();
|
|
INT32 WWaitDelayIncreasedIfRaining( INT32 iLoadTime );
|
|
void InternetRainDelayMessageBoxCallBack( UINT8 bExitValue );
|
|
|
|
extern void ClearHistoryList( void );
|
|
|
|
|
|
//TEMP CHEAT
|
|
#ifdef JA2TESTVERSION
|
|
extern void CheatToGetAll5Merc();
|
|
#endif
|
|
#if defined ( JA2TESTVERSION )
|
|
extern void DemoHiringOfMercs( );
|
|
#endif
|
|
|
|
|
|
|
|
void SetLaptopExitScreen( UINT32 uiExitScreen )
|
|
{
|
|
guiExitScreen = uiExitScreen;
|
|
}
|
|
|
|
void SetLaptopNewGameFlag( )
|
|
{
|
|
LaptopSaveInfo.gfNewGameLaptop = TRUE;
|
|
}
|
|
|
|
|
|
void HandleLapTopCursorUpDate()
|
|
{
|
|
if(guiPreviousLapTopCursor==guiCurrentLapTopCursor)
|
|
return;
|
|
switch(guiCurrentLapTopCursor)
|
|
{
|
|
case LAPTOP_PANEL_CURSOR:
|
|
MSYS_SetCurrentCursor(CURSOR_NORMAL);
|
|
break;
|
|
case LAPTOP_SCREEN_CURSOR:
|
|
MSYS_SetCurrentCursor(CURSOR_LAPTOP_SCREEN);
|
|
break;
|
|
case LAPTOP_WWW_CURSOR:
|
|
MSYS_SetCurrentCursor(CURSOR_WWW);
|
|
break;
|
|
}
|
|
guiPreviousLapTopCursor=guiCurrentLapTopCursor;
|
|
|
|
}
|
|
void
|
|
GetLaptopKeyboardInput()
|
|
{
|
|
InputAtom InputEvent;
|
|
POINT MousePos;
|
|
|
|
GetCursorPos(&MousePos);
|
|
|
|
fTabHandled = FALSE;
|
|
|
|
while (DequeueEvent(&InputEvent) == TRUE)
|
|
{
|
|
// HOOK INTO MOUSE HOOKS
|
|
switch(InputEvent.usEvent)
|
|
{
|
|
case LEFT_BUTTON_DOWN:
|
|
MouseSystemHook(LEFT_BUTTON_DOWN, (INT16)MousePos.x, (INT16)MousePos.y,_LeftButtonDown, _RightButtonDown);
|
|
break;
|
|
case LEFT_BUTTON_UP:
|
|
MouseSystemHook(LEFT_BUTTON_UP, (INT16)MousePos.x, (INT16)MousePos.y ,_LeftButtonDown, _RightButtonDown);
|
|
break;
|
|
case RIGHT_BUTTON_DOWN:
|
|
MouseSystemHook(RIGHT_BUTTON_DOWN, (INT16)MousePos.x, (INT16)MousePos.y,_LeftButtonDown, _RightButtonDown);
|
|
break;
|
|
case RIGHT_BUTTON_UP:
|
|
MouseSystemHook(RIGHT_BUTTON_UP, (INT16)MousePos.x, (INT16)MousePos.y,_LeftButtonDown, _RightButtonDown);
|
|
break;
|
|
case RIGHT_BUTTON_REPEAT:
|
|
MouseSystemHook(RIGHT_BUTTON_REPEAT, (INT16)MousePos.x, (INT16)MousePos.y,_LeftButtonDown, _RightButtonDown);
|
|
break;
|
|
case LEFT_BUTTON_REPEAT:
|
|
MouseSystemHook(LEFT_BUTTON_REPEAT, (INT16)MousePos.x, (INT16)MousePos.y,_LeftButtonDown, _RightButtonDown);
|
|
break;
|
|
}
|
|
|
|
HandleKeyBoardShortCutsForLapTop( InputEvent.usEvent, InputEvent.usParam, InputEvent.usKeyState );
|
|
|
|
}
|
|
}
|
|
|
|
//This is called only once at game initialization.
|
|
UINT32 LaptopScreenInit()
|
|
{
|
|
//Memset the whole structure, to make sure of no 'JUNK'
|
|
memset( &LaptopSaveInfo, 0, sizeof( LaptopSaveInfoStruct ) );
|
|
|
|
LaptopSaveInfo.gfNewGameLaptop = TRUE;
|
|
|
|
InitializeNumDaysMercArrive();
|
|
|
|
//reset the id of the last hired merc
|
|
LaptopSaveInfo.sLastHiredMerc.iIdOfMerc = -1;
|
|
|
|
//reset the flag that enables the 'just hired merc' popup
|
|
LaptopSaveInfo.sLastHiredMerc.fHaveDisplayedPopUpInLaptop = FALSE;
|
|
|
|
//Initialize all vars
|
|
guiCurrentLaptopMode = LAPTOP_MODE_EMAIL;
|
|
guiPreviousLaptopMode = LAPTOP_MODE_NONE;
|
|
guiCurrentWWWMode = LAPTOP_MODE_NONE;
|
|
guiCurrentSidePanel = FIRST_SIDE_PANEL;
|
|
guiPreviousSidePanel = FIRST_SIDE_PANEL;
|
|
|
|
|
|
gfSideBarFlag=FALSE;
|
|
gfShowBookmarks=FALSE;
|
|
InitBookMarkList();
|
|
GameInitAIM();
|
|
GameInitAIMMembers();
|
|
GameInitAimFacialIndex();
|
|
GameInitAimSort();
|
|
GameInitAimArchives();
|
|
GameInitAimPolicies();
|
|
GameInitAimLinks();
|
|
GameInitAimHistory();
|
|
GameInitMercs();
|
|
GameInitBobbyR();
|
|
GameInitBobbyRAmmo();
|
|
GameInitBobbyRArmour();
|
|
GameInitBobbyRGuns();
|
|
GameInitBobbyRMailOrder();
|
|
GameInitBobbyRMisc();
|
|
GameInitBobbyRUsed();
|
|
GameInitEmail();
|
|
GameInitCharProfile();
|
|
GameInitFlorist();
|
|
GameInitInsurance();
|
|
GameInitInsuranceContract();
|
|
GameInitFuneral();
|
|
GameInitSirTech();
|
|
GameInitFiles();
|
|
GameInitPersonnel();
|
|
|
|
// init program states
|
|
memset( &gLaptopProgramStates, LAPTOP_PROGRAM_MINIMIZED, sizeof( gLaptopProgramStates ) );
|
|
|
|
gfAtLeastOneMercWasHired = FALSE;
|
|
|
|
//No longer inits the laptop screens, now InitLaptopAndLaptopScreens() does
|
|
|
|
return( 1 );
|
|
}
|
|
|
|
|
|
BOOLEAN InitLaptopAndLaptopScreens()
|
|
{
|
|
|
|
GameInitFinances();
|
|
GameInitHistory();
|
|
|
|
//Reset the flag so we can create a new IMP character
|
|
LaptopSaveInfo.fIMPCompletedFlag = FALSE;
|
|
|
|
//Reset the flag so that BOBBYR's isnt available at the begining of the game
|
|
LaptopSaveInfo.fBobbyRSiteCanBeAccessed = FALSE;
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
|
|
UINT32
|
|
DrawLapTopIcons()
|
|
{
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
UINT32
|
|
DrawLapTopText()
|
|
{
|
|
|
|
// show balance
|
|
DisplayPlayersBalanceToDate( );
|
|
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
//This is only called once at game shutdown.
|
|
UINT32 LaptopScreenShutdown()
|
|
{
|
|
InsuranceContractEndGameShutDown();
|
|
BobbyRayMailOrderEndGameShutDown();
|
|
ShutDownEmailList();
|
|
|
|
ClearHistoryList( );
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
INT32 EnterLaptop()
|
|
{
|
|
//Create, load, initialize data -- just entered the laptop.
|
|
|
|
VOBJECT_DESC VObjectDesc;
|
|
INT32 iCounter=0;
|
|
|
|
static BOOLEAN fEnteredFromGameStartup = TRUE;
|
|
// we are re entering due to message box, leave NOW!
|
|
if( fExitDueToMessageBox == TRUE )
|
|
{
|
|
|
|
return ( TRUE );
|
|
}
|
|
|
|
//if the radar map mouse region is still active, disable it.
|
|
if( gRadarRegion.uiFlags & MSYS_REGION_ENABLED )
|
|
{
|
|
MSYS_DisableRegion( &gRadarRegion );
|
|
/*
|
|
#ifdef JA2BETAVERSION
|
|
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, L"Mapscreen's radar region is still active, please tell Dave how you entered Laptop.", LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL );
|
|
#endif
|
|
*/
|
|
}
|
|
|
|
gfDontStartTransitionFromLaptop = FALSE;
|
|
|
|
//Since we are coming in from MapScreen, uncheck the flag
|
|
guiTacticalInterfaceFlags &= ~INTERFACE_MAPSCREEN;
|
|
|
|
// ATE: Disable messages....
|
|
DisableScrollMessages( );
|
|
|
|
// Stop any person from saying anything
|
|
StopAnyCurrentlyTalkingSpeech( );
|
|
|
|
// Don't play music....
|
|
SetMusicMode( MUSIC_LAPTOP );
|
|
|
|
// Stop ambients...
|
|
StopAmbients( );
|
|
|
|
// WANNE 2: disabled rain sound when laptop is displayed
|
|
////if its raining, start the rain showers
|
|
//if( IsItRaining() )
|
|
//{
|
|
// //Enable the rain delay warning
|
|
// giRainDelayInternetSite = -1;
|
|
|
|
// //lower the volume
|
|
// guiRainLoop = PlayJA2Ambient( RAIN_1, LOWVOLUME, 0 );
|
|
//}
|
|
|
|
|
|
//open the laptop library
|
|
// OpenLibrary( LIBRARY_LAPTOP );
|
|
|
|
//pause the game because we dont want time to advance in the laptop
|
|
PauseGame();
|
|
|
|
// set the fact we are currently in laptop, for rendering purposes
|
|
fCurrentlyInLaptop = TRUE;
|
|
|
|
|
|
|
|
// clear guiSAVEBUFFER
|
|
//ColorFillVideoSurfaceArea(guiSAVEBUFFER, 0, 0, 640, 480, Get16BPPColor(FROMRGB(0, 0, 0)) );
|
|
// disable characters panel buttons
|
|
|
|
// reset redraw flag and redraw new mail
|
|
fReDrawScreenFlag = FALSE;
|
|
fReDrawNewMailFlag = TRUE;
|
|
|
|
// setup basic cursors
|
|
guiCurrentLapTopCursor=LAPTOP_PANEL_CURSOR;
|
|
guiPreviousLapTopCursor=LAPTOP_NO_CURSOR;
|
|
|
|
// sub page
|
|
giCurrentSubPage = 0;
|
|
giCurrentRegion=EMAIL_REGION;
|
|
|
|
// load the laptop graphic and add it
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\laptop3.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiLAPTOP));
|
|
|
|
// background for panel
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\taskbar.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiLaptopBACKGROUND));
|
|
|
|
|
|
// background for panel
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\programtitlebar.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiTITLEBARLAPTOP));
|
|
|
|
// lights for power and HD
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\lights.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiLIGHTS));
|
|
|
|
// icons for title bars
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\ICONS.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiTITLEBARICONS));
|
|
|
|
// load, blt and delete graphics
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP( "LAPTOP\\NewMailWarning.sti", VObjectDesc.ImageFile );
|
|
CHECKF( AddVideoObject( &VObjectDesc, &guiEmailWarning ) );
|
|
// load background
|
|
LoadDesktopBackground( );
|
|
|
|
|
|
guiCurrentLaptopMode = LAPTOP_MODE_NONE;
|
|
//MSYS_SetCurrentCursor(CURSOR_NORMAL);
|
|
|
|
guiCurrentLaptopMode = LAPTOP_MODE_NONE;
|
|
guiPreviousLaptopMode = LAPTOP_MODE_NONE;
|
|
guiCurrentWWWMode = LAPTOP_MODE_NONE;
|
|
guiCurrentSidePanel = FIRST_SIDE_PANEL;
|
|
guiPreviousSidePanel = FIRST_SIDE_PANEL;
|
|
gfSideBarFlag=FALSE;
|
|
CreateLapTopMouseRegions();
|
|
RenderLapTopImage();
|
|
HighLightRegion(giCurrentRegion);
|
|
//AddEmailMessage(L"Entered LapTop",L"Entered", 0, 0);
|
|
//for(iCounter=0; iCounter <10; iCounter++)
|
|
//{
|
|
//AddEmail(3,5,0,0);
|
|
//}
|
|
// the laptop mouse region
|
|
|
|
|
|
// reset bookmarks flags
|
|
fFirstTimeInLaptop = TRUE;
|
|
|
|
// reset all bookmark visits
|
|
memset( &LaptopSaveInfo.fVisitedBookmarkAlready, 0, sizeof( LaptopSaveInfo.fVisitedBookmarkAlready ) );
|
|
|
|
// init program states
|
|
memset( &gLaptopProgramStates, LAPTOP_PROGRAM_MINIMIZED, sizeof( gLaptopProgramStates ) );
|
|
|
|
// turn the power on
|
|
fPowerLightOn = TRUE;
|
|
|
|
// we are not exiting laptop right now, we just got here
|
|
fExitingLaptopFlag = FALSE;
|
|
|
|
// reset program we are maximizing
|
|
bProgramBeingMaximized = -1;
|
|
|
|
// reset fact we are maximizing/ mining
|
|
fMaximizingProgram = FALSE;
|
|
fMinizingProgram = FALSE;
|
|
|
|
|
|
// initialize open queue
|
|
InitLaptopOpenQueue( );
|
|
|
|
|
|
gfShowBookmarks=FALSE;
|
|
LoadBookmark( );
|
|
SetBookMark(AIM_BOOKMARK);
|
|
LoadLoadPending( );
|
|
|
|
DrawDeskTopBackground( );
|
|
|
|
// create region for new mail icon
|
|
CreateDestroyMouseRegionForNewMailIcon( );
|
|
|
|
//DEF: Added to Init things in various laptop pages
|
|
EnterLaptopInitLaptopPages();
|
|
InitalizeSubSitesList( );
|
|
|
|
fShowAtmPanelStartButton = TRUE;
|
|
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
void ExitLaptop()
|
|
{
|
|
|
|
// exit is called due to message box, leave
|
|
if( fExitDueToMessageBox )
|
|
{
|
|
fExitDueToMessageBox = FALSE;
|
|
return;
|
|
}
|
|
|
|
if ( DidGameJustStart() )
|
|
{
|
|
SetMusicMode( MUSIC_LAPTOP );
|
|
}
|
|
else
|
|
{
|
|
// Restore to old stuff...
|
|
SetMusicMode( MUSIC_RESTORE);
|
|
}
|
|
|
|
// Start ambients...
|
|
BuildDayAmbientSounds( );
|
|
|
|
// WANNE 2: disabled rain sound when laptop is displayed
|
|
//if its raining, start the rain showers
|
|
//if( IsItRaining() )
|
|
//{
|
|
// //Raise the volume to where it was
|
|
// guiRainLoop = PlayJA2Ambient( RAIN_1, MIDVOLUME, 0 );
|
|
//}
|
|
|
|
// release cursor
|
|
FreeMouseCursor( );
|
|
|
|
// set the fact we are currently not in laptop, for rendering purposes
|
|
fCurrentlyInLaptop = FALSE;
|
|
|
|
|
|
//Deallocate, save data -- leaving laptop.
|
|
SetRenderFlags( RENDER_FLAG_FULL );
|
|
|
|
if( fExitDuringLoad == FALSE )
|
|
{
|
|
ExitLaptopMode(guiCurrentLaptopMode);
|
|
}
|
|
|
|
fExitDuringLoad = FALSE;
|
|
fLoadPendingFlag = FALSE;
|
|
|
|
|
|
DeleteVideoObjectFromIndex(guiLAPTOP);
|
|
DeleteVideoObjectFromIndex(guiLaptopBACKGROUND);
|
|
DeleteVideoObjectFromIndex( guiTITLEBARLAPTOP );
|
|
DeleteVideoObjectFromIndex( guiLIGHTS );
|
|
DeleteVideoObjectFromIndex( guiTITLEBARICONS );
|
|
DeleteVideoObjectFromIndex( guiEmailWarning );
|
|
|
|
// destroy region for new mail icon
|
|
CreateDestroyMouseRegionForNewMailIcon( );
|
|
|
|
// get rid of desktop
|
|
DeleteDesktopBackground( );
|
|
|
|
if(fErrorFlag)
|
|
{
|
|
fErrorFlag=FALSE;
|
|
CreateDestroyErrorButton();
|
|
}
|
|
if(fDeleteMailFlag)
|
|
{
|
|
fDeleteMailFlag=FALSE;
|
|
CreateDestroyDeleteNoticeMailButton();
|
|
}
|
|
if(fNewMailFlag)
|
|
{
|
|
fNewMailFlag=FALSE;
|
|
CreateDestroyNewMailButton();
|
|
}
|
|
|
|
|
|
// get rid of minize button
|
|
CreateDestroyMinimizeButtonForCurrentMode( );
|
|
|
|
|
|
|
|
//MSYS_SetCurrentCursor(CURSOR_NORMAL);
|
|
gfEnterLapTop=TRUE;
|
|
DeleteLapTopButtons();
|
|
DeleteLapTopMouseRegions();
|
|
// restore tactical buttons
|
|
//CreateCurrentTacticalPanelButtons();
|
|
gfShowBookmarks=FALSE;
|
|
CreateDestoryBookMarkRegions( );
|
|
|
|
fNewWWW=TRUE;
|
|
RemoveBookmark(-2);
|
|
DeleteBookmark( );
|
|
//DeleteBookmarkRegions();
|
|
DeleteLoadPending( );
|
|
fReDrawNewMailFlag = FALSE;
|
|
|
|
//Since we are going to MapScreen, check the flag
|
|
guiTacticalInterfaceFlags |= INTERFACE_MAPSCREEN;
|
|
|
|
//close the laptop library
|
|
// CloseLibrary( LIBRARY_LAPTOP );
|
|
//pause the game because we dont want time to advance in the laptop
|
|
UnPauseGame();
|
|
|
|
}
|
|
|
|
void
|
|
RenderLapTopImage()
|
|
{
|
|
HVOBJECT hLapTopHandle;
|
|
|
|
|
|
if( ( fMaximizingProgram == TRUE ) ||( fMinizingProgram == TRUE) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
GetVideoObject(&hLapTopHandle, guiLAPTOP);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopHandle, 0,LAPTOP_X, LAPTOP_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
|
|
GetVideoObject(&hLapTopHandle, guiLaptopBACKGROUND);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopHandle, 1,iScreenWidthOffset + 25, iScreenHeightOffset + 23, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
|
|
MarkButtonsDirty( );
|
|
|
|
}
|
|
void RenderLaptop()
|
|
{
|
|
UINT32 uiTempMode = 0;
|
|
|
|
if( ( fMaximizingProgram == TRUE ) ||( fMinizingProgram == TRUE) )
|
|
{
|
|
gfShowBookmarks = FALSE;
|
|
return;
|
|
}
|
|
|
|
if(fLoadPendingFlag)
|
|
{
|
|
uiTempMode = guiCurrentLaptopMode;
|
|
guiCurrentLaptopMode = guiPreviousLaptopMode;
|
|
}
|
|
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case( LAPTOP_MODE_NONE ):
|
|
DrawDeskTopBackground( );
|
|
break;
|
|
case LAPTOP_MODE_AIM:
|
|
RenderAIM();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS:
|
|
RenderAIMMembers();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_FACIAL_INDEX:
|
|
RenderAimFacialIndex();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_SORTED_FILES:
|
|
RenderAimSort();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_ARCHIVES:
|
|
RenderAimArchives();
|
|
break;
|
|
case LAPTOP_MODE_AIM_POLICIES:
|
|
RenderAimPolicies();
|
|
break;
|
|
case LAPTOP_MODE_AIM_LINKS:
|
|
RenderAimLinks();
|
|
break;
|
|
case LAPTOP_MODE_AIM_HISTORY:
|
|
RenderAimHistory();
|
|
break;
|
|
case LAPTOP_MODE_MERC:
|
|
RenderMercs();
|
|
break;
|
|
case LAPTOP_MODE_MERC_FILES:
|
|
RenderMercsFiles();
|
|
break;
|
|
case LAPTOP_MODE_MERC_ACCOUNT:
|
|
RenderMercsAccount();
|
|
break;
|
|
case LAPTOP_MODE_MERC_NO_ACCOUNT:
|
|
RenderMercsNoAccount();
|
|
break;
|
|
|
|
case LAPTOP_MODE_BOBBY_R:
|
|
RenderBobbyR();
|
|
break;
|
|
|
|
case LAPTOP_MODE_BOBBY_R_GUNS:
|
|
RenderBobbyRGuns();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_AMMO:
|
|
RenderBobbyRAmmo();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_ARMOR:
|
|
RenderBobbyRArmour();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MISC:
|
|
RenderBobbyRMisc();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_USED:
|
|
RenderBobbyRUsed();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MAILORDER:
|
|
RenderBobbyRMailOrder();
|
|
break;
|
|
case LAPTOP_MODE_CHAR_PROFILE:
|
|
RenderCharProfile();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST:
|
|
RenderFlorist();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_FLOWER_GALLERY:
|
|
RenderFloristGallery();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_ORDERFORM:
|
|
RenderFloristOrderForm();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_CARD_GALLERY:
|
|
RenderFloristCards();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE:
|
|
RenderInsurance();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE_INFO:
|
|
RenderInsuranceInfo();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE_CONTRACT:
|
|
RenderInsuranceContract();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE_COMMENTS:
|
|
RenderInsuranceComments();
|
|
break;
|
|
|
|
case LAPTOP_MODE_FUNERAL:
|
|
RenderFuneral();
|
|
break;
|
|
case LAPTOP_MODE_SIRTECH:
|
|
RenderSirTech();
|
|
break;
|
|
case LAPTOP_MODE_FINANCES:
|
|
RenderFinances();
|
|
break;
|
|
case LAPTOP_MODE_PERSONNEL:
|
|
RenderPersonnel();
|
|
break;
|
|
case LAPTOP_MODE_HISTORY:
|
|
RenderHistory();
|
|
break;
|
|
case LAPTOP_MODE_FILES:
|
|
RenderFiles();
|
|
break;
|
|
case LAPTOP_MODE_EMAIL:
|
|
RenderEmail();
|
|
break;
|
|
case( LAPTOP_MODE_WWW ):
|
|
DrawDeskTopBackground( );
|
|
RenderWWWProgramTitleBar( );
|
|
break;
|
|
case( LAPTOP_MODE_BROKEN_LINK ):
|
|
RenderBrokenLink();
|
|
break;
|
|
|
|
case LAPTOP_MODE_BOBBYR_SHIPMENTS:
|
|
RenderBobbyRShipments();
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if( guiCurrentLaptopMode >= LAPTOP_MODE_WWW )
|
|
{
|
|
// render program bar for www program
|
|
RenderWWWProgramTitleBar( );
|
|
}
|
|
|
|
|
|
|
|
if(fLoadPendingFlag)
|
|
{
|
|
guiCurrentLaptopMode = uiTempMode;
|
|
return;
|
|
}
|
|
|
|
DisplayProgramBoundingBox( FALSE );
|
|
|
|
// mark the buttons dirty at this point
|
|
MarkButtonsDirty( );
|
|
}
|
|
|
|
void EnterNewLaptopMode()
|
|
{
|
|
static BOOLEAN fOldLoadFlag=FALSE;
|
|
|
|
|
|
if( fExitingLaptopFlag )
|
|
{
|
|
return;
|
|
}
|
|
// cause flicker, as we are going to a new program/WEB page
|
|
fFlickerHD = TRUE;
|
|
|
|
// handle maximizing of programs
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case ( LAPTOP_MODE_EMAIL ):
|
|
if( gLaptopProgramStates[ LAPTOP_PROGRAM_MAILER ] == LAPTOP_PROGRAM_MINIMIZED )
|
|
{
|
|
// minized, maximized
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
fInitTitle = TRUE;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopTitles[ 0 ], guiTITLEBARICONS, 0 );
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
|
|
}
|
|
fMaximizingProgram = TRUE;
|
|
bProgramBeingMaximized = LAPTOP_PROGRAM_MAILER;
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_MAILER ] = LAPTOP_PROGRAM_OPEN;
|
|
|
|
return;
|
|
}
|
|
break;
|
|
case ( LAPTOP_MODE_FILES ):
|
|
if( gLaptopProgramStates[ LAPTOP_PROGRAM_FILES ] == LAPTOP_PROGRAM_MINIMIZED )
|
|
{
|
|
// minized, maximized
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
fInitTitle = TRUE;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopTitles[ 1 ], guiTITLEBARICONS, 2 );
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
|
|
}
|
|
|
|
// minized, maximized
|
|
fMaximizingProgram = TRUE;
|
|
bProgramBeingMaximized = LAPTOP_PROGRAM_FILES;
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_FILES ] = LAPTOP_PROGRAM_OPEN;
|
|
return;
|
|
}
|
|
break;
|
|
case ( LAPTOP_MODE_PERSONNEL ):
|
|
if( gLaptopProgramStates[ LAPTOP_PROGRAM_PERSONNEL ] == LAPTOP_PROGRAM_MINIMIZED )
|
|
{
|
|
|
|
// minized, maximized
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
fInitTitle = TRUE;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopTitles[ 2 ], guiTITLEBARICONS, 3 );
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
|
|
}
|
|
|
|
// minized, maximized
|
|
fMaximizingProgram = TRUE;
|
|
bProgramBeingMaximized = LAPTOP_PROGRAM_PERSONNEL;
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_PERSONNEL ] = LAPTOP_PROGRAM_OPEN;
|
|
return;
|
|
}
|
|
break;
|
|
case ( LAPTOP_MODE_FINANCES ):
|
|
if( gLaptopProgramStates[ LAPTOP_PROGRAM_FINANCES ] == LAPTOP_PROGRAM_MINIMIZED )
|
|
{
|
|
|
|
// minized, maximized
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
fInitTitle = TRUE;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopTitles[ 3 ], guiTITLEBARICONS, 5 );
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
|
|
|
|
}
|
|
|
|
// minized, maximized
|
|
fMaximizingProgram = TRUE;
|
|
bProgramBeingMaximized = LAPTOP_PROGRAM_FINANCES;
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_FINANCES ] = LAPTOP_PROGRAM_OPEN;
|
|
return;
|
|
}
|
|
break;
|
|
case ( LAPTOP_MODE_HISTORY ):
|
|
if( gLaptopProgramStates[ LAPTOP_PROGRAM_HISTORY ] == LAPTOP_PROGRAM_MINIMIZED )
|
|
{
|
|
// minized, maximized
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
fInitTitle = TRUE;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopTitles[ 4 ], guiTITLEBARICONS, 4 );
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
|
|
|
|
}
|
|
// minized, maximized
|
|
fMaximizingProgram = TRUE;
|
|
bProgramBeingMaximized = LAPTOP_PROGRAM_HISTORY;
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_HISTORY ] = LAPTOP_PROGRAM_OPEN;
|
|
return;
|
|
}
|
|
break;
|
|
case( LAPTOP_MODE_NONE ):
|
|
// do nothing
|
|
break;
|
|
default:
|
|
if( gLaptopProgramStates[ LAPTOP_PROGRAM_WEB_BROWSER ] == LAPTOP_PROGRAM_MINIMIZED )
|
|
{
|
|
// minized, maximized
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
fInitTitle = TRUE;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pWebTitle[ 0 ], guiTITLEBARICONS, 1 );
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
}
|
|
// minized, maximized
|
|
fMaximizingProgram = TRUE;
|
|
bProgramBeingMaximized = LAPTOP_PROGRAM_WEB_BROWSER;
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_WEB_BROWSER ] = LAPTOP_PROGRAM_OPEN;
|
|
return;
|
|
}
|
|
break;
|
|
|
|
}
|
|
|
|
if( ( fMaximizingProgram == TRUE ) ||( fMinizingProgram == TRUE) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if((fOldLoadFlag)&&(!fLoadPendingFlag))
|
|
{
|
|
fOldLoadFlag=FALSE;
|
|
}
|
|
else if((fLoadPendingFlag)&&(!fOldLoadFlag))
|
|
{
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
fOldLoadFlag=TRUE;
|
|
return;
|
|
}
|
|
else if((fOldLoadFlag)&&(fLoadPendingFlag))
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
// do not exit previous mode if coming from sliding bar handler
|
|
if( ( fEnteredNewLapTopDueToHandleSlidingBars == FALSE ) )
|
|
{
|
|
ExitLaptopMode(guiPreviousLaptopMode);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if((guiCurrentWWWMode==LAPTOP_MODE_NONE)&&(guiCurrentLaptopMode >=LAPTOP_MODE_WWW))
|
|
{
|
|
RenderLapTopImage();
|
|
giCurrentRegion=WWW_REGION;
|
|
RestoreOldRegion(giOldRegion);
|
|
guiCurrentLaptopMode =LAPTOP_MODE_WWW;
|
|
HighLightRegion(giCurrentRegion);
|
|
}
|
|
else
|
|
{
|
|
if( guiCurrentLaptopMode > LAPTOP_MODE_WWW)
|
|
{
|
|
if(guiPreviousLaptopMode < LAPTOP_MODE_WWW )
|
|
guiCurrentLaptopMode = guiCurrentWWWMode;
|
|
else
|
|
{
|
|
guiCurrentWWWMode = guiCurrentLaptopMode;
|
|
giCurrentSubPage =0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if( guiCurrentLaptopMode >= LAPTOP_MODE_WWW )
|
|
{
|
|
RenderWWWProgramTitleBar( );
|
|
}
|
|
|
|
|
|
|
|
if( ( guiCurrentLaptopMode >= LAPTOP_MODE_WWW ) &&( guiPreviousLaptopMode >= LAPTOP_MODE_WWW ) )
|
|
{
|
|
gfShowBookmarks = FALSE;
|
|
}
|
|
|
|
|
|
|
|
//Initialize the new mode.
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
|
|
case LAPTOP_MODE_AIM:
|
|
EnterAIM();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS:
|
|
EnterAIMMembers();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_FACIAL_INDEX:
|
|
EnterAimFacialIndex();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_SORTED_FILES:
|
|
EnterAimSort();
|
|
break;
|
|
|
|
case LAPTOP_MODE_AIM_MEMBERS_ARCHIVES:
|
|
EnterAimArchives();
|
|
break;
|
|
case LAPTOP_MODE_AIM_POLICIES:
|
|
EnterAimPolicies();
|
|
break;
|
|
case LAPTOP_MODE_AIM_LINKS:
|
|
EnterAimLinks();
|
|
break;
|
|
case LAPTOP_MODE_AIM_HISTORY:
|
|
EnterAimHistory();
|
|
break;
|
|
|
|
case LAPTOP_MODE_MERC:
|
|
EnterMercs();
|
|
break;
|
|
case LAPTOP_MODE_MERC_FILES:
|
|
EnterMercsFiles();
|
|
break;
|
|
case LAPTOP_MODE_MERC_ACCOUNT:
|
|
EnterMercsAccount();
|
|
break;
|
|
case LAPTOP_MODE_MERC_NO_ACCOUNT:
|
|
EnterMercsNoAccount();
|
|
break;
|
|
|
|
case LAPTOP_MODE_BOBBY_R:
|
|
EnterBobbyR();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_GUNS:
|
|
EnterBobbyRGuns();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_AMMO:
|
|
EnterBobbyRAmmo();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_ARMOR:
|
|
EnterBobbyRArmour();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MISC:
|
|
EnterBobbyRMisc();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_USED:
|
|
EnterBobbyRUsed();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MAILORDER:
|
|
EnterBobbyRMailOrder();
|
|
break;
|
|
case LAPTOP_MODE_CHAR_PROFILE:
|
|
EnterCharProfile();
|
|
break;
|
|
|
|
case LAPTOP_MODE_FLORIST:
|
|
EnterFlorist();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_FLOWER_GALLERY:
|
|
EnterFloristGallery();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_ORDERFORM:
|
|
EnterFloristOrderForm();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_CARD_GALLERY:
|
|
EnterFloristCards();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE:
|
|
EnterInsurance();
|
|
break;
|
|
case LAPTOP_MODE_INSURANCE_INFO:
|
|
EnterInsuranceInfo();
|
|
break;
|
|
case LAPTOP_MODE_INSURANCE_CONTRACT:
|
|
EnterInsuranceContract();
|
|
break;
|
|
case LAPTOP_MODE_INSURANCE_COMMENTS:
|
|
EnterInsuranceComments();
|
|
break;
|
|
|
|
case LAPTOP_MODE_FUNERAL:
|
|
EnterFuneral();
|
|
break;
|
|
case LAPTOP_MODE_SIRTECH:
|
|
EnterSirTech();
|
|
break;
|
|
case LAPTOP_MODE_FINANCES:
|
|
EnterFinances();
|
|
break;
|
|
case LAPTOP_MODE_PERSONNEL:
|
|
EnterPersonnel();
|
|
break;
|
|
case LAPTOP_MODE_HISTORY:
|
|
EnterHistory();
|
|
break;
|
|
case LAPTOP_MODE_FILES:
|
|
EnterFiles();
|
|
break;
|
|
case LAPTOP_MODE_EMAIL:
|
|
EnterEmail();
|
|
break;
|
|
case LAPTOP_MODE_BROKEN_LINK:
|
|
EnterBrokenLink();
|
|
break;
|
|
case LAPTOP_MODE_BOBBYR_SHIPMENTS:
|
|
EnterBobbyRShipments();
|
|
break;
|
|
|
|
}
|
|
|
|
// first time using webbrowser in this laptop session
|
|
if( ( fFirstTimeInLaptop == TRUE ) && ( guiCurrentLaptopMode >=LAPTOP_MODE_WWW ) )
|
|
{
|
|
// show bookmarks
|
|
gfShowBookmarks = TRUE;
|
|
|
|
// reset flag
|
|
fFirstTimeInLaptop = FALSE;
|
|
}
|
|
|
|
if( ( !fLoadPendingFlag) )
|
|
{
|
|
CreateDestroyMinimizeButtonForCurrentMode( );
|
|
guiPreviousLaptopMode = guiCurrentLaptopMode;
|
|
SetSubSiteAsVisted( );
|
|
}
|
|
|
|
DisplayProgramBoundingBox( TRUE );
|
|
|
|
|
|
// check to see if we need to go to there default web page of not
|
|
//HandleDefaultWebpageForLaptop( );
|
|
}
|
|
|
|
void HandleLapTopHandles()
|
|
{
|
|
if(fLoadPendingFlag)
|
|
return;
|
|
|
|
if( ( fMaximizingProgram == TRUE ) || ( fMinizingProgram == TRUE ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
|
|
case LAPTOP_MODE_AIM:
|
|
|
|
HandleAIM();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS:
|
|
HandleAIMMembers();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_FACIAL_INDEX:
|
|
HandleAimFacialIndex();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_SORTED_FILES:
|
|
HandleAimSort();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_ARCHIVES:
|
|
HandleAimArchives();
|
|
break;
|
|
case LAPTOP_MODE_AIM_POLICIES:
|
|
HandleAimPolicies();
|
|
break;
|
|
case LAPTOP_MODE_AIM_LINKS:
|
|
HandleAimLinks();
|
|
break;
|
|
case LAPTOP_MODE_AIM_HISTORY:
|
|
HandleAimHistory();
|
|
break;
|
|
|
|
case LAPTOP_MODE_MERC:
|
|
HandleMercs();
|
|
break;
|
|
case LAPTOP_MODE_MERC_FILES:
|
|
HandleMercsFiles();
|
|
break;
|
|
case LAPTOP_MODE_MERC_ACCOUNT:
|
|
HandleMercsAccount();
|
|
break;
|
|
case LAPTOP_MODE_MERC_NO_ACCOUNT:
|
|
HandleMercsNoAccount();
|
|
break;
|
|
|
|
|
|
case LAPTOP_MODE_BOBBY_R:
|
|
HandleBobbyR();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_GUNS:
|
|
HandleBobbyRGuns();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_AMMO:
|
|
HandleBobbyRAmmo();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_ARMOR:
|
|
HandleBobbyRArmour();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MISC:
|
|
HandleBobbyRMisc();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_USED:
|
|
HandleBobbyRUsed();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MAILORDER:
|
|
HandleBobbyRMailOrder();
|
|
break;
|
|
|
|
|
|
case LAPTOP_MODE_CHAR_PROFILE:
|
|
HandleCharProfile();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST:
|
|
HandleFlorist();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_FLOWER_GALLERY:
|
|
HandleFloristGallery();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_ORDERFORM:
|
|
HandleFloristOrderForm();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_CARD_GALLERY:
|
|
HandleFloristCards();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE:
|
|
HandleInsurance();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE_INFO:
|
|
HandleInsuranceInfo();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE_CONTRACT:
|
|
HandleInsuranceContract();
|
|
break;
|
|
case LAPTOP_MODE_INSURANCE_COMMENTS:
|
|
HandleInsuranceComments();
|
|
break;
|
|
|
|
case LAPTOP_MODE_FUNERAL:
|
|
HandleFuneral();
|
|
break;
|
|
case LAPTOP_MODE_SIRTECH:
|
|
HandleSirTech();
|
|
break;
|
|
case LAPTOP_MODE_FINANCES:
|
|
HandleFinances();
|
|
break;
|
|
case LAPTOP_MODE_PERSONNEL:
|
|
HandlePersonnel();
|
|
break;
|
|
case LAPTOP_MODE_HISTORY:
|
|
HandleHistory();
|
|
break;
|
|
case LAPTOP_MODE_FILES:
|
|
HandleFiles();
|
|
break;
|
|
case LAPTOP_MODE_EMAIL:
|
|
HandleEmail();
|
|
break;
|
|
|
|
case LAPTOP_MODE_BROKEN_LINK:
|
|
HandleBrokenLink();
|
|
break;
|
|
|
|
case LAPTOP_MODE_BOBBYR_SHIPMENTS:
|
|
HandleBobbyRShipments();
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
extern BOOLEAN gfPrintFrameBuffer;
|
|
|
|
// WANNE 2 <change laptop zooming>
|
|
UINT32 LaptopScreenHandle()
|
|
{
|
|
INT16 sYOffset = 0;
|
|
INT16 sXOffset = 0;
|
|
|
|
//User just changed modes. This is determined by the button callbacks
|
|
//created in LaptopScreenInit()
|
|
|
|
// Correct the minor cosmetic bug (laptop zooming start not correct)
|
|
if (iResolution == 0)
|
|
{
|
|
sXOffset = -2;
|
|
sYOffset = -2;
|
|
}
|
|
else if (iResolution == 1)
|
|
{
|
|
sYOffset = -1;
|
|
}
|
|
else if (iResolution == 2)
|
|
{
|
|
sXOffset = 2;
|
|
sYOffset = 1;
|
|
}
|
|
|
|
// Set mouse region values
|
|
LaptopScreenRect.iLeft = LAPTOP_UL_X;
|
|
LaptopScreenRect.iTop = LAPTOP_UL_Y - 5;
|
|
LaptopScreenRect.iRight = LAPTOP_SCREEN_LR_X + 2;
|
|
LaptopScreenRect.iBottom = LAPTOP_SCREEN_LR_Y + 5 + 19;
|
|
|
|
// just entered
|
|
if(gfEnterLapTop)
|
|
{
|
|
EnterLaptop();
|
|
CreateLaptopButtons();
|
|
gfEnterLapTop=FALSE;
|
|
}
|
|
|
|
if( gfStartMapScreenToLaptopTransition )
|
|
{
|
|
//Everything is set up to start the transition animation.
|
|
//SGPRect SrcRect1;
|
|
SGPRect SrcRect2, DstRect;
|
|
INT32 iPercentage, iScalePercentage, iFactor;
|
|
UINT32 uiStartTime, uiTimeRange, uiCurrTime;
|
|
INT32 iX, iY, iWidth, iHeight;
|
|
INT32 iLaptopMonitorCenterX, iLaptopMonitorCenterY;
|
|
|
|
INT32 iRealPercentage;
|
|
|
|
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
|
|
//Step 1: Build the laptop image into the save buffer.
|
|
gfStartMapScreenToLaptopTransition = FALSE;
|
|
RestoreBackgroundRects();
|
|
RenderLapTopImage();
|
|
HighLightRegion(giCurrentRegion);
|
|
RenderLaptop();
|
|
RenderButtons();
|
|
PrintDate( );
|
|
PrintBalance( );
|
|
PrintNumberOnTeam( );
|
|
ShowLights();
|
|
|
|
//Step 2: The mapscreen image is in the EXTRABUFFER, and laptop is in the SAVEBUFFER
|
|
// Start transitioning the screen.
|
|
DstRect.iLeft = iScreenWidthOffset; //0
|
|
DstRect.iTop = iScreenHeightOffset; //0
|
|
DstRect.iRight = iScreenWidthOffset + 640; //640
|
|
DstRect.iBottom = iScreenHeightOffset + 480; //480
|
|
iLaptopMonitorCenterX = SCREEN_WIDTH - 184 + 19 + sXOffset;
|
|
iLaptopMonitorCenterY = SCREEN_HEIGHT - 70 + 16 + sYOffset; // WANNE 2
|
|
uiTimeRange = 1000;
|
|
iPercentage = iRealPercentage = 0;
|
|
uiStartTime = GetJA2Clock();
|
|
|
|
BlitBufferToBuffer( FRAME_BUFFER, guiSAVEBUFFER, iScreenWidthOffset, iScreenHeightOffset,
|
|
640, 480 );
|
|
// Lesh: moved into loop
|
|
//BlitBufferToBuffer( guiEXTRABUFFER, FRAME_BUFFER, iScreenWidthOffset, iScreenHeightOffset,
|
|
// SCREEN_WIDTH - iScreenWidthOffset, SCREEN_HEIGHT - iScreenHeightOffset );
|
|
|
|
PlayJA2SampleFromFile( "SOUNDS\\Laptop power up (8-11).wav", RATE_11025, HIGHVOLUME, 1, MIDDLEPAN );
|
|
|
|
// WANNE 2 with laptop zooming
|
|
while( iRealPercentage < 100 )
|
|
{
|
|
// Lesh: restore mapscreen so laptop zooming won't leave "graphical trail
|
|
BlitBufferToBuffer( guiEXTRABUFFER, FRAME_BUFFER, iScreenWidthOffset, iScreenHeightOffset,
|
|
SCREEN_WIDTH - iScreenWidthOffset, SCREEN_HEIGHT - iScreenHeightOffset );
|
|
|
|
uiCurrTime = GetJA2Clock();
|
|
iPercentage = (uiCurrTime-uiStartTime) * 100 / uiTimeRange;
|
|
iPercentage = min( iPercentage, 100 );
|
|
|
|
iRealPercentage = iPercentage;
|
|
|
|
//Factor the percentage so that it is modified by a gravity falling acceleration effect.
|
|
iFactor = (iPercentage - 50) * 2;
|
|
if( iPercentage < 50 )
|
|
iPercentage = (UINT32)(iPercentage + iPercentage * iFactor * 0.01 + 0.5);
|
|
else
|
|
iPercentage = (UINT32)(iPercentage + (100-iPercentage) * iFactor * 0.01 + 0.5);
|
|
|
|
//Laptop source rect
|
|
if( iPercentage < 99 )
|
|
iScalePercentage = 10000 / (100-iPercentage);
|
|
else
|
|
iScalePercentage = 5333;
|
|
iWidth = 12 * iScalePercentage / 100;
|
|
iHeight = 9 * iScalePercentage / 100;
|
|
|
|
iX = iLaptopMonitorCenterX - (iLaptopMonitorCenterX - (iScreenWidthOffset + 320)) * iScalePercentage / 5333;
|
|
iY = iLaptopMonitorCenterY - (iLaptopMonitorCenterY - (iScreenHeightOffset + 240)) * iScalePercentage / 5333;
|
|
|
|
SrcRect2.iLeft = iX - iWidth / 2;
|
|
SrcRect2.iRight = SrcRect2.iLeft + iWidth;
|
|
SrcRect2.iTop = iY - iHeight / 2;
|
|
SrcRect2.iBottom = SrcRect2.iTop + iHeight;
|
|
|
|
BltStretchVideoSurface( FRAME_BUFFER, guiSAVEBUFFER, iScreenWidthOffset, iScreenHeightOffset, 0, &DstRect, &SrcRect2 );
|
|
|
|
//WANNE 2
|
|
InvalidateScreen();
|
|
|
|
//WANNE 2
|
|
RefreshScreen( NULL );
|
|
}
|
|
|
|
fReDrawScreenFlag = TRUE;
|
|
}
|
|
|
|
|
|
//DO NOT MOVE THIS FUNCTION CALL!!!
|
|
|
|
//This determines if the help screen should be active
|
|
if( ShouldTheHelpScreenComeUp( HELP_SCREEN_LAPTOP, FALSE ) )
|
|
{
|
|
// handle the help screen
|
|
HelpScreenHandler();
|
|
return( LAPTOP_SCREEN );
|
|
}
|
|
|
|
RestoreBackgroundRects();
|
|
|
|
// lock cursor to screen
|
|
RestrictMouseCursor( &LaptopScreenRect );
|
|
|
|
|
|
|
|
// handle animated cursors
|
|
HandleAnimatedCursors( );
|
|
// Deque all game events
|
|
DequeAllGameEvents( TRUE );
|
|
|
|
// handle sub sites..like BR Guns, BR Ammo, Armour, Misc...for WW Wait..since they are not true sub pages
|
|
// and are not individual sites
|
|
HandleWWWSubSites( );
|
|
UpdateStatusOfDisplayingBookMarks( );
|
|
|
|
// check if we need to reset new WWW mode
|
|
CheckIfNewWWWW( );
|
|
|
|
if( guiCurrentLaptopMode != guiPreviousLaptopMode )
|
|
{
|
|
if( guiCurrentLaptopMode <=LAPTOP_MODE_WWW )
|
|
{
|
|
fLoadPendingFlag=FALSE;
|
|
}
|
|
|
|
if( ( fMaximizingProgram == FALSE ) && ( fMinizingProgram == FALSE ) )
|
|
{
|
|
if( guiCurrentLaptopMode <= LAPTOP_MODE_WWW )
|
|
{
|
|
EnterNewLaptopMode();
|
|
if( ( fMaximizingProgram == FALSE ) && ( fMinizingProgram == FALSE ) )
|
|
{
|
|
guiPreviousLaptopMode = guiCurrentLaptopMode;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(!fLoadPendingFlag)
|
|
{
|
|
EnterNewLaptopMode();
|
|
guiPreviousLaptopMode = guiCurrentLaptopMode;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if( fPausedReDrawScreenFlag )
|
|
{
|
|
fReDrawScreenFlag = TRUE;
|
|
fPausedReDrawScreenFlag = FALSE;
|
|
}
|
|
|
|
// WANNE 2 <redraw>
|
|
if( fReDrawScreenFlag )
|
|
{
|
|
RenderLapTopImage();
|
|
HighLightRegion(giCurrentRegion);
|
|
RenderLaptop();
|
|
|
|
}
|
|
|
|
|
|
// are we about to leave laptop
|
|
if( fExitingLaptopFlag )
|
|
{
|
|
if( fLoadPendingFlag == TRUE )
|
|
{
|
|
fLoadPendingFlag = FALSE;
|
|
fExitDuringLoad = TRUE;
|
|
}
|
|
LeaveLapTopScreen( );
|
|
}
|
|
|
|
if( fExitingLaptopFlag == FALSE )
|
|
{
|
|
// handle handles for laptop input stream
|
|
HandleLapTopHandles();
|
|
}
|
|
|
|
// get keyboard input, handle it
|
|
GetLaptopKeyboardInput();
|
|
|
|
|
|
|
|
|
|
|
|
// check to see if new mail box needs to be displayed
|
|
DisplayNewMailBox( );
|
|
CreateDestroyNewMailButton( );
|
|
|
|
// create various mouse regions that are global to laptop system
|
|
CreateDestoryBookMarkRegions( );
|
|
CreateDestroyErrorButton( );
|
|
|
|
// check to see if error box needs to be displayed
|
|
DisplayErrorBox();
|
|
|
|
// check to see if buttons marked dirty
|
|
CheckMarkButtonsDirtyFlag( );
|
|
|
|
// check to see if new mail box needs to be displayed
|
|
ShouldNewMailBeDisplayed();
|
|
|
|
// check to see if new mail box needs to be displayed
|
|
ReDrawNewMailBox( );
|
|
|
|
|
|
// look for unread email
|
|
LookForUnread();
|
|
//Handle keyboard shortcuts...
|
|
|
|
// mouse regions
|
|
//HandleLapTopScreenMouseUi();
|
|
//RenderButtons();
|
|
//RenderButtonsFastHelp( );
|
|
|
|
|
|
|
|
if( ( fLoadPendingFlag == FALSE )||( fNewMailFlag ) )
|
|
{
|
|
// render buttons marked dirty
|
|
RenderButtons( );
|
|
|
|
// render fast help 'quick created' buttons
|
|
// RenderFastHelp( );
|
|
// RenderButtonsFastHelp( );
|
|
}
|
|
|
|
// show text on top of buttons
|
|
if( ( fMaximizingProgram == FALSE ) && ( fMinizingProgram == FALSE ) )
|
|
{
|
|
DrawButtonText();
|
|
}
|
|
|
|
|
|
// check to see if bookmarks need to be displayed
|
|
if(gfShowBookmarks)
|
|
{
|
|
if( fExitingLaptopFlag )
|
|
gfShowBookmarks = FALSE;
|
|
else
|
|
DisplayBookMarks();
|
|
}
|
|
|
|
// check to see if laod pending flag is set
|
|
DisplayLoadPending( );
|
|
|
|
// check if we are showing message?
|
|
DisplayWebBookMarkNotify( );
|
|
|
|
if( ( fIntermediateReDrawFlag )||( fReDrawPostButtonRender ) )
|
|
{
|
|
// rendering AFTER buttons and button text
|
|
if( ( fMaximizingProgram == FALSE ) && ( fMinizingProgram == FALSE ) )
|
|
{
|
|
PostButtonRendering( );
|
|
}
|
|
}
|
|
//PrintBalance( );
|
|
|
|
PrintDate( );
|
|
|
|
PrintBalance( );
|
|
|
|
PrintNumberOnTeam( );
|
|
DisplayTaskBarIcons();
|
|
|
|
// handle if we are maximizing a program from a minimized state or vice versa
|
|
HandleSlidingTitleBar( );
|
|
|
|
|
|
// flicker HD light as nessacary
|
|
FlickerHDLight( );
|
|
|
|
// display power and HD lights
|
|
ShowLights( );
|
|
|
|
|
|
// render frame rate
|
|
DisplayFrameRate( );
|
|
|
|
// WANNE 2 <redraw>
|
|
// invalidate screen if redrawn
|
|
if( fReDrawScreenFlag == TRUE )
|
|
{
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
fReDrawScreenFlag = FALSE;
|
|
}
|
|
|
|
ExecuteVideoOverlays();
|
|
|
|
SaveBackgroundRects( );
|
|
// RenderButtonsFastHelp();
|
|
RenderFastHelp( );
|
|
|
|
// ex SAVEBUFFER queue
|
|
ExecuteBaseDirtyRectQueue();
|
|
ResetInterface();
|
|
EndFrameBufferRender( );
|
|
return (LAPTOP_SCREEN);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UINT32 RenderLaptopPanel()
|
|
{
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
UINT32 ExitLaptopMode(UINT32 uiMode)
|
|
{
|
|
//Deallocate the previous mode that you were in.
|
|
|
|
switch( uiMode )
|
|
{
|
|
case LAPTOP_MODE_AIM:
|
|
ExitAIM();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS:
|
|
ExitAIMMembers();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_FACIAL_INDEX:
|
|
ExitAimFacialIndex();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_SORTED_FILES:
|
|
ExitAimSort();
|
|
break;
|
|
case LAPTOP_MODE_AIM_MEMBERS_ARCHIVES:
|
|
ExitAimArchives();
|
|
break;
|
|
case LAPTOP_MODE_AIM_POLICIES:
|
|
ExitAimPolicies();
|
|
break;
|
|
case LAPTOP_MODE_AIM_LINKS:
|
|
ExitAimLinks();
|
|
break;
|
|
case LAPTOP_MODE_AIM_HISTORY:
|
|
ExitAimHistory();
|
|
break;
|
|
|
|
case LAPTOP_MODE_MERC:
|
|
ExitMercs();
|
|
break;
|
|
case LAPTOP_MODE_MERC_FILES:
|
|
ExitMercsFiles();
|
|
break;
|
|
case LAPTOP_MODE_MERC_ACCOUNT:
|
|
ExitMercsAccount();
|
|
break;
|
|
case LAPTOP_MODE_MERC_NO_ACCOUNT:
|
|
ExitMercsNoAccount();
|
|
break;
|
|
|
|
|
|
case LAPTOP_MODE_BOBBY_R:
|
|
ExitBobbyR();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_GUNS:
|
|
ExitBobbyRGuns();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_AMMO:
|
|
ExitBobbyRAmmo();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_ARMOR:
|
|
ExitBobbyRArmour();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MISC:
|
|
ExitBobbyRMisc();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_USED:
|
|
ExitBobbyRUsed();
|
|
break;
|
|
case LAPTOP_MODE_BOBBY_R_MAILORDER:
|
|
ExitBobbyRMailOrder();
|
|
break;
|
|
|
|
|
|
case LAPTOP_MODE_CHAR_PROFILE:
|
|
ExitCharProfile();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST:
|
|
ExitFlorist();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_FLOWER_GALLERY:
|
|
ExitFloristGallery();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_ORDERFORM:
|
|
ExitFloristOrderForm();
|
|
break;
|
|
case LAPTOP_MODE_FLORIST_CARD_GALLERY:
|
|
ExitFloristCards();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE:
|
|
ExitInsurance();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE_INFO:
|
|
ExitInsuranceInfo();
|
|
break;
|
|
|
|
case LAPTOP_MODE_INSURANCE_CONTRACT:
|
|
ExitInsuranceContract();
|
|
break;
|
|
case LAPTOP_MODE_INSURANCE_COMMENTS:
|
|
ExitInsuranceComments();
|
|
break;
|
|
|
|
case LAPTOP_MODE_FUNERAL:
|
|
ExitFuneral();
|
|
break;
|
|
case LAPTOP_MODE_SIRTECH:
|
|
ExitSirTech();
|
|
break;
|
|
case LAPTOP_MODE_FINANCES:
|
|
ExitFinances();
|
|
break;
|
|
case LAPTOP_MODE_PERSONNEL:
|
|
ExitPersonnel();
|
|
break;
|
|
case LAPTOP_MODE_HISTORY:
|
|
ExitHistory();
|
|
break;
|
|
case LAPTOP_MODE_FILES:
|
|
ExitFiles();
|
|
break;
|
|
case LAPTOP_MODE_EMAIL:
|
|
ExitEmail();
|
|
break;
|
|
case LAPTOP_MODE_BROKEN_LINK:
|
|
ExitBrokenLink();
|
|
break;
|
|
|
|
case LAPTOP_MODE_BOBBYR_SHIPMENTS:
|
|
ExitBobbyRShipments();
|
|
break;
|
|
}
|
|
|
|
if( ( uiMode != LAPTOP_MODE_NONE )&&( uiMode < LAPTOP_MODE_WWW ) )
|
|
{
|
|
CreateDestroyMinimizeButtonForCurrentMode( );
|
|
}
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
UINT32
|
|
CreateLaptopButtons()
|
|
{
|
|
memset( giLapTopButton, -1, sizeof( giLapTopButton ) );
|
|
|
|
// the program buttons
|
|
|
|
|
|
gLaptopButtonImage[0]= LoadButtonImage( "LAPTOP\\buttonsforlaptop.sti" ,-1,0,-1,8,-1 );
|
|
gLaptopButton[0] = QuickCreateButton( gLaptopButtonImage[0], iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 66,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)EmailRegionButtonCallback);
|
|
CreateLaptopButtonHelpText( gLaptopButton[0], LAPTOP_BN_HLP_TXT_VIEW_EMAIL );
|
|
|
|
SpecifyButtonText( gLaptopButton[0], pLaptopIcons[ 0 ] );
|
|
SpecifyButtonFont( gLaptopButton[0], FONT10ARIAL );
|
|
SpecifyButtonTextOffsets( gLaptopButton[0], 30, 11, TRUE );
|
|
SpecifyButtonDownTextColors( gLaptopButton[0], 2, 0 );
|
|
SpecifyButtonUpTextColors( gLaptopButton[0], 2, 0 );
|
|
|
|
gLaptopButtonImage[1]= LoadButtonImage( "LAPTOP\\buttonsforlaptop.sti" ,-1,1,-1,9,-1 );
|
|
gLaptopButton[1] = QuickCreateButton( gLaptopButtonImage[1], iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 98,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)WWWRegionButtonCallback);
|
|
CreateLaptopButtonHelpText( gLaptopButton[1], LAPTOP_BN_HLP_TXT_BROWSE_VARIOUS_WEB_SITES );
|
|
|
|
SpecifyButtonText( gLaptopButton[1], pLaptopIcons[1 ] );
|
|
SpecifyButtonFont( gLaptopButton[1], FONT10ARIAL );
|
|
SpecifyButtonTextOffsets( gLaptopButton[1], 30, 11, TRUE );
|
|
SpecifyButtonUpTextColors( gLaptopButton[1], 2, 0 );
|
|
SpecifyButtonDownTextColors( gLaptopButton[1], 2, 0 );
|
|
|
|
gLaptopButtonImage[2]= LoadButtonImage( "LAPTOP\\buttonsforlaptop.sti" ,-1,2,-1,10,-1 );
|
|
gLaptopButton[2] = QuickCreateButton( gLaptopButtonImage[2], iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 130,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)FilesRegionButtonCallback);
|
|
CreateLaptopButtonHelpText( gLaptopButton[2], LAPTOP_BN_HLP_TXT_VIEW_FILES_AND_EMAIL_ATTACHMENTS );
|
|
|
|
SpecifyButtonText( gLaptopButton[2], pLaptopIcons[ 5 ] );
|
|
SpecifyButtonFont( gLaptopButton[2], FONT10ARIAL );
|
|
SpecifyButtonTextOffsets( gLaptopButton[2], 30, 11, TRUE );
|
|
SpecifyButtonUpTextColors( gLaptopButton[2], 2, 0 );
|
|
SpecifyButtonDownTextColors( gLaptopButton[2], 2, 0 );
|
|
|
|
|
|
gLaptopButtonImage[3]= LoadButtonImage( "LAPTOP\\buttonsforlaptop.sti" ,-1,3,-1,11,-1 );
|
|
gLaptopButton[3] = QuickCreateButton( gLaptopButtonImage[3], iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 194,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)PersonnelRegionButtonCallback);
|
|
CreateLaptopButtonHelpText( gLaptopButton[3], LAPTOP_BN_HLP_TXT_VIEW_TEAM_INFO );
|
|
|
|
SpecifyButtonText( gLaptopButton[3], pLaptopIcons[ 3] );
|
|
SpecifyButtonFont( gLaptopButton[3], FONT10ARIAL );
|
|
SpecifyButtonTextOffsets( gLaptopButton[3], 30, 11, TRUE );
|
|
SpecifyButtonUpTextColors( gLaptopButton[3], 2, 0 );
|
|
SpecifyButtonDownTextColors( gLaptopButton[3], 2, 0 );
|
|
|
|
|
|
gLaptopButtonImage[4]= LoadButtonImage( "LAPTOP\\buttonsforlaptop.sti" ,-1,4,-1,12,-1 );
|
|
gLaptopButton[4] = QuickCreateButton( gLaptopButtonImage[4], iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 162,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)HistoryRegionButtonCallback);
|
|
CreateLaptopButtonHelpText( gLaptopButton[4], LAPTOP_BN_HLP_TXT_READ_LOG_OF_EVENTS );
|
|
|
|
SpecifyButtonText( gLaptopButton[4], pLaptopIcons[ 4 ] );
|
|
SpecifyButtonFont( gLaptopButton[4], FONT10ARIAL );
|
|
SpecifyButtonTextOffsets( gLaptopButton[4], 30, 11, TRUE );
|
|
SpecifyButtonUpTextColors( gLaptopButton[4], 2, 0 );
|
|
SpecifyButtonDownTextColors( gLaptopButton[4], 2, 0 );
|
|
|
|
|
|
gLaptopButtonImage[5]= LoadButtonImage( "LAPTOP\\buttonsforlaptop.sti" ,-1,5,-1,13,-1 );
|
|
gLaptopButton[5] = QuickCreateButton( gLaptopButtonImage[5], iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 241,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)FinancialRegionButtonCallback);
|
|
CreateLaptopButtonHelpText( gLaptopButton[5], LAPTOP_BN_HLP_TXT_VIEW_FINANCIAL_SUMMARY_AND_HISTORY );
|
|
|
|
SpecifyButtonText( gLaptopButton[5], pLaptopIcons[ 2 ] );
|
|
SpecifyButtonFont( gLaptopButton[5], FONT10ARIAL );
|
|
SpecifyButtonTextOffsets( gLaptopButton[5], 30, 11, TRUE );
|
|
SpecifyButtonUpTextColors( gLaptopButton[5], 2, 0 );
|
|
SpecifyButtonDownTextColors( gLaptopButton[5], 2, 0 );
|
|
|
|
|
|
gLaptopButtonImage[6]= LoadButtonImage( "LAPTOP\\buttonsforlaptop.sti" ,-1,6,-1,14,-1 );
|
|
gLaptopButton[6] = QuickCreateButton( gLaptopButtonImage[6], iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 378,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnOnCallback);
|
|
CreateLaptopButtonHelpText( gLaptopButton[6], LAPTOP_BN_HLP_TXT_CLOSE_LAPTOP );
|
|
|
|
SpecifyButtonText( gLaptopButton[6], pLaptopIcons[ 6 ] );
|
|
SpecifyButtonFont( gLaptopButton[6], FONT10ARIAL );
|
|
SpecifyButtonTextOffsets( gLaptopButton[6], 25, 11, TRUE );
|
|
SpecifyButtonUpTextColors( gLaptopButton[6], 2, 0 );
|
|
SpecifyButtonDownTextColors( gLaptopButton[6], 2, 0 );
|
|
|
|
|
|
// define the cursor
|
|
SetButtonCursor(gLaptopButton[0], CURSOR_LAPTOP_SCREEN);
|
|
SetButtonCursor(gLaptopButton[1], CURSOR_LAPTOP_SCREEN);
|
|
SetButtonCursor(gLaptopButton[2], CURSOR_LAPTOP_SCREEN);
|
|
SetButtonCursor(gLaptopButton[3], CURSOR_LAPTOP_SCREEN);
|
|
SetButtonCursor(gLaptopButton[4], CURSOR_LAPTOP_SCREEN);
|
|
SetButtonCursor(gLaptopButton[5], CURSOR_LAPTOP_SCREEN);
|
|
SetButtonCursor(gLaptopButton[6], CURSOR_LAPTOP_SCREEN);
|
|
|
|
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
void
|
|
DeleteLapTopButtons()
|
|
{
|
|
UINT32 cnt;
|
|
|
|
for( cnt = 0; cnt < 7; cnt++ )
|
|
{
|
|
RemoveButton( gLaptopButton[ cnt ] );
|
|
UnloadButtonImage( gLaptopButtonImage[ cnt ] );
|
|
}
|
|
}
|
|
|
|
|
|
void
|
|
BtnOnCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
if ( HandleExit( ) )
|
|
{
|
|
// btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
fExitingLaptopFlag = TRUE;
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
}
|
|
}
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
}
|
|
|
|
}
|
|
|
|
BOOLEAN LeaveLapTopScreen( void )
|
|
{
|
|
INT16 sYOffset = 0;
|
|
INT16 sXOffset = 0;
|
|
|
|
// Correct the minor cosmetic bug (laptop zooming start not correct)
|
|
if (iResolution == 0)
|
|
{
|
|
sXOffset = -2;
|
|
sYOffset = -2;
|
|
}
|
|
else if (iResolution == 1)
|
|
{
|
|
sYOffset = -1;
|
|
}
|
|
else if (iResolution == 2)
|
|
{
|
|
sXOffset = 2;
|
|
sYOffset = 1;
|
|
}
|
|
|
|
if( ExitLaptopDone( ) )
|
|
{
|
|
SetLaptopExitScreen( MAP_SCREEN );
|
|
|
|
if( gfAtLeastOneMercWasHired == TRUE )
|
|
{
|
|
if( LaptopSaveInfo.gfNewGameLaptop )
|
|
{
|
|
LaptopSaveInfo.gfNewGameLaptop = FALSE;
|
|
fExitingLaptopFlag = TRUE;
|
|
InitNewGame( FALSE );
|
|
gfDontStartTransitionFromLaptop = TRUE;
|
|
return( TRUE );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
gfDontStartTransitionFromLaptop = TRUE;
|
|
}
|
|
|
|
SetPendingNewScreen(guiExitScreen);
|
|
|
|
if( !gfDontStartTransitionFromLaptop )
|
|
{
|
|
SGPRect SrcRect1, SrcRect2, DstRect;
|
|
INT32 iPercentage, iScalePercentage, iFactor;
|
|
UINT32 uiStartTime, uiTimeRange, uiCurrTime;
|
|
INT32 iX, iY, iWidth, iHeight;
|
|
INT32 iRealPercentage;
|
|
INT32 iLaptopMonitorCenterX, iLaptopMonitorCenterY;
|
|
|
|
gfDontStartTransitionFromLaptop = TRUE;
|
|
SetCurrentCursorFromDatabase( VIDEO_NO_CURSOR );
|
|
//Step 1: Build the laptop image into the save buffer.
|
|
RestoreBackgroundRects();
|
|
RenderLapTopImage();
|
|
HighLightRegion(giCurrentRegion);
|
|
RenderLaptop();
|
|
RenderButtons();
|
|
PrintDate( );
|
|
PrintBalance( );
|
|
PrintNumberOnTeam( );
|
|
ShowLights();
|
|
|
|
//Step 2: The mapscreen image is in the EXTRABUFFER, and laptop is in the SAVEBUFFER
|
|
// Start transitioning the screen.
|
|
DstRect.iLeft = iScreenWidthOffset + 0; // 0
|
|
DstRect.iTop = iScreenHeightOffset + 0; // 0
|
|
DstRect.iRight = iScreenWidthOffset + 640; // 640
|
|
DstRect.iBottom = iScreenHeightOffset + 480; // 480
|
|
iLaptopMonitorCenterX = SCREEN_WIDTH - 184 + 19 + sXOffset;
|
|
iLaptopMonitorCenterY = SCREEN_HEIGHT - 70 + 16 + sYOffset;
|
|
uiTimeRange = 1000;
|
|
iPercentage = iRealPercentage = 100;
|
|
uiStartTime = GetJA2Clock();
|
|
|
|
BlitBufferToBuffer( FRAME_BUFFER, guiSAVEBUFFER, iScreenWidthOffset, iScreenHeightOffset,
|
|
640, 480 );
|
|
|
|
PlayJA2SampleFromFile( "SOUNDS\\Laptop power down (8-11).wav", RATE_11025, HIGHVOLUME, 1, MIDDLEPAN );
|
|
|
|
// WANNE 2
|
|
while( iRealPercentage > 0 )
|
|
{
|
|
BlitBufferToBuffer( guiEXTRABUFFER, FRAME_BUFFER, iScreenWidthOffset, iScreenHeightOffset,
|
|
SCREEN_WIDTH - iScreenWidthOffset, SCREEN_HEIGHT - iScreenHeightOffset );
|
|
|
|
uiCurrTime = GetJA2Clock();
|
|
iPercentage = (uiCurrTime-uiStartTime) * 100 / uiTimeRange;
|
|
iPercentage = min( iPercentage, 100 );
|
|
iPercentage = 100 - iPercentage;
|
|
|
|
iRealPercentage = iPercentage;
|
|
|
|
//Factor the percentage so that it is modified by a gravity falling acceleration effect.
|
|
iFactor = (iPercentage - 50) * 2;
|
|
if( iPercentage < 50 )
|
|
iPercentage = (UINT32)(iPercentage + iPercentage * iFactor * 0.01 + 0.5);
|
|
else
|
|
iPercentage = (UINT32)(iPercentage + (100-iPercentage) * iFactor * 0.01 + 0.5);
|
|
|
|
//Mapscreen source rect
|
|
SrcRect1.iLeft = iScreenWidthOffset + 464 * iPercentage / 100;
|
|
SrcRect1.iRight = iScreenWidthOffset + 640 - 163 * iPercentage / 100;
|
|
SrcRect1.iTop = iScreenHeightOffset + 417 * iPercentage / 100;
|
|
SrcRect1.iBottom = iScreenHeightOffset + 480 - 55 * iPercentage / 100;
|
|
//Laptop source rect
|
|
if( iPercentage < 99 )
|
|
iScalePercentage = 10000 / (100-iPercentage);
|
|
else
|
|
iScalePercentage = 5333;
|
|
iWidth = 12 * iScalePercentage / 100;
|
|
iHeight = 9 * iScalePercentage / 100;
|
|
|
|
iX = iLaptopMonitorCenterX - (iLaptopMonitorCenterX - (iScreenWidthOffset + 320)) * iScalePercentage / 5333;
|
|
iY = iLaptopMonitorCenterY - (iLaptopMonitorCenterY - (iScreenHeightOffset + 240)) * iScalePercentage / 5333;
|
|
|
|
SrcRect2.iLeft = iX - iWidth / 2;
|
|
SrcRect2.iRight = SrcRect2.iLeft + iWidth;
|
|
SrcRect2.iTop = iY - iHeight / 2;
|
|
SrcRect2.iBottom = SrcRect2.iTop + iHeight;
|
|
|
|
BltStretchVideoSurface( FRAME_BUFFER, guiSAVEBUFFER, 0, iScreenWidthOffset, iScreenHeightOffset, &DstRect, &SrcRect2 );
|
|
|
|
InvalidateScreen();
|
|
//gfPrintFrameBuffer = TRUE;
|
|
RefreshScreen( NULL );
|
|
}
|
|
}
|
|
}
|
|
return( TRUE );
|
|
|
|
}
|
|
|
|
|
|
BOOLEAN HandleExit( void )
|
|
{
|
|
// static BOOLEAN fSentImpWarningAlready = FALSE;
|
|
|
|
|
|
// remind player about IMP
|
|
if ( LaptopSaveInfo.gfNewGameLaptop != 0 )
|
|
{
|
|
if ( !AnyMercsHired( ) )
|
|
{
|
|
//AddEmail(0,1, GAME_HELP, GetWorldTotalMin( ) );
|
|
//fExitingLaptopFlag = FALSE;
|
|
//return( FALSE );
|
|
}
|
|
}
|
|
|
|
// new game, send email
|
|
if ( LaptopSaveInfo.gfNewGameLaptop != 0 )
|
|
{
|
|
// Set an event to send this email ( day 2 8:00-12:00 )
|
|
if( ( LaptopSaveInfo.fIMPCompletedFlag == FALSE ) && ( LaptopSaveInfo.fSentImpWarningAlready == FALSE ) )
|
|
{
|
|
AddFutureDayStrategicEvent( EVENT_HAVENT_MADE_IMP_CHARACTER_EMAIL, (8 + Random(4) ) * 60, 0, 1 );
|
|
|
|
/*
|
|
Moved to an event that gets triggered the next day: HaventMadeImpMercEmailCallBack()
|
|
|
|
LaptopSaveInfo.fSentImpWarningAlready = TRUE;
|
|
AddEmail(IMP_EMAIL_AGAIN,IMP_EMAIL_AGAIN_LENGTH,1, GetWorldTotalMin( ) );
|
|
*/
|
|
fExitingLaptopFlag = TRUE;
|
|
|
|
return( FALSE );
|
|
}
|
|
}
|
|
|
|
|
|
return ( TRUE );
|
|
|
|
}
|
|
|
|
void HaventMadeImpMercEmailCallBack()
|
|
{
|
|
//if the player STILL hasnt made an imp merc yet
|
|
if( ( LaptopSaveInfo.fIMPCompletedFlag == FALSE ) && ( LaptopSaveInfo.fSentImpWarningAlready == FALSE ) )
|
|
{
|
|
LaptopSaveInfo.fSentImpWarningAlready = TRUE;
|
|
AddEmail(IMP_EMAIL_AGAIN,IMP_EMAIL_AGAIN_LENGTH,1, GetWorldTotalMin( ), -1 );
|
|
}
|
|
}
|
|
|
|
|
|
BOOLEAN
|
|
CreateLapTopMouseRegions()
|
|
{
|
|
// define regions
|
|
|
|
|
|
// the entire laptop display region
|
|
MSYS_DefineRegion( &gLapTopScreenRegion, ( UINT16 )( LaptopScreenRect.iLeft ),( UINT16 )( LaptopScreenRect.iTop ),( UINT16 ) ( LaptopScreenRect.iRight ),( UINT16 )( LaptopScreenRect.iBottom ), MSYS_PRIORITY_NORMAL+1,
|
|
CURSOR_LAPTOP_SCREEN, ScreenRegionMvtCallback, LapTopScreenCallBack );
|
|
|
|
|
|
//MSYS_AddRegion(&gLapTopScreenRegion);
|
|
return (TRUE);
|
|
}
|
|
|
|
BOOLEAN
|
|
DeleteLapTopMouseRegions()
|
|
{
|
|
|
|
MSYS_RemoveRegion( &gLapTopScreenRegion);
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
void FinancialRegionButtonCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
if(giCurrentRegion!=FINANCIAL_REGION)
|
|
giOldRegion=giCurrentRegion;
|
|
giCurrentRegion=FINANCIAL_REGION;
|
|
if(gfShowBookmarks)
|
|
{
|
|
gfShowBookmarks=FALSE;
|
|
fReDrawScreenFlag=TRUE;
|
|
}
|
|
guiCurrentLaptopMode=LAPTOP_MODE_FINANCES;
|
|
|
|
UpdateListToReflectNewProgramOpened( LAPTOP_PROGRAM_FINANCES );
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void PersonnelRegionButtonCallback( GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
|
|
|
|
if(giCurrentRegion!=PERSONNEL_REGION)
|
|
giOldRegion=giCurrentRegion;
|
|
giCurrentRegion=PERSONNEL_REGION;
|
|
guiCurrentLaptopMode=LAPTOP_MODE_PERSONNEL;
|
|
if(gfShowBookmarks)
|
|
{
|
|
gfShowBookmarks=FALSE;
|
|
fReDrawScreenFlag=TRUE;
|
|
}
|
|
RestoreOldRegion(giOldRegion);
|
|
HighLightRegion(giCurrentRegion);
|
|
gfShowBookmarks=FALSE;
|
|
|
|
UpdateListToReflectNewProgramOpened( LAPTOP_PROGRAM_PERSONNEL );
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void EmailRegionButtonCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
// set old region
|
|
if(giCurrentRegion!=EMAIL_REGION)
|
|
giOldRegion=giCurrentRegion;
|
|
|
|
// stop showing WWW bookmarks
|
|
if(gfShowBookmarks)
|
|
{
|
|
gfShowBookmarks=FALSE;
|
|
}
|
|
|
|
// set current highlight region
|
|
giCurrentRegion=EMAIL_REGION;
|
|
|
|
// restore old region
|
|
RestoreOldRegion(giOldRegion);
|
|
|
|
// set up current mode
|
|
guiCurrentLaptopMode =LAPTOP_MODE_EMAIL;
|
|
|
|
UpdateListToReflectNewProgramOpened( LAPTOP_PROGRAM_MAILER );
|
|
|
|
// highlight current region
|
|
HighLightRegion(giCurrentRegion);
|
|
|
|
//redraw screen
|
|
fReDrawScreenFlag=TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void WWWRegionButtonCallback(GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_RBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
if(giCurrentRegion!=WWW_REGION)
|
|
giOldRegion=giCurrentRegion;
|
|
if(!fNewWWW)
|
|
fNewWWWDisplay=FALSE;
|
|
|
|
// reset show bookmarks
|
|
if( guiCurrentLaptopMode < LAPTOP_MODE_WWW )
|
|
{
|
|
gfShowBookmarks = FALSE;
|
|
fShowBookmarkInfo = TRUE;
|
|
}
|
|
else
|
|
{
|
|
gfShowBookmarks = !gfShowBookmarks;
|
|
}
|
|
|
|
|
|
if((gfShowBookmarks)&&(!fNewWWW))
|
|
{
|
|
|
|
fReDrawScreenFlag=TRUE;
|
|
fNewWWWDisplay=FALSE;
|
|
}
|
|
else if( fNewWWW )
|
|
{
|
|
|
|
// no longer a new WWW mode
|
|
fNewWWW=FALSE;
|
|
|
|
// new WWW to display
|
|
fNewWWWDisplay=TRUE;
|
|
|
|
// make sure program is maximized
|
|
if( gLaptopProgramStates[ LAPTOP_PROGRAM_WEB_BROWSER ] == LAPTOP_PROGRAM_OPEN )
|
|
{
|
|
// re render laptop region
|
|
RenderLapTopImage();
|
|
|
|
// re render background
|
|
DrawDeskTopBackground( );
|
|
|
|
}
|
|
}
|
|
giCurrentRegion=WWW_REGION;
|
|
RestoreOldRegion(giOldRegion);
|
|
if(guiCurrentWWWMode!=LAPTOP_MODE_NONE)
|
|
guiCurrentLaptopMode = guiCurrentWWWMode;
|
|
else
|
|
guiCurrentLaptopMode=LAPTOP_MODE_WWW;
|
|
UpdateListToReflectNewProgramOpened( LAPTOP_PROGRAM_WEB_BROWSER );
|
|
HighLightRegion(giCurrentRegion);
|
|
fReDrawScreenFlag=TRUE;
|
|
}
|
|
}
|
|
else if (reason & MSYS_CALLBACK_REASON_RBUTTON_UP)
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
// nothing yet
|
|
|
|
|
|
if(giCurrentRegion!=WWW_REGION)
|
|
giOldRegion=giCurrentRegion;
|
|
|
|
giCurrentRegion=WWW_REGION;
|
|
|
|
RestoreOldRegion(giOldRegion);
|
|
|
|
if(guiCurrentWWWMode!=LAPTOP_MODE_NONE)
|
|
guiCurrentLaptopMode = guiCurrentWWWMode;
|
|
else
|
|
guiCurrentLaptopMode=LAPTOP_MODE_WWW;
|
|
|
|
HighLightRegion(giCurrentRegion);
|
|
|
|
fReDrawScreenFlag=TRUE;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void HistoryRegionButtonCallback(GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
// if not in history, update to the fact
|
|
if(giCurrentRegion!=HISTORY_REGION)
|
|
giOldRegion=giCurrentRegion;
|
|
if(gfShowBookmarks)
|
|
{
|
|
// stop showing WWW bookmarks
|
|
gfShowBookmarks=FALSE;
|
|
}
|
|
|
|
// current region is history
|
|
giCurrentRegion=HISTORY_REGION;
|
|
|
|
// restore old region area
|
|
RestoreOldRegion(giOldRegion);
|
|
|
|
// set mode to history
|
|
guiCurrentLaptopMode=LAPTOP_MODE_HISTORY;
|
|
|
|
// hightlight current icon
|
|
HighLightRegion(giCurrentRegion);
|
|
|
|
UpdateListToReflectNewProgramOpened( LAPTOP_PROGRAM_HISTORY );
|
|
|
|
gfShowBookmarks=FALSE;
|
|
|
|
//redraw screen
|
|
fReDrawScreenFlag=TRUE;
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
void FilesRegionButtonCallback( GUI_BUTTON *btn,INT32 reason )
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
// reset old region
|
|
if(giCurrentRegion!=FILES_REGION)
|
|
giOldRegion=giCurrentRegion;
|
|
|
|
// stop showing WWW bookmarks
|
|
if(gfShowBookmarks)
|
|
{
|
|
gfShowBookmarks=FALSE;
|
|
fReDrawScreenFlag=TRUE;
|
|
}
|
|
|
|
// set new region
|
|
giCurrentRegion=FILES_REGION;
|
|
|
|
// restore old highlight region
|
|
RestoreOldRegion(giOldRegion);
|
|
|
|
// highlight new region
|
|
HighLightRegion(giCurrentRegion);
|
|
|
|
guiCurrentLaptopMode=LAPTOP_MODE_FILES;
|
|
|
|
UpdateListToReflectNewProgramOpened( LAPTOP_PROGRAM_FILES );
|
|
|
|
//redraw screen
|
|
fReDrawScreenFlag=TRUE;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void HandleLapTopScreenMouseUi()
|
|
{
|
|
if ( gEmailRegion.uiFlags & MSYS_MOUSE_IN_AREA )
|
|
{
|
|
giHighLightRegion=EMAIL_REGION;
|
|
}
|
|
else if ( gPersonnelRegion.uiFlags & MSYS_MOUSE_IN_AREA )
|
|
{
|
|
giHighLightRegion=PERSONNEL_REGION;
|
|
}
|
|
else if ( gFinancialRegion.uiFlags & MSYS_MOUSE_IN_AREA )
|
|
{
|
|
giHighLightRegion=FINANCIAL_REGION;
|
|
}
|
|
else if ( gWWWRegion.uiFlags & MSYS_MOUSE_IN_AREA )
|
|
{
|
|
giHighLightRegion=WWW_REGION;
|
|
}
|
|
else if ( gFilesRegion.uiFlags & MSYS_MOUSE_IN_AREA )
|
|
{
|
|
giHighLightRegion=FILES_REGION;
|
|
}
|
|
else if ( gHistoryRegion.uiFlags & MSYS_MOUSE_IN_AREA )
|
|
{
|
|
giHighLightRegion=HISTORY_REGION;
|
|
}
|
|
else
|
|
giHighLightRegion=NO_REGION;
|
|
DrawHighLightRegionBox();
|
|
}
|
|
|
|
void
|
|
DrawHighLightRegionBox()
|
|
{
|
|
|
|
return;
|
|
}
|
|
|
|
void
|
|
RestoreOldRegion(INT32 iOldRegion)
|
|
{
|
|
|
|
return;
|
|
}
|
|
|
|
void HighLightRegion(INT32 iCurrentRegion)
|
|
{
|
|
|
|
return;
|
|
}
|
|
|
|
void HandleAnimatedButtons()
|
|
{
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
void AnimateButton( UINT32 uiIconID, UINT16 usX, UINT16 usY )
|
|
{
|
|
return;
|
|
}
|
|
|
|
void WWWRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
static INT32 iBaseTime=0;
|
|
static INT32 iFrame=0;
|
|
INT32 iDifference=0;
|
|
HVOBJECT hLapTopIconHandle;
|
|
if (iReason & MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
iBaseTime=0;
|
|
iFrame=0;
|
|
GetVideoObject(&hLapTopIconHandle, guiWWWICON);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, (UINT16)iFrame,LAPTOP_ICONS_X, LAPTOP_ICONS_WWW_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
DrawLapTopText();
|
|
HighLightRegion(giCurrentRegion);
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
}
|
|
}
|
|
|
|
|
|
void EmailRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
static INT32 iBaseTime=0;
|
|
static INT32 iFrame=0;
|
|
INT32 iDifference=0;
|
|
HVOBJECT hLapTopIconHandle;
|
|
if (iReason & MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
iBaseTime=0;
|
|
iFrame=0;
|
|
DrawLapTopText();
|
|
GetVideoObject(&hLapTopIconHandle, guiMAILICON);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, (UINT16)iFrame,LAPTOP_ICONS_X, LAPTOP_ICONS_MAIL_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
if(fUnReadMailFlag)
|
|
{
|
|
GetVideoObject(&hLapTopIconHandle, guiUNREAD);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,LAPTOP_ICONS_X+CHECK_X, LAPTOP_ICONS_MAIL_Y+CHECK_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
DrawLapTopText();
|
|
HighLightRegion(giCurrentRegion);
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
}
|
|
}
|
|
|
|
|
|
void FinancialRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
static INT32 iBaseTime=0;
|
|
static INT32 iFrame=0;
|
|
INT32 iDifference=0;
|
|
HVOBJECT hLapTopIconHandle;
|
|
if (iReason & MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
iBaseTime=0;
|
|
iFrame=0;
|
|
GetVideoObject(&hLapTopIconHandle, guiFINANCIALICON);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, (UINT16)iFrame,LAPTOP_ICONS_X-4, LAPTOP_ICONS_FINANCIAL_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
DrawLapTopText();
|
|
HighLightRegion(giCurrentRegion);
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
}
|
|
}
|
|
|
|
void HistoryRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
static INT32 iBaseTime=0;
|
|
static INT32 iFrame=0;
|
|
INT32 iDifference=0;
|
|
HVOBJECT hLapTopIconHandle;
|
|
if (iReason & MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
iBaseTime=0;
|
|
iFrame=0;
|
|
|
|
GetVideoObject(&hLapTopIconHandle, guiHISTORYICON);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, (UINT16)iFrame,LAPTOP_ICONS_X, LAPTOP_ICONS_HISTORY_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
DrawLapTopText();
|
|
HighLightRegion(giCurrentRegion);
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void FilesRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
static INT32 iBaseTime=0;
|
|
static INT32 iFrame=0;
|
|
INT32 iDifference=0;
|
|
HVOBJECT hLapTopIconHandle;
|
|
if (iReason & MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
iBaseTime=0;
|
|
iFrame=0;
|
|
GetVideoObject(&hLapTopIconHandle, guiFILESICON);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, (UINT16)iFrame,LAPTOP_ICONS_X, LAPTOP_ICONS_FILES_Y+7, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
DrawLapTopText();
|
|
HighLightRegion(giCurrentRegion);
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
}
|
|
}
|
|
|
|
void PersonnelRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
static INT32 iBaseTime=0;
|
|
static INT32 iFrame=0;
|
|
INT32 iDifference=0;
|
|
HVOBJECT hLapTopIconHandle;
|
|
if (iReason & MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
iBaseTime=0;
|
|
iFrame=0;
|
|
|
|
GetVideoObject(&hLapTopIconHandle, guiPERSICON);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, (UINT16)iFrame,LAPTOP_ICONS_X, LAPTOP_ICONS_PERSONNEL_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
DrawLapTopText();
|
|
HighLightRegion(giCurrentRegion);
|
|
InvalidateRegion(0,0,SCREEN_WIDTH, SCREEN_HEIGHT);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void
|
|
CheckIfMouseLeaveScreen()
|
|
{
|
|
POINT MousePos;
|
|
GetCursorPos(&MousePos);
|
|
if((MousePos.x >LAPTOP_SCREEN_LR_X )||(MousePos.x<LAPTOP_UL_X)||(MousePos.y<LAPTOP_UL_Y )||(MousePos.y >LAPTOP_SCREEN_LR_Y))
|
|
{
|
|
guiCurrentLapTopCursor=LAPTOP_PANEL_CURSOR;
|
|
}
|
|
|
|
}
|
|
void ScreenRegionMvtCallback(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
if (iReason & MSYS_CALLBACK_REASON_INIT)
|
|
{
|
|
return;
|
|
}
|
|
/*if (iReason == MSYS_CALLBACK_REASON_MOVE)
|
|
{
|
|
guiCurrentLapTopCursor=LAPTOP_SCREEN_CURSOR;
|
|
}
|
|
if (iReason == MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
CheckIfMouseLeaveScreen();
|
|
}
|
|
*/
|
|
}
|
|
|
|
void ReDrawHighLight()
|
|
{
|
|
HighLightRegion(giCurrentRegion);
|
|
return;
|
|
}
|
|
|
|
|
|
void DrawButtonText()
|
|
{
|
|
|
|
if(fErrorFlag)
|
|
DrawTextOnErrorButton();
|
|
switch(guiCurrentLaptopMode)
|
|
{
|
|
case LAPTOP_MODE_EMAIL:
|
|
DisplayEmailHeaders( );
|
|
break;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void InitBookMarkList()
|
|
{
|
|
// sets bookmark list to -1
|
|
memset( LaptopSaveInfo.iBookMarkList, -1, sizeof( LaptopSaveInfo.iBookMarkList ) );
|
|
return;
|
|
}
|
|
|
|
void SetBookMark(INT32 iBookId)
|
|
{
|
|
// find first empty spot, set to iBookId
|
|
INT32 iCounter=0;
|
|
if(iBookId!=-2)
|
|
{
|
|
while(LaptopSaveInfo.iBookMarkList[iCounter]!=-1)
|
|
{
|
|
// move trhough list until empty
|
|
if( LaptopSaveInfo.iBookMarkList[iCounter]==iBookId)
|
|
{
|
|
// found it, return
|
|
return;
|
|
}
|
|
iCounter++;
|
|
}
|
|
LaptopSaveInfo.iBookMarkList[iCounter]=iBookId;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
BOOLEAN RemoveBookMark( INT32 iBookId )
|
|
{
|
|
INT32 iCounter=0;
|
|
|
|
//Loop through the bookmarks to get to the desired bookmark
|
|
while( LaptopSaveInfo.iBookMarkList[iCounter] != iBookId )
|
|
{
|
|
iCounter++;
|
|
}
|
|
|
|
//Did we find the right one?
|
|
if( LaptopSaveInfo.iBookMarkList[iCounter] == iBookId )
|
|
{
|
|
//Reset it
|
|
LaptopSaveInfo.iBookMarkList[iCounter] = -1;
|
|
|
|
//return true signifing that we found it
|
|
return( TRUE );
|
|
}
|
|
|
|
//nope, we didnt find it.
|
|
return( FALSE );
|
|
}
|
|
|
|
|
|
|
|
BOOLEAN LoadBookmark()
|
|
{
|
|
VOBJECT_DESC VObjectDesc;
|
|
|
|
|
|
// grab download bars too
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\downloadtop.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiDOWNLOADTOP));
|
|
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\downloadmid.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiDOWNLOADMID));
|
|
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\downloadbot.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiDOWNLOADBOT));
|
|
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\bookmarktop.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiBOOKTOP));
|
|
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\bookmarkmiddle.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiBOOKMID));
|
|
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\webpages.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiBOOKMARK));
|
|
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\hilite.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiBOOKHIGH));
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\Bookmarkbottom.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiBOOKBOT));
|
|
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
|
|
|
|
void DisplayBookMarks( void )
|
|
{
|
|
// will look at bookmarklist and set accordingly
|
|
INT32 iCounter=1;
|
|
// load images
|
|
HVOBJECT hLapTopIconHandle;
|
|
// laptop icons
|
|
INT16 sX, sY;
|
|
|
|
|
|
// check if we are maximizing or minimizing.. if so, do not display
|
|
if( ( fMaximizingProgram == TRUE ) || ( fMinizingProgram == TRUE ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
// font stuff
|
|
SetFont(BOOK_FONT);
|
|
SetFontForeground(FONT_WHITE);
|
|
SetFontBackground(FONT_BLACK);
|
|
SetFontShadow(NO_SHADOW);
|
|
|
|
// set buffer
|
|
SetFontDestBuffer(FRAME_BUFFER ,BOOK_X, BOOK_TOP_Y,BOOK_X+BOOK_WIDTH-10,SCREEN_HEIGHT, FALSE);
|
|
|
|
|
|
// blt in book mark background
|
|
while( LaptopSaveInfo.iBookMarkList[iCounter-1]!=-1)
|
|
{
|
|
|
|
if(iHighLightBookLine==iCounter-1)
|
|
{
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKHIGH);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,BOOK_X, BOOK_TOP_Y+ ( iCounter*( BOOK_HEIGHT + 6 ) )+ 6, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
else
|
|
{
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKMARK);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,BOOK_X, BOOK_TOP_Y+ ( iCounter*( BOOK_HEIGHT + 6 ) )+ 6, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
|
|
if( iHighLightBookLine==iCounter-1 )
|
|
{
|
|
// blit in text
|
|
SetFontForeground(FONT_WHITE);
|
|
SetFontBackground(FONT_BLACK);
|
|
}
|
|
else
|
|
{
|
|
// blit in text
|
|
SetFontForeground(FONT_BLACK);
|
|
SetFontBackground(FONT_BLACK);
|
|
}
|
|
|
|
FindFontCenterCoordinates(BOOK_X + 3, (UINT16)(BOOK_TOP_Y+2+(iCounter*( BOOK_HEIGHT + 6 ) ) + 6),BOOK_WIDTH - 3,BOOK_HEIGHT+6, pBookMarkStrings[ LaptopSaveInfo.iBookMarkList[iCounter-1] ] , BOOK_FONT, &sX, &sY );
|
|
|
|
mprintf(sX, sY,pBookMarkStrings[ LaptopSaveInfo.iBookMarkList[iCounter-1] ] );
|
|
iCounter++;
|
|
}
|
|
|
|
// blit one more
|
|
|
|
|
|
if(iHighLightBookLine==iCounter-1)
|
|
{
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKHIGH);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,BOOK_X, BOOK_TOP_Y+ ( iCounter*( BOOK_HEIGHT + 6 ) )+ 6, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
else
|
|
{
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKMARK);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,BOOK_X, BOOK_TOP_Y+ ( iCounter*( BOOK_HEIGHT + 6 ) )+ 6, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
|
|
if( iHighLightBookLine==iCounter-1 )
|
|
{
|
|
// blit in text
|
|
SetFontForeground(FONT_WHITE);
|
|
SetFontBackground(FONT_BLACK);
|
|
}
|
|
else
|
|
{
|
|
// blit in text
|
|
SetFontForeground(FONT_BLACK);
|
|
SetFontBackground(FONT_BLACK);
|
|
}
|
|
FindFontCenterCoordinates(BOOK_X + 3, (UINT16)(BOOK_TOP_Y+2+(iCounter*( BOOK_HEIGHT + 6 ) ) + 6),BOOK_WIDTH - 3,BOOK_HEIGHT+6,pBookMarkStrings[ CANCEL_STRING ] , BOOK_FONT, &sX, &sY );
|
|
mprintf(sX, sY,pBookMarkStrings[CANCEL_STRING] );
|
|
iCounter++;
|
|
|
|
SetFontDestBuffer(FRAME_BUFFER,0,0,SCREEN_WIDTH, SCREEN_HEIGHT, FALSE);
|
|
|
|
//GetVideoObject(&hLapTopIconHandle, guiBOOKBOT);
|
|
//BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,BOOK_X, 6+BOOK_TOP_Y+(iCounter)*BOOK_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
/*if(fNewWWWDisplay)
|
|
ScrollDisplayText(BOOK_TOP_Y+2+((iCounter)*BOOK_HEIGHT)+6);
|
|
else
|
|
*/ InvalidateRegion(BOOK_X,BOOK_TOP_Y+((iCounter)*BOOK_HEIGHT)+12, BOOK_X+BOOK_WIDTH, BOOK_TOP_Y+((iCounter+1)*BOOK_HEIGHT)+16);
|
|
SetFontShadow(DEFAULT_SHADOW);
|
|
|
|
|
|
InvalidateRegion(BOOK_X, BOOK_TOP_Y, BOOK_X+BOOK_WIDTH, BOOK_TOP_Y+(iCounter + 6 )*BOOK_HEIGHT+16);
|
|
return;
|
|
}
|
|
|
|
void RemoveBookmark(INT32 iBookId)
|
|
{
|
|
INT32 iCounter=0;
|
|
if(iBookId==-2)
|
|
return;
|
|
while( LaptopSaveInfo.iBookMarkList[iCounter]!=-1)
|
|
{
|
|
if( LaptopSaveInfo.iBookMarkList[iCounter]==iBookId)
|
|
{
|
|
// found, move everyone back
|
|
for(iCounter=iCounter+1; iCounter <MAX_BOOKMARKS; iCounter++)
|
|
{
|
|
LaptopSaveInfo.iBookMarkList[iCounter-1] = LaptopSaveInfo.iBookMarkList[iCounter];
|
|
}
|
|
return;
|
|
}
|
|
iCounter++;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void DeleteBookmark()
|
|
{
|
|
DeleteVideoObjectFromIndex(guiBOOKTOP);
|
|
DeleteVideoObjectFromIndex(guiBOOKMID);
|
|
DeleteVideoObjectFromIndex(guiBOOKHIGH);
|
|
DeleteVideoObjectFromIndex(guiBOOKBOT);
|
|
DeleteVideoObjectFromIndex(guiBOOKMARK);
|
|
|
|
DeleteVideoObjectFromIndex(guiDOWNLOADTOP);
|
|
DeleteVideoObjectFromIndex(guiDOWNLOADMID);
|
|
DeleteVideoObjectFromIndex(guiDOWNLOADBOT);
|
|
|
|
|
|
}
|
|
|
|
void ScrollDisplayText(INT32 iY)
|
|
{
|
|
static INT32 iBaseTime=0;
|
|
static INT16 sCurX;
|
|
INT16 sY=(INT16)iY;
|
|
|
|
// if we are just enetering, set basetime to current clock value
|
|
if(iBaseTime==0)
|
|
iBaseTime=GetJA2Clock();
|
|
|
|
// long enough time has passed, shift string
|
|
if(GetJA2Clock()-iBaseTime >SCROLL_DIFFERENCE)
|
|
{
|
|
|
|
// reset postion, if scrolled too far
|
|
if(sCurX <SCROLL_MIN)
|
|
sCurX=BOOK_X+BOOK_WIDTH;
|
|
else
|
|
sCurX--;
|
|
|
|
// reset base time
|
|
iBaseTime=GetJA2Clock();
|
|
}
|
|
|
|
// font stuff
|
|
SetFontDestBuffer(FRAME_BUFFER, BOOK_X,0,BOOK_X+BOOK_WIDTH,SCREEN_HEIGHT, FALSE);
|
|
|
|
SetFontForeground(FONT_BLACK);
|
|
SetFontBackground(FONT_BLACK);
|
|
|
|
// print the scrolling string for bookmarks
|
|
mprintf(sCurX, iY, pBookmarkTitle[1]);
|
|
|
|
// reset buffer
|
|
SetFontDestBuffer(FRAME_BUFFER, 0,0,SCREEN_WIDTH, SCREEN_HEIGHT, FALSE);
|
|
|
|
// invalidate region
|
|
InvalidateRegion(BOOK_X,iY, BOOK_X+BOOK_WIDTH, iY+BOOK_HEIGHT);
|
|
|
|
}
|
|
void CreateBookMarkMouseRegions()
|
|
{
|
|
INT32 iCounter=0;
|
|
// creates regions based on number of entries
|
|
while( LaptopSaveInfo.iBookMarkList[iCounter] != -1 )
|
|
{
|
|
MSYS_DefineRegion(&gBookmarkMouseRegions[iCounter],(INT16)BOOK_X, (UINT16)(BOOK_TOP_Y+((iCounter+1)*(BOOK_HEIGHT+6))+6), BOOK_X+BOOK_WIDTH ,(INT16)(BOOK_TOP_Y+((iCounter+2)*(BOOK_HEIGHT+6))+6),
|
|
MSYS_PRIORITY_HIGHEST - 2,CURSOR_LAPTOP_SCREEN, BookmarkMvtCallBack, BookmarkCallBack );
|
|
//MSYS_AddRegion(&gBookmarkMouseRegions[iCounter]);
|
|
MSYS_SetRegionUserData(&gBookmarkMouseRegions[iCounter],0,iCounter);
|
|
MSYS_SetRegionUserData(&gBookmarkMouseRegions[iCounter],1,0);
|
|
|
|
//Create the regions help text
|
|
CreateBookMarkHelpText( &gBookmarkMouseRegions[iCounter], LaptopSaveInfo.iBookMarkList[iCounter] );
|
|
|
|
iCounter++;
|
|
}
|
|
// now add one more
|
|
// for the cancel button
|
|
MSYS_DefineRegion(&gBookmarkMouseRegions[iCounter],(INT16)BOOK_X, (UINT16)(BOOK_TOP_Y+((iCounter+1)*(BOOK_HEIGHT+6))+6), BOOK_X+BOOK_WIDTH ,(INT16)(BOOK_TOP_Y+((iCounter+2)*(BOOK_HEIGHT+6))+6),
|
|
MSYS_PRIORITY_HIGHEST - 2,CURSOR_LAPTOP_SCREEN, BookmarkMvtCallBack, BookmarkCallBack );
|
|
//MSYS_AddRegion(&gBookmarkMouseRegions[iCounter]);
|
|
MSYS_SetRegionUserData(&gBookmarkMouseRegions[iCounter],0,iCounter);
|
|
MSYS_SetRegionUserData(&gBookmarkMouseRegions[iCounter],1,CANCEL_STRING );
|
|
}
|
|
|
|
void DeleteBookmarkRegions()
|
|
{
|
|
INT32 iCounter=0;
|
|
//deletes bookmark regions
|
|
while( LaptopSaveInfo.iBookMarkList[iCounter] != -1 )
|
|
{
|
|
MSYS_RemoveRegion(&gBookmarkMouseRegions[iCounter]);
|
|
iCounter++;
|
|
}
|
|
|
|
|
|
// now one for the cancel
|
|
MSYS_RemoveRegion(&gBookmarkMouseRegions[iCounter]);
|
|
|
|
|
|
}
|
|
|
|
void CreateDestoryBookMarkRegions( void )
|
|
{
|
|
// checks to see if a bookmark needs to be created or destroyed
|
|
static BOOLEAN fOldShowBookmarks=FALSE;
|
|
|
|
if((gfShowBookmarks)&&(!fOldShowBookmarks))
|
|
{
|
|
// create regions
|
|
CreateBookMarkMouseRegions( );
|
|
fOldShowBookmarks=TRUE;
|
|
}
|
|
else if((!gfShowBookmarks)&&(fOldShowBookmarks))
|
|
{
|
|
// destroy bookmarks
|
|
DeleteBookmarkRegions( );
|
|
fOldShowBookmarks=FALSE;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void BookmarkCallBack(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
INT32 iCount;
|
|
|
|
if (iReason & MSYS_CALLBACK_REASON_INIT)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// we are in process of loading
|
|
if( fLoadPendingFlag == TRUE )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(iReason & MSYS_CALLBACK_REASON_LBUTTON_UP)
|
|
{
|
|
iCount=MSYS_GetRegionUserData(pRegion, 0);
|
|
if( MSYS_GetRegionUserData(pRegion, 1) == CANCEL_STRING )
|
|
{
|
|
gfShowBookmarks = FALSE;
|
|
fReDrawScreenFlag = TRUE;
|
|
}
|
|
if( LaptopSaveInfo.iBookMarkList[iCount] != -1 )
|
|
{
|
|
GoToWebPage( LaptopSaveInfo.iBookMarkList[iCount] );
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
else if(iReason & MSYS_CALLBACK_REASON_RBUTTON_UP)
|
|
{
|
|
iCount=MSYS_GetRegionUserData(pRegion, 0);
|
|
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void GoToWebPage(INT32 iPageId )
|
|
{
|
|
|
|
// WANNE 2: disabled rain sound when laptop is displayed
|
|
////if it is raining, popup a warning first saying connection time may be slow
|
|
//if( IsItRaining() )
|
|
//{
|
|
// if( giRainDelayInternetSite == -1 )
|
|
// {
|
|
// DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, pErrorStrings[4], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, InternetRainDelayMessageBoxCallBack );
|
|
// giRainDelayInternetSite = iPageId;
|
|
// return;
|
|
// }
|
|
//}
|
|
//else
|
|
// giRainDelayInternetSite = -1;
|
|
|
|
switch(iPageId)
|
|
{
|
|
case AIM_BOOKMARK:
|
|
guiCurrentWWWMode=LAPTOP_MODE_AIM;
|
|
guiCurrentLaptopMode=LAPTOP_MODE_AIM;
|
|
|
|
// do we have to have a World Wide Wait
|
|
if( LaptopSaveInfo.fVisitedBookmarkAlready[ AIM_BOOKMARK ] == FALSE )
|
|
{
|
|
// reset flag and set load pending flag
|
|
LaptopSaveInfo.fVisitedBookmarkAlready[ AIM_BOOKMARK ] = TRUE;
|
|
fLoadPendingFlag = TRUE;
|
|
}
|
|
else
|
|
{
|
|
// fast reload
|
|
fLoadPendingFlag = TRUE;
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
break;
|
|
case BOBBYR_BOOKMARK:
|
|
guiCurrentWWWMode=LAPTOP_MODE_BOBBY_R;
|
|
guiCurrentLaptopMode=LAPTOP_MODE_BOBBY_R;
|
|
|
|
// do we have to have a World Wide Wait
|
|
if( LaptopSaveInfo.fVisitedBookmarkAlready[ BOBBYR_BOOKMARK ] == FALSE )
|
|
{
|
|
// reset flag and set load pending flag
|
|
LaptopSaveInfo.fVisitedBookmarkAlready[ BOBBYR_BOOKMARK ] = TRUE;
|
|
fLoadPendingFlag = TRUE;
|
|
}
|
|
else
|
|
{
|
|
// fast reload
|
|
fLoadPendingFlag = TRUE;
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
break;
|
|
case( IMP_BOOKMARK ):
|
|
guiCurrentWWWMode=LAPTOP_MODE_CHAR_PROFILE;
|
|
guiCurrentLaptopMode=LAPTOP_MODE_CHAR_PROFILE;
|
|
|
|
// do we have to have a World Wide Wait
|
|
if( LaptopSaveInfo.fVisitedBookmarkAlready[ IMP_BOOKMARK ] == FALSE )
|
|
{
|
|
// reset flag and set load pending flag
|
|
LaptopSaveInfo.fVisitedBookmarkAlready[ IMP_BOOKMARK ] = TRUE;
|
|
fLoadPendingFlag = TRUE;
|
|
}
|
|
else
|
|
{
|
|
// fast reload
|
|
fLoadPendingFlag = TRUE;
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
iCurrentImpPage = IMP_HOME_PAGE;
|
|
break;
|
|
case( MERC_BOOKMARK ):
|
|
|
|
//if the mercs server has gone down, but hasnt come up yet
|
|
if( LaptopSaveInfo.fMercSiteHasGoneDownYet == TRUE && LaptopSaveInfo.fFirstVisitSinceServerWentDown == FALSE )
|
|
{
|
|
guiCurrentWWWMode = LAPTOP_MODE_BROKEN_LINK;
|
|
guiCurrentLaptopMode = LAPTOP_MODE_BROKEN_LINK;
|
|
}
|
|
else
|
|
{
|
|
guiCurrentWWWMode = LAPTOP_MODE_MERC;
|
|
guiCurrentLaptopMode = LAPTOP_MODE_MERC;
|
|
}
|
|
|
|
|
|
// do we have to have a World Wide Wait
|
|
if( LaptopSaveInfo.fVisitedBookmarkAlready[ MERC_BOOKMARK ] == FALSE )
|
|
{
|
|
// reset flag and set load pending flag
|
|
LaptopSaveInfo.fVisitedBookmarkAlready[ MERC_BOOKMARK ] = TRUE;
|
|
fLoadPendingFlag = TRUE;
|
|
}
|
|
else
|
|
{
|
|
// fast reload
|
|
fLoadPendingFlag = TRUE;
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
break;
|
|
case( FUNERAL_BOOKMARK ):
|
|
guiCurrentWWWMode=LAPTOP_MODE_FUNERAL;
|
|
guiCurrentLaptopMode=LAPTOP_MODE_FUNERAL;
|
|
|
|
// do we have to have a World Wide Wait
|
|
if( LaptopSaveInfo.fVisitedBookmarkAlready[ FUNERAL_BOOKMARK ] == FALSE )
|
|
{
|
|
// reset flag and set load pending flag
|
|
LaptopSaveInfo.fVisitedBookmarkAlready[ FUNERAL_BOOKMARK ] = TRUE;
|
|
fLoadPendingFlag = TRUE;
|
|
}
|
|
else
|
|
{
|
|
// fast reload
|
|
fLoadPendingFlag = TRUE;
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
break;
|
|
case( FLORIST_BOOKMARK ):
|
|
guiCurrentWWWMode=LAPTOP_MODE_FLORIST;
|
|
guiCurrentLaptopMode=LAPTOP_MODE_FLORIST;
|
|
|
|
// do we have to have a World Wide Wait
|
|
if( LaptopSaveInfo.fVisitedBookmarkAlready[ FLORIST_BOOKMARK ] == FALSE )
|
|
{
|
|
// reset flag and set load pending flag
|
|
LaptopSaveInfo.fVisitedBookmarkAlready[ FLORIST_BOOKMARK ] = TRUE;
|
|
fLoadPendingFlag = TRUE;
|
|
}
|
|
else
|
|
{
|
|
// fast reload
|
|
fLoadPendingFlag = TRUE;
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
break;
|
|
|
|
case( INSURANCE_BOOKMARK ):
|
|
guiCurrentWWWMode=LAPTOP_MODE_INSURANCE;
|
|
guiCurrentLaptopMode=LAPTOP_MODE_INSURANCE;
|
|
|
|
// do we have to have a World Wide Wait
|
|
if( LaptopSaveInfo.fVisitedBookmarkAlready[ INSURANCE_BOOKMARK ] == FALSE )
|
|
{
|
|
// reset flag and set load pending flag
|
|
LaptopSaveInfo.fVisitedBookmarkAlready[ INSURANCE_BOOKMARK ] = TRUE;
|
|
fLoadPendingFlag = TRUE;
|
|
}
|
|
else
|
|
{
|
|
// fast reload
|
|
fLoadPendingFlag = TRUE;
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
break;
|
|
|
|
}
|
|
|
|
gfShowBookmarks=FALSE;
|
|
fReDrawScreenFlag=TRUE;
|
|
return;
|
|
}
|
|
|
|
void BookmarkMvtCallBack(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
if (iReason == MSYS_CALLBACK_REASON_MOVE)
|
|
{
|
|
iHighLightBookLine=MSYS_GetRegionUserData(pRegion, 0);
|
|
}
|
|
if (iReason == MSYS_CALLBACK_REASON_LOST_MOUSE )
|
|
{
|
|
iHighLightBookLine=-1;
|
|
}
|
|
}
|
|
|
|
|
|
BOOLEAN LoadLoadPending( void )
|
|
{
|
|
// function will load the load pending graphics
|
|
// reuse bookmark
|
|
// load graph window and bar
|
|
VOBJECT_DESC VObjectDesc;
|
|
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\graphwindow.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiGRAPHWINDOW));
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\graphsegment.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &guiGRAPHBAR));
|
|
|
|
|
|
return (TRUE);
|
|
}
|
|
|
|
BOOLEAN DisplayLoadPending( void )
|
|
{
|
|
// this function will display the load pending and return if the load is done
|
|
static INT32 iBaseTime=0;
|
|
static INT32 iTotalTime=0;
|
|
INT32 iTempTime=0;
|
|
INT32 iCounter=0;
|
|
INT32 iDifference=0;
|
|
HVOBJECT hLapTopIconHandle;
|
|
INT32 iLoadTime;
|
|
INT32 iUnitTime;
|
|
UINT32 uiTempLaptopMode = 0;
|
|
UINT32 uiTempWWWMode = 0;
|
|
INT16 sXPosition = 0, sYPosition = 0;
|
|
|
|
// if merc webpage, make it longer
|
|
//TEMP disables the loadpending
|
|
if( gfTemporaryDisablingOfLoadPendingFlag )
|
|
{
|
|
iLoadTime=1;
|
|
iUnitTime=1;
|
|
}
|
|
else
|
|
{
|
|
if( ( fFastLoadFlag == TRUE )&&( fConnectingToSubPage == TRUE ) )
|
|
{
|
|
iUnitTime=FASTEST_UNIT_TIME;
|
|
}
|
|
else if( fFastLoadFlag == TRUE )
|
|
{
|
|
iUnitTime=FAST_UNIT_TIME;
|
|
}
|
|
else if( fConnectingToSubPage == TRUE )
|
|
{
|
|
iUnitTime=ALMOST_FAST_UNIT_TIME;
|
|
}
|
|
|
|
//if we are connecting the MERC site, and the MERC site hasnt yet moved to their new site, have the sloooww wait
|
|
else if(guiCurrentLaptopMode == LAPTOP_MODE_MERC && !LaptopSaveInfo.fMercSiteHasGoneDownYet )
|
|
{
|
|
iUnitTime=LONG_UNIT_TIME;
|
|
}
|
|
else
|
|
{
|
|
iUnitTime=UNIT_TIME;
|
|
}
|
|
|
|
iUnitTime += WWaitDelayIncreasedIfRaining( iUnitTime );
|
|
|
|
iLoadTime = iUnitTime * 30;
|
|
}
|
|
|
|
|
|
// we are now waiting on a web page to download, reset counter
|
|
if(!fLoadPendingFlag)
|
|
{
|
|
fDoneLoadPending = FALSE;
|
|
fFastLoadFlag = FALSE;
|
|
fConnectingToSubPage = FALSE;
|
|
iBaseTime=0;
|
|
iTotalTime=0;
|
|
return (FALSE);
|
|
}
|
|
// if total time is exceeded, return (TRUE)
|
|
if(iBaseTime==0)
|
|
{
|
|
iBaseTime=GetJA2Clock();
|
|
}
|
|
|
|
|
|
|
|
if(iTotalTime >= iLoadTime)
|
|
{
|
|
// done loading, redraw screen
|
|
fLoadPendingFlag = FALSE;
|
|
fFastLoadFlag = FALSE;
|
|
iTotalTime=0;
|
|
iBaseTime=0;
|
|
fDoneLoadPending = TRUE;
|
|
fConnectingToSubPage = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
iDifference=GetJA2Clock()-iBaseTime;
|
|
|
|
|
|
|
|
// difference has been long enough or we are redrawing the screen
|
|
if( (iDifference) > iUnitTime)
|
|
{
|
|
// LONG ENOUGH TIME PASSED
|
|
iCounter=0;
|
|
iBaseTime=GetJA2Clock();
|
|
iTotalTime+=iDifference;
|
|
iTempTime=iTotalTime;
|
|
|
|
}
|
|
|
|
// new mail, don't redraw
|
|
if( fNewMailFlag == TRUE )
|
|
{
|
|
return( FALSE );
|
|
}
|
|
|
|
RenderButtons( );
|
|
|
|
// RenderFastHelp( );
|
|
// RenderButtonsFastHelp( );
|
|
|
|
|
|
// display top middle and bottom of box
|
|
GetVideoObject(&hLapTopIconHandle, guiDOWNLOADTOP);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,DOWNLOAD_X, DOWNLOAD_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
GetVideoObject(&hLapTopIconHandle, guiDOWNLOADMID);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,DOWNLOAD_X, DOWNLOAD_Y+DOWN_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
GetVideoObject(&hLapTopIconHandle, guiDOWNLOADBOT);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,DOWNLOAD_X, DOWNLOAD_Y+2*DOWN_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
GetVideoObject(&hLapTopIconHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 1,DOWNLOAD_X + 4, DOWNLOAD_Y + 1, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
|
|
// font stuff
|
|
SetFont(DOWNLOAD_FONT);
|
|
SetFontForeground(FONT_WHITE);
|
|
SetFontBackground(FONT_BLACK);
|
|
SetFontShadow(NO_SHADOW);
|
|
|
|
// reload or download?
|
|
if( fFastLoadFlag == TRUE )
|
|
{
|
|
FindFontCenterCoordinates( iScreenWidthOffset + 328,
|
|
iScreenHeightOffset, 118, 0, pDownloadString[1], DOWNLOAD_FONT, &sXPosition, &sYPosition );
|
|
|
|
// display download string
|
|
mprintf( sXPosition, DOWN_STRING_Y,pDownloadString[1]);
|
|
}
|
|
else
|
|
{
|
|
FindFontCenterCoordinates( iScreenWidthOffset + 328,
|
|
iScreenHeightOffset, /*iScreenWidthOffset + */118, 0, pDownloadString[ 0 ], DOWNLOAD_FONT, &sXPosition, &sYPosition );
|
|
|
|
// display download string
|
|
mprintf( sXPosition, DOWN_STRING_Y,pDownloadString[0]);
|
|
}
|
|
|
|
// get and blt the window video object
|
|
GetVideoObject(&hLapTopIconHandle, guiGRAPHWINDOW);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,LAPTOP_WINDOW_X, LAPTOP_WINDOW_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
// check to see if we are only updating screen, but not passed a new element in the load pending display
|
|
|
|
|
|
iTempTime = iTotalTime;
|
|
// decide how many time units are to be displayed, based on amount of time passed
|
|
while(iTempTime >0)
|
|
{
|
|
GetVideoObject(&hLapTopIconHandle, guiGRAPHBAR);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,LAPTOP_BAR_X+(UNIT_WIDTH*iCounter), LAPTOP_BAR_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
iTempTime-=iUnitTime;
|
|
iCounter++;
|
|
|
|
// have we gone too far?
|
|
if( iCounter > 30 )
|
|
{
|
|
iTempTime = 0;
|
|
}
|
|
}
|
|
|
|
InvalidateRegion(DOWNLOAD_X, DOWNLOAD_Y, DOWNLOAD_X + 150, DOWNLOAD_Y + 100);
|
|
|
|
// re draw screen and new mail warning box
|
|
SetFontShadow(DEFAULT_SHADOW);
|
|
|
|
MarkButtonsDirty( );
|
|
|
|
DisableMercSiteButton();
|
|
|
|
return (FALSE);
|
|
}
|
|
|
|
void DeleteLoadPending( void )
|
|
{
|
|
// this funtion will delete the load pending graphics
|
|
// reuse bookmark
|
|
DeleteVideoObjectFromIndex(guiGRAPHBAR);
|
|
DeleteVideoObjectFromIndex(guiGRAPHWINDOW);
|
|
return;
|
|
}
|
|
|
|
void BtnErrorCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
{
|
|
}
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if(btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
fErrorFlag=FALSE;
|
|
|
|
}
|
|
}
|
|
}
|
|
void CreateDestroyErrorButton( void )
|
|
{
|
|
static BOOLEAN fOldErrorFlag=FALSE;
|
|
if((fErrorFlag)&&(!fOldErrorFlag))
|
|
{
|
|
// create inventory button
|
|
fOldErrorFlag=TRUE;
|
|
|
|
// load image and create error confirm button
|
|
giErrorButtonImage[0]=LoadButtonImage( "LAPTOP\\errorbutton.sti" ,-1,0,-1,1,-1 );
|
|
giErrorButton[0]= QuickCreateButton( giErrorButtonImage[0], ERROR_X+ERROR_BTN_X, ERROR_BTN_Y,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnErrorCallback);
|
|
|
|
// define the cursor
|
|
SetButtonCursor(giErrorButton[0], CURSOR_LAPTOP_SCREEN);
|
|
|
|
// define the screen mask
|
|
MSYS_DefineRegion(&pScreenMask,0, 0,SCREEN_WIDTH, SCREEN_HEIGHT,
|
|
MSYS_PRIORITY_HIGHEST-3,CURSOR_LAPTOP_SCREEN, MSYS_NO_CALLBACK, LapTopScreenCallBack);
|
|
|
|
// add region
|
|
MSYS_AddRegion(&pScreenMask);
|
|
}
|
|
else if((!fErrorFlag)&&(fOldErrorFlag))
|
|
{
|
|
// done dsiplaying, get rid of button and screen mask
|
|
fOldErrorFlag=FALSE;
|
|
|
|
RemoveButton( giErrorButton[0] );
|
|
UnloadButtonImage( giErrorButtonImage[0] );
|
|
|
|
MSYS_RemoveRegion(&pScreenMask);
|
|
|
|
// re draw screen
|
|
fReDrawScreenFlag=TRUE;
|
|
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
void DisplayErrorBox( void )
|
|
{
|
|
// this function will display the error graphic
|
|
HVOBJECT hLapTopIconHandle;
|
|
if(!fErrorFlag)
|
|
return;
|
|
|
|
// get and blt top portion
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKTOP);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,ERROR_X, ERROR_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
// middle * 5
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKMID);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,ERROR_X, ERROR_Y+BOOK_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKMID);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,ERROR_X, ERROR_Y+2*BOOK_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKMID);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,ERROR_X, ERROR_Y+3*BOOK_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKMID);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,ERROR_X, ERROR_Y+4*BOOK_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKMID);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,ERROR_X, ERROR_Y+5*BOOK_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
// the bottom
|
|
GetVideoObject(&hLapTopIconHandle, guiBOOKBOT);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,ERROR_X, ERROR_Y+6*BOOK_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
// font stuff
|
|
SetFont(ERROR_TITLE_FONT);
|
|
SetFontForeground(FONT_WHITE);
|
|
SetFontBackground(FONT_BLACK);
|
|
SetFontShadow(NO_SHADOW);
|
|
|
|
// print title
|
|
mprintf(ERROR_TITLE_X, ERROR_TITLE_Y, pErrorStrings[0]);
|
|
SetFontForeground(FONT_BLACK);
|
|
SetFont(ERROR_FONT);
|
|
|
|
// display error string
|
|
DisplayWrappedString(ERROR_X+ERROR_TEXT_X,(UINT16)(ERROR_Y+ERROR_TEXT_Y+DisplayWrappedString(ERROR_X+ERROR_TEXT_X, ERROR_Y+ERROR_TEXT_Y, BOOK_WIDTH, 2,ERROR_FONT,FONT_BLACK, pErrorStrings[1],FONT_BLACK,FALSE,CENTER_JUSTIFIED)), BOOK_WIDTH, 2,ERROR_FONT,FONT_BLACK, pErrorStrings[2],FONT_BLACK,FALSE,CENTER_JUSTIFIED);
|
|
|
|
SetFontShadow(DEFAULT_SHADOW);
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void DrawTextOnErrorButton()
|
|
{
|
|
// draws text on error button
|
|
SetFont(ERROR_TITLE_FONT);
|
|
SetFontForeground(FONT_BLACK);
|
|
SetFontBackground(FONT_BLACK);
|
|
SetFontShadow(NO_SHADOW);
|
|
mprintf(ERROR_X+ERROR_BTN_X+ERROR_BTN_TEXT_X, ERROR_BTN_Y+ERROR_BTN_TEXT_Y, pErrorStrings[3]);
|
|
SetFontShadow(DEFAULT_SHADOW);
|
|
|
|
InvalidateRegion(ERROR_X, ERROR_Y, ERROR_X+BOOK_WIDTH, ERROR_Y+6*BOOK_HEIGHT);
|
|
return;
|
|
}
|
|
|
|
// This function is called every time the laptop is FIRST initialized, ie whenever the laptop is loaded. It calls
|
|
// various init function in the laptop pages that need to be inited when the laptop is just loaded.
|
|
void EnterLaptopInitLaptopPages()
|
|
{
|
|
EnterInitAimMembers();
|
|
EnterInitAimArchives();
|
|
EnterInitAimPolicies();
|
|
EnterInitAimHistory();
|
|
EnterInitFloristGallery();
|
|
EnterInitInsuranceInfo();
|
|
EnterInitBobbyRayOrder();
|
|
EnterInitMercSite();
|
|
|
|
|
|
// init sub pages for WW Wait
|
|
InitIMPSubPageList( );
|
|
}
|
|
|
|
|
|
void CheckMarkButtonsDirtyFlag( void )
|
|
{
|
|
// this function checks the fMarkButtonsDirtyFlag, if true, mark buttons dirty
|
|
if( fMarkButtonsDirtyFlag )
|
|
{
|
|
// flag set, mark buttons and reset
|
|
MarkButtonsDirty( );
|
|
fMarkButtonsDirtyFlag = FALSE;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void PostButtonRendering( void )
|
|
{
|
|
// this function is in place to allow for post button rendering
|
|
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case LAPTOP_MODE_AIM:
|
|
// RenderCharProfilePostButton( );
|
|
break;
|
|
|
|
case LAPTOP_MODE_AIM_MEMBERS:
|
|
RenderAIMMembersTopLevel();
|
|
break;
|
|
|
|
}
|
|
return;
|
|
}
|
|
|
|
void ShouldNewMailBeDisplayed()
|
|
{
|
|
|
|
BOOLEAN fReDraw=FALSE;
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case LAPTOP_MODE_AIM_MEMBERS:
|
|
fReDraw = DisableNewMailMessage();
|
|
break;
|
|
}
|
|
/*
|
|
if(fReDraw)
|
|
{
|
|
RenderLapTopImage();
|
|
HighLightRegion(giCurrentRegion);
|
|
RenderLaptop();
|
|
}
|
|
*/
|
|
}
|
|
|
|
|
|
void DisplayPlayersBalanceToDate( void )
|
|
{
|
|
// print players balance to date
|
|
CHAR16 sString[ 100 ];
|
|
INT16 sX, sY;
|
|
|
|
// initialize string
|
|
memset( sString, 0, sizeof( sString ) );
|
|
|
|
// font stuff
|
|
SetFont( FONT10ARIAL);
|
|
SetFontForeground( 142 );
|
|
SetFontShadow(NO_SHADOW);
|
|
|
|
// parse straigth number
|
|
swprintf( sString, L"%d", LaptopSaveInfo.iCurrentBalance );
|
|
|
|
// put in commas, then dollar sign
|
|
InsertCommasForDollarFigure( sString );
|
|
InsertDollarSignInToString( sString );
|
|
|
|
// get center
|
|
FindFontCenterCoordinates( (INT16)LAPTOP_ICON_TEXT_X, iScreenHeightOffset, (INT16)(LAPTOP_ICON_TEXT_WIDTH) ,(INT16)(LAPTOP_ICON_TEXT_HEIGHT), sString, LAPTOPICONFONT, &sX, &sY );
|
|
|
|
// gprintfdirty( sX , LAPTOP_ICON_TEXT_FINANCIAL_Y + 10, sString );
|
|
// printf it!
|
|
if( ButtonList[ gLaptopButton[ 5 ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
mprintf( sX + 5, LAPTOP_ICON_TEXT_FINANCIAL_Y + 10 + 5, sString);
|
|
}
|
|
else
|
|
{
|
|
mprintf( sX, LAPTOP_ICON_TEXT_FINANCIAL_Y + 10, sString);
|
|
}
|
|
|
|
// reset shadow
|
|
SetFontShadow(DEFAULT_SHADOW);
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void CheckIfNewWWWW( void )
|
|
{
|
|
// if no www mode, set new www flag..until new www mode that is not 0
|
|
|
|
if( guiCurrentWWWMode == LAPTOP_MODE_NONE )
|
|
{
|
|
fNewWWW = TRUE;
|
|
}
|
|
else
|
|
{
|
|
fNewWWW = FALSE;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void HandleLapTopESCKey( void )
|
|
{
|
|
|
|
// will handle esc key events, since handling depends on state of laptop
|
|
|
|
|
|
if( fNewMailFlag )
|
|
{
|
|
// get rid of new mail warning box
|
|
fNewMailFlag=FALSE;
|
|
CreateDestroyNewMailButton();
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLaptop( );
|
|
}
|
|
else if(fDeleteMailFlag)
|
|
{
|
|
// get rid of delete mail box
|
|
fDeleteMailFlag=FALSE;
|
|
CreateDestroyDeleteNoticeMailButton();
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLaptop( );
|
|
}
|
|
else if( fErrorFlag )
|
|
{
|
|
// get rid of error warning box
|
|
fErrorFlag=FALSE;
|
|
CreateDestroyErrorButton();
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLaptop( );
|
|
}
|
|
|
|
else if( gfShowBookmarks )
|
|
{
|
|
// get rid of bookmarks
|
|
gfShowBookmarks = FALSE;
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLapTopImage( );
|
|
RenderLaptop( );
|
|
}
|
|
else
|
|
{
|
|
// leave
|
|
fExitingLaptopFlag = TRUE;
|
|
HandleExit( );
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void HandleRightButtonUpEvent( void )
|
|
{
|
|
|
|
// will handle the right button up event
|
|
if( fNewMailFlag )
|
|
{
|
|
// get rid of new mail warning box
|
|
fNewMailFlag=FALSE;
|
|
CreateDestroyNewMailButton();
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLaptop( );
|
|
}
|
|
else if(fDeleteMailFlag)
|
|
{
|
|
// get rid of delete mail box
|
|
fDeleteMailFlag=FALSE;
|
|
CreateDestroyDeleteNoticeMailButton();
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLaptop( );
|
|
}
|
|
else if( fErrorFlag )
|
|
{
|
|
// get rid of error warning box
|
|
fErrorFlag=FALSE;
|
|
CreateDestroyErrorButton();
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLaptop( );
|
|
}
|
|
|
|
else if( gfShowBookmarks )
|
|
{
|
|
// get rid of bookmarks
|
|
gfShowBookmarks = FALSE;
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLapTopImage( );
|
|
RenderLaptop( );
|
|
}
|
|
else if( fDisplayMessageFlag )
|
|
{
|
|
fDisplayMessageFlag = FALSE;
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLapTopImage( );
|
|
RenderLaptop( );
|
|
|
|
}
|
|
else if( fShowBookmarkInfo )
|
|
{
|
|
fShowBookmarkInfo = FALSE;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void HandleLeftButtonUpEvent( void )
|
|
{
|
|
|
|
// will handle the left button up event
|
|
|
|
if( gfShowBookmarks )
|
|
{
|
|
// get rid of bookmarks
|
|
gfShowBookmarks = FALSE;
|
|
|
|
// force redraw
|
|
fReDrawScreenFlag = TRUE;
|
|
RenderLapTopImage( );
|
|
RenderLaptop( );
|
|
}
|
|
else if( fShowBookmarkInfo )
|
|
{
|
|
fShowBookmarkInfo = FALSE;
|
|
}
|
|
}
|
|
|
|
void LapTopScreenCallBack(MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
|
|
if (iReason & MSYS_CALLBACK_REASON_INIT)
|
|
{
|
|
|
|
return;
|
|
}
|
|
|
|
if( iReason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
HandleLeftButtonUpEvent( );
|
|
return;
|
|
}
|
|
if(iReason & MSYS_CALLBACK_REASON_RBUTTON_UP)
|
|
{
|
|
HandleRightButtonUpEvent( );
|
|
return;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
BOOLEAN DoLapTopMessageBox( UINT8 ubStyle, const STR16 zString, UINT32 uiExitScreen, UINT8 ubFlags, MSGBOX_CALLBACK ReturnCallback )
|
|
{
|
|
SGPRect pCenteringRect= {LAPTOP_SCREEN_UL_X, LAPTOP_SCREEN_UL_Y, LAPTOP_SCREEN_LR_X, LAPTOP_SCREEN_LR_Y };
|
|
|
|
|
|
// reset exit mode
|
|
fExitDueToMessageBox = TRUE;
|
|
|
|
|
|
|
|
// do message box and return
|
|
iLaptopMessageBox = DoMessageBox( ubStyle, zString, uiExitScreen, ( UINT8 ) ( ubFlags| MSG_BOX_FLAG_USE_CENTERING_RECT ), ReturnCallback, &pCenteringRect );
|
|
|
|
|
|
|
|
// send back return state
|
|
return( ( iLaptopMessageBox != -1 ) );
|
|
}
|
|
|
|
|
|
BOOLEAN DoLapTopSystemMessageBoxWithRect( UINT8 ubStyle, STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback, SGPRect *pCenteringRect )
|
|
{
|
|
// reset exit mode
|
|
fExitDueToMessageBox = TRUE;
|
|
|
|
// do message box and return
|
|
iLaptopMessageBox = DoMessageBox( ubStyle, zString, uiExitScreen, ( UINT16 ) ( usFlags| MSG_BOX_FLAG_USE_CENTERING_RECT ), ReturnCallback, pCenteringRect );
|
|
|
|
// send back return state
|
|
return( ( iLaptopMessageBox != -1 ) );
|
|
}
|
|
|
|
BOOLEAN DoLapTopSystemMessageBox( UINT8 ubStyle, STR16 zString, UINT32 uiExitScreen, UINT16 usFlags, MSGBOX_CALLBACK ReturnCallback )
|
|
{
|
|
SGPRect CenteringRect= {iScreenWidthOffset, iScreenHeightOffset,
|
|
iScreenWidthOffset + 640, INV_INTERFACE_START_Y };
|
|
|
|
|
|
// reset exit mode
|
|
fExitDueToMessageBox = TRUE;
|
|
|
|
// do message box and return
|
|
iLaptopMessageBox = DoMessageBox( ubStyle, zString, uiExitScreen, ( UINT16 ) ( usFlags| MSG_BOX_FLAG_USE_CENTERING_RECT ), ReturnCallback, &CenteringRect );
|
|
|
|
// send back return state
|
|
return( ( iLaptopMessageBox != -1 ) );
|
|
}
|
|
|
|
|
|
|
|
//places a tileable pattern down
|
|
BOOLEAN WebPageTileBackground(UINT8 ubNumX, UINT8 ubNumY, UINT16 usWidth, UINT16 usHeight, UINT32 uiBackgroundIdentifier)
|
|
{
|
|
HVOBJECT hBackGroundHandle;
|
|
UINT16 x,y, uiPosX, uiPosY;
|
|
|
|
// Blt the Wood background
|
|
GetVideoObject(&hBackGroundHandle, uiBackgroundIdentifier);
|
|
|
|
uiPosY = LAPTOP_SCREEN_WEB_UL_Y;
|
|
for(y=0; y<ubNumY; y++)
|
|
{
|
|
uiPosX = LAPTOP_SCREEN_UL_X;
|
|
for(x=0; x<ubNumX; x++)
|
|
{
|
|
BltVideoObject(FRAME_BUFFER, hBackGroundHandle, 0,uiPosX, uiPosY, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
uiPosX += usWidth;
|
|
}
|
|
uiPosY += usHeight;
|
|
}
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
BOOLEAN InitTitleBarMaximizeGraphics( UINT32 uiBackgroundGraphic, STR16 pTitle, UINT32 uiIconGraphic, UINT16 usIconGraphicIndex )
|
|
{
|
|
VSURFACE_DESC vs_desc;
|
|
HVOBJECT hImageHandle;
|
|
|
|
Assert( uiBackgroundGraphic );
|
|
|
|
// Create a background video surface to blt the title bar onto
|
|
vs_desc.fCreateFlags = VSURFACE_CREATE_DEFAULT | VSURFACE_SYSTEM_MEM_USAGE;
|
|
vs_desc.usWidth = LAPTOP_TITLE_BAR_WIDTH;
|
|
vs_desc.usHeight = LAPTOP_TITLE_BAR_HEIGHT;
|
|
vs_desc.ubBitDepth = 16;
|
|
CHECKF( AddVideoSurface( &vs_desc, &guiTitleBarSurface) );
|
|
|
|
//blit the toolbar grapgucs onto the surface
|
|
GetVideoObject(&hImageHandle, uiBackgroundGraphic);
|
|
BltVideoObject(guiTitleBarSurface, hImageHandle, 0,0,0, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
//blit th icon onto the tool bar
|
|
GetVideoObject(&hImageHandle, uiIconGraphic);
|
|
BltVideoObject(guiTitleBarSurface, hImageHandle, usIconGraphicIndex, LAPTOP_TITLE_BAR_ICON_OFFSET_X, LAPTOP_TITLE_BAR_ICON_OFFSET_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
SetFontDestBuffer( guiTitleBarSurface, 0, 0, vs_desc.usWidth, vs_desc.usHeight , FALSE);
|
|
DrawTextToScreen(pTitle, LAPTOP_TITLE_BAR_TEXT_OFFSET_X, LAPTOP_TITLE_BAR_TEXT_OFFSET_Y, 0, FONT14ARIAL, FONT_MCOLOR_WHITE, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED );
|
|
SetFontDestBuffer( FRAME_BUFFER, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, FALSE);
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
BOOLEAN DisplayTitleBarMaximizeGraphic(BOOLEAN fForward, BOOLEAN fInit, UINT16 usTopLeftX, UINT16 usTopLeftY, UINT16 usTopRightX )
|
|
{
|
|
static INT8 ubCount;
|
|
INT16 sPosX, sPosY, sPosRightX, sPosBottomY, sWidth, sHeight;
|
|
SGPRect SrcRect;
|
|
SGPRect DestRect;
|
|
static SGPRect LastRect;
|
|
FLOAT dTemp;
|
|
|
|
|
|
if( fInit )
|
|
{
|
|
if( gfTitleBarSurfaceAlreadyActive )
|
|
return(FALSE);
|
|
|
|
gfTitleBarSurfaceAlreadyActive=TRUE;
|
|
if( fForward )
|
|
{
|
|
ubCount = 1;
|
|
}
|
|
else
|
|
{
|
|
ubCount = NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS - 1;
|
|
}
|
|
}
|
|
|
|
dTemp = (LAPTOP_TITLE_BAR_TOP_LEFT_X - usTopLeftX) / (FLOAT)NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS;
|
|
sPosX = (INT16)(usTopLeftX + dTemp * ubCount);
|
|
|
|
dTemp = (LAPTOP_TITLE_BAR_TOP_RIGHT_X - usTopRightX) / (FLOAT)NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS;
|
|
sPosRightX = (INT16)(usTopRightX + dTemp * ubCount);
|
|
|
|
dTemp = ( LAPTOP_TITLE_BAR_TOP_LEFT_Y - usTopLeftY ) / (FLOAT)NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS;
|
|
sPosY = (INT16)(usTopLeftY + dTemp * ubCount);
|
|
|
|
|
|
sPosBottomY = LAPTOP_TITLE_BAR_HEIGHT;
|
|
|
|
SrcRect.iLeft = 0;
|
|
SrcRect.iTop = 0;
|
|
SrcRect.iRight = LAPTOP_TITLE_BAR_WIDTH;
|
|
SrcRect.iBottom = LAPTOP_TITLE_BAR_HEIGHT;
|
|
|
|
//if its the last fram, bit the tittle bar to the final position
|
|
if( ubCount == NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS)
|
|
{
|
|
DestRect.iLeft = LAPTOP_TITLE_BAR_TOP_LEFT_X;
|
|
DestRect.iTop = LAPTOP_TITLE_BAR_TOP_LEFT_Y;
|
|
DestRect.iRight = LAPTOP_TITLE_BAR_TOP_RIGHT_X;
|
|
DestRect.iBottom = DestRect.iTop + sPosBottomY;
|
|
}
|
|
else
|
|
{
|
|
DestRect.iLeft = sPosX;
|
|
DestRect.iTop = sPosY;
|
|
DestRect.iRight = sPosRightX;
|
|
DestRect.iBottom = DestRect.iTop + sPosBottomY;
|
|
}
|
|
|
|
|
|
|
|
if( fForward )
|
|
{
|
|
//Restore the old rect
|
|
if( ubCount > 1 )
|
|
{
|
|
sWidth = (UINT16)(LastRect.iRight - LastRect.iLeft);
|
|
sHeight = (UINT16)(LastRect.iBottom - LastRect.iTop);
|
|
BlitBufferToBuffer(guiSAVEBUFFER, guiRENDERBUFFER, (UINT16)LastRect.iLeft, (UINT16)LastRect.iTop, sWidth, sHeight);
|
|
}
|
|
|
|
//Save rectangle
|
|
if( ubCount > 0 )
|
|
{
|
|
sWidth = (UINT16)(DestRect.iRight - DestRect.iLeft);
|
|
sHeight = (UINT16)(DestRect.iBottom - DestRect.iTop);
|
|
BlitBufferToBuffer(guiRENDERBUFFER, guiSAVEBUFFER, (UINT16)DestRect.iLeft, (UINT16)DestRect.iTop, sWidth, sHeight);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Restore the old rect
|
|
if( ubCount < NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS - 1 )
|
|
{
|
|
sWidth = (UINT16)(LastRect.iRight - LastRect.iLeft);
|
|
sHeight = (UINT16)(LastRect.iBottom - LastRect.iTop);
|
|
BlitBufferToBuffer(guiSAVEBUFFER, guiRENDERBUFFER, (UINT16)LastRect.iLeft, (UINT16)LastRect.iTop, sWidth, sHeight);
|
|
}
|
|
|
|
//Save rectangle
|
|
if( ubCount < NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS )
|
|
{
|
|
sWidth = (UINT16)(DestRect.iRight - DestRect.iLeft);
|
|
sHeight = (UINT16)(DestRect.iBottom - DestRect.iTop);
|
|
BlitBufferToBuffer(guiRENDERBUFFER, guiSAVEBUFFER, (UINT16)DestRect.iLeft, (UINT16)DestRect.iTop, sWidth, sHeight);
|
|
}
|
|
}
|
|
|
|
|
|
BltStretchVideoSurface(FRAME_BUFFER, guiTitleBarSurface, 0, 0, VO_BLT_SRCTRANSPARENCY, &SrcRect, &DestRect );
|
|
|
|
InvalidateRegion(DestRect.iLeft,DestRect.iTop, DestRect.iRight, DestRect.iBottom);
|
|
InvalidateRegion(LastRect.iLeft,LastRect.iTop, LastRect.iRight, LastRect.iBottom);
|
|
|
|
LastRect = DestRect;
|
|
|
|
if( fForward )
|
|
{
|
|
if( ubCount == NUMBER_OF_LAPTOP_TITLEBAR_ITERATIONS)
|
|
{
|
|
gfTitleBarSurfaceAlreadyActive=FALSE;
|
|
return(TRUE);
|
|
}
|
|
else
|
|
{
|
|
ubCount++;
|
|
return(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( ubCount == 0)
|
|
{
|
|
gfTitleBarSurfaceAlreadyActive=FALSE;
|
|
return(TRUE);
|
|
}
|
|
else
|
|
{
|
|
ubCount--;
|
|
return(FALSE);
|
|
}
|
|
}
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
void RemoveTitleBarMaximizeGraphics()
|
|
{
|
|
DeleteVideoSurfaceFromIndex( guiTitleBarSurface );
|
|
}
|
|
|
|
|
|
void HandleSlidingTitleBar( void )
|
|
{
|
|
if( ( fMaximizingProgram == FALSE ) && ( fMinizingProgram == FALSE ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if( fExitingLaptopFlag )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if( fMaximizingProgram )
|
|
{
|
|
switch( bProgramBeingMaximized )
|
|
{
|
|
case( LAPTOP_PROGRAM_MAILER ):
|
|
|
|
fMaximizingProgram = !DisplayTitleBarMaximizeGraphic( TRUE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 66, iScreenWidthOffset + 49 );
|
|
|
|
//fMaximizingProgram = !DisplayTitleBarMaximizeGraphic( TRUE, fInitTitle, 29, 66, 29 + 20 );
|
|
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = TRUE;
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
|
|
case( LAPTOP_PROGRAM_FILES ):
|
|
fMaximizingProgram = !DisplayTitleBarMaximizeGraphic( TRUE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 120, iScreenWidthOffset + 29 + 20 );
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = TRUE;
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_FINANCES ):
|
|
fMaximizingProgram = !DisplayTitleBarMaximizeGraphic( TRUE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 226, iScreenWidthOffset + 29 + 20 );
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = TRUE;
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_PERSONNEL ):
|
|
fMaximizingProgram = !DisplayTitleBarMaximizeGraphic( TRUE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 194, iScreenWidthOffset + 29 + 20 );
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = TRUE;
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_HISTORY ):
|
|
fMaximizingProgram = !DisplayTitleBarMaximizeGraphic( TRUE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 162, iScreenWidthOffset + 29 + 20 );
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = TRUE;
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_WEB_BROWSER ):
|
|
fMaximizingProgram = !DisplayTitleBarMaximizeGraphic( TRUE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 99, iScreenWidthOffset + 29 + 20 );
|
|
if( fMaximizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = TRUE;
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
}
|
|
|
|
MarkButtonsDirty( );
|
|
}
|
|
else
|
|
{
|
|
// minimizing
|
|
switch( bProgramBeingMaximized )
|
|
{
|
|
case( LAPTOP_PROGRAM_MAILER ):
|
|
fMinizingProgram = !DisplayTitleBarMaximizeGraphic( FALSE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 66, iScreenWidthOffset + 29 + 20 );
|
|
if( fMinizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_FILES ):
|
|
fMinizingProgram = !DisplayTitleBarMaximizeGraphic( FALSE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 130, iScreenWidthOffset + 29 + 20 );
|
|
if( fMinizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_FINANCES ):
|
|
fMinizingProgram = !DisplayTitleBarMaximizeGraphic( FALSE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 226, iScreenWidthOffset + 29 + 20 );
|
|
if( fMinizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_PERSONNEL ):
|
|
fMinizingProgram = !DisplayTitleBarMaximizeGraphic( FALSE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 194, iScreenWidthOffset + 29 + 20 );
|
|
if( fMinizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_HISTORY ):
|
|
fMinizingProgram = !DisplayTitleBarMaximizeGraphic( FALSE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 162 , iScreenWidthOffset + 29 + 20 );
|
|
if( fMinizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
case( LAPTOP_PROGRAM_WEB_BROWSER ):
|
|
fMinizingProgram = !DisplayTitleBarMaximizeGraphic( FALSE, fInitTitle, iScreenWidthOffset + 29,
|
|
iScreenHeightOffset + 99 , iScreenWidthOffset + 29 + 20 );
|
|
if( fMinizingProgram == FALSE )
|
|
{
|
|
RemoveTitleBarMaximizeGraphics();
|
|
EnterNewLaptopMode();
|
|
fEnteredNewLapTopDueToHandleSlidingBars = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
// reset init
|
|
fInitTitle = FALSE;
|
|
}
|
|
|
|
|
|
void ShowLights( void )
|
|
{
|
|
// will show lights depending on state
|
|
HVOBJECT hHandle;
|
|
|
|
if( fPowerLightOn == TRUE )
|
|
{
|
|
GetVideoObject( &hHandle, guiLIGHTS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 0,iScreenWidthOffset + 44, iScreenHeightOffset + 466, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
else
|
|
{
|
|
GetVideoObject( &hHandle, guiLIGHTS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 1,iScreenWidthOffset + 44, iScreenHeightOffset + 466, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
|
|
if( fHardDriveLightOn == TRUE )
|
|
{
|
|
GetVideoObject( &hHandle, guiLIGHTS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 0, iScreenWidthOffset + 88, iScreenHeightOffset + 466, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
else
|
|
{
|
|
GetVideoObject( &hHandle, guiLIGHTS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 1, iScreenWidthOffset + 88, iScreenHeightOffset + 466, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
void FlickerHDLight( void )
|
|
{
|
|
static INT32 iBaseTime = 0;
|
|
static INT32 iTotalDifference = 0;
|
|
INT32 iDifference = 0;
|
|
|
|
if( fLoadPendingFlag == TRUE )
|
|
{
|
|
fFlickerHD = TRUE;
|
|
}
|
|
|
|
if( fFlickerHD == FALSE )
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
if( iBaseTime == 0 )
|
|
{
|
|
iBaseTime = GetJA2Clock( );
|
|
}
|
|
|
|
iDifference = GetJA2Clock( ) - iBaseTime;
|
|
|
|
if( ( iTotalDifference > HD_FLICKER_TIME ) && ( fLoadPendingFlag == FALSE ) )
|
|
{
|
|
iBaseTime = GetJA2Clock( );
|
|
fHardDriveLightOn = FALSE;
|
|
iBaseTime = 0;
|
|
iTotalDifference = 0;
|
|
fFlickerHD = FALSE;
|
|
InvalidateRegion(iScreenWidthOffset + 88, iScreenHeightOffset + 466,
|
|
iScreenWidthOffset + 102, iScreenHeightOffset + 477 );
|
|
return;
|
|
}
|
|
|
|
if( iDifference > FLICKER_TIME )
|
|
{
|
|
iTotalDifference += iDifference;
|
|
|
|
if( fLoadPendingFlag == TRUE )
|
|
{
|
|
iTotalDifference = 0;
|
|
}
|
|
|
|
if( ( Random( 2 ) ) == 0 )
|
|
{
|
|
fHardDriveLightOn = TRUE;
|
|
}
|
|
else
|
|
{
|
|
fHardDriveLightOn = FALSE;
|
|
}
|
|
InvalidateRegion(iScreenWidthOffset + 88, iScreenHeightOffset + 466,
|
|
iScreenWidthOffset + 102, iScreenHeightOffset + 477 );
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
BOOLEAN ExitLaptopDone( void )
|
|
{
|
|
// check if this is the first time, to reset counter
|
|
|
|
static BOOLEAN fOldLeaveLaptopState = FALSE;
|
|
static INT32 iBaseTime = 0;
|
|
INT32 iDifference = 0;
|
|
|
|
if( fOldLeaveLaptopState == FALSE )
|
|
{
|
|
fOldLeaveLaptopState = TRUE;
|
|
iBaseTime = GetJA2Clock( );
|
|
}
|
|
|
|
fPowerLightOn = FALSE;
|
|
|
|
|
|
InvalidateRegion(iScreenWidthOffset + 44, iScreenHeightOffset + 466,
|
|
iScreenWidthOffset + 58, iScreenHeightOffset + 477 );
|
|
// get the current difference
|
|
iDifference = GetJA2Clock( ) - iBaseTime;
|
|
|
|
|
|
// did we wait long enough?
|
|
if( iDifference > EXIT_LAPTOP_DELAY_TIME )
|
|
{
|
|
iBaseTime = 0;
|
|
fOldLeaveLaptopState = FALSE;
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void CreateDestroyMinimizeButtonForCurrentMode( void )
|
|
{
|
|
// will create the minimize button
|
|
|
|
static BOOLEAN fAlreadyCreated = FALSE;
|
|
// check to see if created, if so, do nothing
|
|
|
|
|
|
// check current mode
|
|
if( ( guiCurrentLaptopMode == LAPTOP_MODE_NONE )&&( guiPreviousLaptopMode != LAPTOP_MODE_NONE ) )
|
|
{
|
|
fCreateMinimizeButton = FALSE;
|
|
}
|
|
else if( ( guiCurrentLaptopMode != LAPTOP_MODE_NONE ) )
|
|
{
|
|
fCreateMinimizeButton = TRUE;
|
|
}
|
|
else if( ( guiPreviousLaptopMode != LAPTOP_MODE_NONE ) )
|
|
{
|
|
fCreateMinimizeButton = FALSE;
|
|
}
|
|
|
|
// leaving laptop, get rid of the button
|
|
if( fExitingLaptopFlag == TRUE )
|
|
{
|
|
fCreateMinimizeButton = FALSE;
|
|
}
|
|
|
|
|
|
if( ( fAlreadyCreated == FALSE ) && ( fCreateMinimizeButton == TRUE ) )
|
|
{
|
|
// not created, create
|
|
fAlreadyCreated = TRUE;
|
|
CreateMinimizeButtonForCurrentMode( );
|
|
CreateMinimizeRegionsForLaptopProgramIcons( );
|
|
}
|
|
else if( ( fAlreadyCreated == TRUE ) && ( fCreateMinimizeButton == FALSE ) )
|
|
{
|
|
// created and must be destroyed
|
|
fAlreadyCreated = FALSE;
|
|
DestroyMinimizeButtonForCurrentMode( );
|
|
DestroyMinimizeRegionsForLaptopProgramIcons( );
|
|
|
|
}
|
|
else
|
|
{
|
|
// do nothing
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void CreateMinimizeButtonForCurrentMode( void )
|
|
{
|
|
// create minimize button
|
|
gLaptopMinButtonImage[0]= LoadButtonImage( "LAPTOP\\x.sti" ,-1,0,-1,1,-1 );
|
|
gLaptopMinButton[0] = QuickCreateButton( gLaptopMinButtonImage[0], iScreenWidthOffset + 590, iScreenHeightOffset + 30,
|
|
BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
|
(GUI_CALLBACK)BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)LaptopMinimizeProgramButtonCallback);
|
|
|
|
SetButtonCursor(gLaptopMinButton[0], CURSOR_LAPTOP_SCREEN);
|
|
return;
|
|
}
|
|
|
|
void DestroyMinimizeButtonForCurrentMode( void )
|
|
{
|
|
// destroy minimize button
|
|
RemoveButton( gLaptopMinButton[ 0 ] );
|
|
UnloadButtonImage( gLaptopMinButtonImage[ 0 ] );
|
|
|
|
}
|
|
|
|
|
|
void LaptopMinimizeProgramButtonCallback(GUI_BUTTON *btn,INT32 reason)
|
|
{
|
|
if (!(btn->uiFlags & BUTTON_ENABLED))
|
|
return;
|
|
if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN )
|
|
{
|
|
if(!(btn->uiFlags & BUTTON_CLICKED_ON))
|
|
{
|
|
btn->uiFlags|=(BUTTON_CLICKED_ON);
|
|
}
|
|
}
|
|
else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
|
|
{
|
|
if (btn->uiFlags & BUTTON_CLICKED_ON)
|
|
{
|
|
btn->uiFlags&=~(BUTTON_CLICKED_ON);
|
|
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case( LAPTOP_MODE_EMAIL ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_MAILER ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[ 0 ], guiTITLEBARICONS, 0 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_FILES ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_FILES ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[5], guiTITLEBARICONS, 2 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_FINANCES ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_FINANCES ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[ 2 ], guiTITLEBARICONS, 5 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_HISTORY ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_HISTORY ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[4], guiTITLEBARICONS, 4 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_PERSONNEL ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_PERSONNEL ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[3], guiTITLEBARICONS, 3 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_NONE ):
|
|
// nothing
|
|
break;
|
|
default:
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_WEB_BROWSER ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[ 7 ], guiTITLEBARICONS, 1 );
|
|
SetCurrentToLastProgramOpened( );
|
|
gfShowBookmarks = FALSE;
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
INT32 FindLastProgramStillOpen( void )
|
|
{
|
|
INT32 iLowestValue = 6;
|
|
INT32 iLowestValueProgram = 6;
|
|
INT32 iCounter =0;
|
|
|
|
// returns ID of last program open and not minimized
|
|
for( iCounter = 0; iCounter < 6; iCounter++ )
|
|
{
|
|
if( gLaptopProgramStates[ iCounter ] != LAPTOP_PROGRAM_MINIMIZED )
|
|
{
|
|
if( gLaptopProgramQueueList[ iCounter ] < iLowestValue )
|
|
{
|
|
iLowestValue = gLaptopProgramQueueList[ iCounter ];
|
|
iLowestValueProgram = iCounter;
|
|
}
|
|
}
|
|
}
|
|
|
|
return ( iLowestValueProgram );
|
|
}
|
|
|
|
void UpdateListToReflectNewProgramOpened( INT32 iOpenedProgram )
|
|
{
|
|
INT32 iCounter = 0;
|
|
|
|
// will update queue of opened programs to show thier states
|
|
// set iOpenedProgram to 1, and update others
|
|
|
|
// increment everyone
|
|
for( iCounter = 0; iCounter < 6; iCounter++ )
|
|
{
|
|
gLaptopProgramQueueList[ iCounter ]++;
|
|
}
|
|
|
|
gLaptopProgramQueueList[ iOpenedProgram ] = 1;
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void InitLaptopOpenQueue( void )
|
|
{
|
|
|
|
INT32 iCounter = 0;
|
|
|
|
// set evereyone to 1
|
|
for( iCounter = 0; iCounter < 6; iCounter++ )
|
|
{
|
|
gLaptopProgramQueueList[ iCounter ] = 1;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
void SetCurrentToLastProgramOpened( void )
|
|
{
|
|
guiCurrentLaptopMode = LAPTOP_MODE_NONE;
|
|
|
|
switch( FindLastProgramStillOpen( ) )
|
|
{
|
|
case(LAPTOP_PROGRAM_HISTORY ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_HISTORY;
|
|
break;
|
|
case( LAPTOP_PROGRAM_MAILER ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_EMAIL;
|
|
break;
|
|
case( LAPTOP_PROGRAM_PERSONNEL ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_PERSONNEL;
|
|
break;
|
|
case( LAPTOP_PROGRAM_FINANCES ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FINANCES;
|
|
break;
|
|
case( LAPTOP_PROGRAM_FILES ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FILES;
|
|
break;
|
|
case( LAPTOP_PROGRAM_WEB_BROWSER ):
|
|
// last www mode
|
|
if( guiCurrentWWWMode != 0 )
|
|
{
|
|
guiCurrentLaptopMode = guiCurrentWWWMode;
|
|
}
|
|
else
|
|
{
|
|
guiCurrentLaptopMode = LAPTOP_MODE_WWW;
|
|
}
|
|
//gfShowBookmarks = TRUE;
|
|
fShowBookmarkInfo = TRUE;
|
|
break;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
void BlitTitleBarIcons( void )
|
|
{
|
|
|
|
HVOBJECT hHandle;
|
|
// will blit the icons for the title bar of the program we are in
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case( LAPTOP_MODE_HISTORY ):
|
|
GetVideoObject(&hHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 4,LAPTOP_TITLE_ICONS_X, LAPTOP_TITLE_ICONS_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
break;
|
|
case( LAPTOP_MODE_EMAIL ):
|
|
GetVideoObject(&hHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 0,LAPTOP_TITLE_ICONS_X, LAPTOP_TITLE_ICONS_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
break;
|
|
case( LAPTOP_MODE_PERSONNEL ):
|
|
GetVideoObject(&hHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 3,LAPTOP_TITLE_ICONS_X, LAPTOP_TITLE_ICONS_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
break;
|
|
case( LAPTOP_MODE_FINANCES ):
|
|
GetVideoObject(&hHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 5,LAPTOP_TITLE_ICONS_X, LAPTOP_TITLE_ICONS_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
break;
|
|
case( LAPTOP_MODE_FILES ):
|
|
GetVideoObject(&hHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 2,LAPTOP_TITLE_ICONS_X, LAPTOP_TITLE_ICONS_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
break;
|
|
case( LAPTOP_MODE_NONE ):
|
|
// do nothing
|
|
break;
|
|
default:
|
|
// www pages
|
|
GetVideoObject(&hHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 1,LAPTOP_TITLE_ICONS_X, LAPTOP_TITLE_ICONS_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
BOOLEAN DrawDeskTopBackground( void )
|
|
{
|
|
HVSURFACE hSrcVSurface;
|
|
UINT32 uiDestPitchBYTES;
|
|
UINT32 uiSrcPitchBYTES;
|
|
UINT16 *pDestBuf;
|
|
UINT8 *pSrcBuf;
|
|
SGPRect clip;
|
|
|
|
// set clipping region
|
|
// WANNE (if i change this values to SCREEN_WIDTH, ... than an exception is thrown in the vobject_blitters.cpp)
|
|
// -> no changes to clip structure
|
|
clip.iLeft = 0;
|
|
clip.iRight = 506;
|
|
clip.iTop = 0;
|
|
clip.iBottom = 427;
|
|
|
|
|
|
// get surfaces
|
|
pDestBuf = (UINT16*)LockVideoSurface( FRAME_BUFFER, &uiDestPitchBYTES);
|
|
CHECKF( GetVideoSurface( &hSrcVSurface, guiDESKTOP) );
|
|
pSrcBuf = LockVideoSurface( guiDESKTOP, &uiSrcPitchBYTES);
|
|
|
|
|
|
// blit .pcx for the background onto desktop
|
|
Blt8BPPDataSubTo16BPPBuffer( pDestBuf, uiDestPitchBYTES, hSrcVSurface, pSrcBuf,uiSrcPitchBYTES, LAPTOP_SCREEN_UL_X - 2, LAPTOP_SCREEN_UL_Y - 3, &clip);
|
|
|
|
|
|
// release surfaces
|
|
UnLockVideoSurface( guiDESKTOP );
|
|
UnLockVideoSurface( FRAME_BUFFER );
|
|
|
|
return ( TRUE );
|
|
}
|
|
|
|
|
|
BOOLEAN LoadDesktopBackground( void )
|
|
{
|
|
// load desktop background
|
|
VSURFACE_DESC vs_desc;
|
|
|
|
vs_desc.fCreateFlags = VSURFACE_CREATE_FROMFILE | VSURFACE_SYSTEM_MEM_USAGE;
|
|
GetMLGFilename( vs_desc.ImageFile, MLG_DESKTOP );
|
|
CHECKF(AddVideoSurface(&vs_desc, &guiDESKTOP));
|
|
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
void DeleteDesktopBackground( void )
|
|
{
|
|
// delete desktop
|
|
|
|
DeleteVideoSurfaceFromIndex(guiDESKTOP);
|
|
return;
|
|
}
|
|
|
|
|
|
void PrintBalance( void )
|
|
{
|
|
CHAR16 pString[ 32 ];
|
|
// UINT16 usX, usY;
|
|
|
|
SetFont( FONT10ARIAL );
|
|
SetFontForeground( FONT_BLACK );
|
|
SetFontBackground( FONT_BLACK );
|
|
SetFontShadow( NO_SHADOW );
|
|
|
|
swprintf(pString, L"%d", LaptopSaveInfo.iCurrentBalance);
|
|
InsertCommasForDollarFigure( pString );
|
|
InsertDollarSignInToString( pString );
|
|
|
|
if( ButtonList[ gLaptopButton[ 5 ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
mprintf(iScreenWidthOffset + 48, iScreenHeightOffset + 273,pString);
|
|
}
|
|
else
|
|
{
|
|
mprintf(iScreenWidthOffset + 47, iScreenHeightOffset + 272,pString);
|
|
}
|
|
|
|
|
|
SetFontShadow( DEFAULT_SHADOW );
|
|
}
|
|
|
|
|
|
void PrintNumberOnTeam( void )
|
|
{
|
|
CHAR16 pString[ 32 ];
|
|
SOLDIERTYPE *pSoldier, *pTeamSoldier;
|
|
INT32 cnt=0;
|
|
INT32 iCounter=0;
|
|
UINT16 usPosX, usPosY, usFontHeight, usStrLength;
|
|
|
|
|
|
SetFont( FONT10ARIAL );
|
|
SetFontForeground( FONT_BLACK );
|
|
SetFontBackground( FONT_BLACK );
|
|
SetFontShadow( NO_SHADOW );
|
|
|
|
// grab number on team
|
|
pSoldier = MercPtrs[0];
|
|
|
|
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ pSoldier->bTeam ].bLastID; cnt++, pTeamSoldier++)
|
|
{
|
|
pTeamSoldier = MercPtrs[ cnt ];
|
|
|
|
if( ( pTeamSoldier->bActive)&&( !( pTeamSoldier->uiStatusFlags & SOLDIER_VEHICLE ) ) )
|
|
{
|
|
iCounter++;
|
|
}
|
|
}
|
|
|
|
|
|
swprintf( pString, L"%s %d",pPersonnelString[ 0 ], iCounter );
|
|
|
|
usFontHeight = GetFontHeight( FONT10ARIAL );
|
|
usStrLength = StringPixLength( pString, FONT10ARIAL );
|
|
|
|
if( ButtonList[ gLaptopButton[ 3 ] ]->uiFlags & BUTTON_CLICKED_ON )
|
|
{
|
|
usPosX = iScreenWidthOffset + 48;
|
|
usPosY = iScreenHeightOffset + 225;
|
|
}
|
|
else
|
|
{
|
|
usPosX = iScreenWidthOffset + 47;
|
|
usPosY = iScreenHeightOffset + 224;
|
|
}
|
|
|
|
mprintf( usPosX, usPosY, pString);
|
|
|
|
SetFontShadow( DEFAULT_SHADOW );
|
|
}
|
|
|
|
void PrintDate( void )
|
|
{
|
|
SetFont( FONT10ARIAL );
|
|
SetFontForeground( FONT_BLACK );
|
|
SetFontBackground( FONT_BLACK );
|
|
|
|
SetFontShadow( NO_SHADOW );
|
|
|
|
mprintf( iScreenWidthOffset + 30 + (70 - StringPixLength( WORLDTIMESTR, FONT10ARIAL ))/2, iScreenHeightOffset + 433, WORLDTIMESTR );
|
|
|
|
SetFontShadow( DEFAULT_SHADOW );
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void DisplayTaskBarIcons()
|
|
{
|
|
HVOBJECT hPixHandle;
|
|
|
|
GetVideoObject(&hPixHandle, guiTITLEBARICONS);
|
|
|
|
if( fNewFilesInFileViewer )
|
|
{
|
|
//display the files icon, if there is any
|
|
BltVideoObject(FRAME_BUFFER, hPixHandle, 7,LAPTOP__NEW_FILE_ICON_X, LAPTOP__NEW_FILE_ICON_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
|
|
//display the email icon, if there is email
|
|
if( fUnReadMailFlag )
|
|
{
|
|
BltVideoObject(FRAME_BUFFER, hPixHandle, 6, LAPTOP__NEW_EMAIL_ICON_X, LAPTOP__NEW_EMAIL_ICON_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
}
|
|
|
|
|
|
void HandleKeyBoardShortCutsForLapTop( UINT16 usEvent, UINT32 usParam, UINT16 usKeyState )
|
|
{
|
|
|
|
// will handle keyboard shortcuts for the laptop ... to be added to later
|
|
|
|
if( ( fExitingLaptopFlag == TRUE )||( fTabHandled ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ( (usEvent == KEY_DOWN ) && (usParam == ESC ) )
|
|
{
|
|
// esc hit, check to see if boomark list is shown, if so, get rid of it, otherwise, leave
|
|
HandleLapTopESCKey( );
|
|
}
|
|
else if( (usEvent == KEY_DOWN ) && ( usParam == TAB ) )
|
|
{
|
|
if(usKeyState & CTRL_DOWN )
|
|
{
|
|
HandleShiftAltTabKeyInLaptop( );
|
|
}
|
|
else
|
|
{
|
|
HandleAltTabKeyInLaptop( );
|
|
}
|
|
|
|
fTabHandled = TRUE;
|
|
}
|
|
|
|
#ifdef JA2TESTVERSION
|
|
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == 'm' ) )
|
|
{
|
|
if( ( usKeyState & ALT_DOWN ) )
|
|
{
|
|
CheatToGetAll5Merc();
|
|
}
|
|
}
|
|
#endif
|
|
|
|
else if( (usEvent == KEY_DOWN )&& ( usParam == 'b' ) )
|
|
{
|
|
if( CHEATER_CHEAT_LEVEL( ) )
|
|
{
|
|
if( ( usKeyState & ALT_DOWN ) )
|
|
LaptopSaveInfo.fBobbyRSiteCanBeAccessed = TRUE;
|
|
else if( usKeyState & CTRL_DOWN )
|
|
{
|
|
guiCurrentLaptopMode = LAPTOP_MODE_BROKEN_LINK;
|
|
}
|
|
}
|
|
}
|
|
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == 'x' ) )
|
|
{
|
|
if( ( usKeyState & ALT_DOWN ) )
|
|
{
|
|
HandleShortCutExitState( );
|
|
}
|
|
//LeaveLapTopScreen( );
|
|
}
|
|
#ifdef JA2TESTVERSION
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == 'q' ))
|
|
{
|
|
//if we dont currently have mercs on the team, hire some
|
|
if( NumberOfMercsOnPlayerTeam() == 0 )
|
|
{
|
|
UINT8 ubRand = (UINT8) Random( 2 ) + 2;
|
|
TempHiringOfMercs( ubRand, FALSE );
|
|
// QuickStartGame( );
|
|
}
|
|
MarkButtonsDirty( );
|
|
fExitingLaptopFlag = TRUE;
|
|
}
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == 's' ))
|
|
{
|
|
if( ( usKeyState & ALT_DOWN ) )
|
|
{
|
|
SetBookMark( AIM_BOOKMARK );
|
|
SetBookMark( BOBBYR_BOOKMARK );
|
|
SetBookMark( IMP_BOOKMARK );
|
|
SetBookMark( MERC_BOOKMARK );
|
|
SetBookMark( FUNERAL_BOOKMARK );
|
|
SetBookMark( FLORIST_BOOKMARK );
|
|
SetBookMark( INSURANCE_BOOKMARK );
|
|
}
|
|
}
|
|
|
|
//help screen stuff
|
|
else
|
|
#endif
|
|
if( (usEvent == KEY_DOWN ) && ( ( usParam == 'h' ) || ( usParam == 'H' ) ) )
|
|
{
|
|
ShouldTheHelpScreenComeUp( HELP_SCREEN_LAPTOP, TRUE );
|
|
}
|
|
|
|
|
|
#if defined ( JA2TESTVERSION )
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == 'w' ))
|
|
{
|
|
DemoHiringOfMercs( );
|
|
}
|
|
#endif
|
|
|
|
#ifdef JA2BETAVERSION
|
|
//adding all emails
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == 'e' ))
|
|
{
|
|
if( CHEATER_CHEAT_LEVEL( ) )
|
|
{
|
|
if( ( usKeyState & ALT_DOWN ) )
|
|
{
|
|
AddAllEmails();
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
//adding money
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == '=' ))
|
|
{
|
|
if( CHEATER_CHEAT_LEVEL( ) )
|
|
{
|
|
AddTransactionToPlayersBook( ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), 100000 );
|
|
MarkButtonsDirty( );
|
|
}
|
|
}
|
|
|
|
//subtracting money
|
|
else if( (usEvent == KEY_DOWN ) && ( usParam == '-' ) )
|
|
{
|
|
if( CHEATER_CHEAT_LEVEL( ) )
|
|
{
|
|
AddTransactionToPlayersBook( ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), -10000 );
|
|
MarkButtonsDirty( );
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef JA2TESTVERSION
|
|
else if ((usEvent == KEY_DOWN )&& ( usParam == 'd' ))
|
|
{
|
|
if( gfTemporaryDisablingOfLoadPendingFlag )
|
|
gfTemporaryDisablingOfLoadPendingFlag = FALSE;
|
|
else
|
|
gfTemporaryDisablingOfLoadPendingFlag = TRUE;
|
|
}
|
|
else if ((usEvent == KEY_DOWN ) && ( usParam == '+' ))
|
|
{
|
|
if( usKeyState & ALT_DOWN )
|
|
{
|
|
gStrategicStatus.ubHighestProgress += 10;
|
|
if (gStrategicStatus.ubHighestProgress > 100)
|
|
gStrategicStatus.ubHighestProgress = 100;
|
|
|
|
InitAllArmsDealers();
|
|
InitBobbyRayInventory();
|
|
}
|
|
}
|
|
else if ((usEvent == KEY_DOWN ) && ( usParam == '-' ))
|
|
{
|
|
if( usKeyState & ALT_DOWN )
|
|
{
|
|
if (gStrategicStatus.ubHighestProgress >= 10)
|
|
gStrategicStatus.ubHighestProgress -= 10;
|
|
else
|
|
gStrategicStatus.ubHighestProgress = 0;
|
|
|
|
InitAllArmsDealers();
|
|
InitBobbyRayInventory();
|
|
}
|
|
}
|
|
else if ((usEvent == KEY_DOWN ) && ( usParam == '*' ))
|
|
{
|
|
if( usKeyState & ALT_DOWN )
|
|
{
|
|
DeleteAllStrategicEventsOfType( EVENT_EVALUATE_QUEEN_SITUATION );
|
|
AdvanceToNextDay();
|
|
}
|
|
}
|
|
else if( usEvent == KEY_DOWN && usParam == 'v' && usKeyState & CTRL_DOWN )
|
|
{
|
|
#ifdef SGP_VIDEO_DEBUGGING
|
|
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"VObjects: %d", guiVObjectSize );
|
|
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"VSurfaces: %d", guiVSurfaceSize );
|
|
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"SGPVideoDump.txt updated..." );
|
|
PerformVideoInfoDumpIntoFile( "SGPVideoDump.txt", TRUE );
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '1' ))
|
|
{
|
|
TempHiringOfMercs( 1, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '2' ))
|
|
{
|
|
TempHiringOfMercs( 2, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '3' ))
|
|
{
|
|
TempHiringOfMercs( 3, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '4' ))
|
|
{
|
|
TempHiringOfMercs( 4, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '5' ))
|
|
{
|
|
TempHiringOfMercs( 5, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '6' ))
|
|
{
|
|
TempHiringOfMercs( 6, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '7' ))
|
|
{
|
|
TempHiringOfMercs( 7, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '8' ))
|
|
{
|
|
TempHiringOfMercs( 8, FALSE);
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '9' ))
|
|
{
|
|
TempHiringOfMercs( 9, FALSE );
|
|
}
|
|
|
|
if ((usEvent == KEY_DOWN )&& ( usParam == '0' ))
|
|
{
|
|
TempHiringOfMercs( 10, FALSE );
|
|
}
|
|
}
|
|
#endif
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
BOOLEAN RenderWWWProgramTitleBar( void )
|
|
{
|
|
// will render the title bar for the www program
|
|
UINT32 uiTITLEFORWWW;
|
|
HVOBJECT hHandle;
|
|
VOBJECT_DESC VObjectDesc;
|
|
INT32 iIndex = 0;
|
|
CHAR16 sString[256];
|
|
|
|
// title bar - load
|
|
VObjectDesc.fCreateFlags=VOBJECT_CREATE_FROMFILE;
|
|
FilenameForBPP("LAPTOP\\programtitlebar.sti", VObjectDesc.ImageFile);
|
|
CHECKF(AddVideoObject(&VObjectDesc, &uiTITLEFORWWW));
|
|
|
|
// blit title
|
|
GetVideoObject(&hHandle, uiTITLEFORWWW);
|
|
BltVideoObject( FRAME_BUFFER, hHandle, 0,LAPTOP_SCREEN_UL_X, LAPTOP_SCREEN_UL_Y - 2, VO_BLT_SRCTRANSPARENCY,NULL );
|
|
|
|
|
|
// now delete
|
|
DeleteVideoObjectFromIndex( uiTITLEFORWWW );
|
|
|
|
// now slapdown text
|
|
SetFont( FONT14ARIAL );
|
|
SetFontForeground( FONT_WHITE );
|
|
SetFontBackground( FONT_BLACK );
|
|
|
|
// display title
|
|
|
|
// no page loaded yet, do not handle yet
|
|
|
|
|
|
if( guiCurrentLaptopMode == LAPTOP_MODE_WWW )
|
|
{
|
|
mprintf(iScreenWidthOffset + 140 , iScreenHeightOffset + 33 ,pWebTitle[0]);
|
|
}
|
|
|
|
else
|
|
{
|
|
iIndex = guiCurrentLaptopMode - LAPTOP_MODE_WWW-1;
|
|
|
|
swprintf( sString, L"%s - %s", pWebTitle[0], pWebPagesTitles[ iIndex ] );
|
|
mprintf(iScreenWidthOffset + 140 ,iScreenHeightOffset + 33 ,sString);
|
|
}
|
|
|
|
|
|
|
|
|
|
BlitTitleBarIcons( );
|
|
|
|
DisplayProgramBoundingBox( FALSE );
|
|
|
|
//InvalidateRegion( 0, 0, 640, 480 );
|
|
return( TRUE );
|
|
}
|
|
|
|
|
|
void HandleDefaultWebpageForLaptop( void )
|
|
{
|
|
|
|
// go to first page in bookmark list
|
|
if( guiCurrentLaptopMode == LAPTOP_MODE_WWW )
|
|
{
|
|
// if valid entry go there
|
|
if( LaptopSaveInfo.iBookMarkList[ 0 ] != -1 )
|
|
{
|
|
GoToWebPage( LaptopSaveInfo.iBookMarkList[ 0 ] );
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void CreateMinimizeRegionsForLaptopProgramIcons( void )
|
|
{
|
|
// will create the minizing region to lie over the icon for this particular laptop program
|
|
|
|
MSYS_DefineRegion( &gLapTopProgramMinIcon,LAPTOP_PROGRAM_ICON_X, LAPTOP_PROGRAM_ICON_Y ,LAPTOP_PROGRAM_ICON_X + LAPTOP_PROGRAM_ICON_WIDTH ,LAPTOP_PROGRAM_ICON_Y + LAPTOP_PROGRAM_ICON_HEIGHT, MSYS_PRIORITY_NORMAL+1,
|
|
CURSOR_LAPTOP_SCREEN, MSYS_NO_CALLBACK, LaptopProgramIconMinimizeCallback );
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void DestroyMinimizeRegionsForLaptopProgramIcons( void )
|
|
{
|
|
// will destroy the minizmize regions to be placed over the laptop icons that will be
|
|
// displayed on the top of the laptop program bar
|
|
|
|
MSYS_RemoveRegion( &gLapTopProgramMinIcon);
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void LaptopProgramIconMinimizeCallback( MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
// callback handler for the minize region that is attatched to the laptop program icon
|
|
if(iReason & MSYS_CALLBACK_REASON_LBUTTON_UP)
|
|
{
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case( LAPTOP_MODE_EMAIL ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_MAILER ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[0], guiTITLEBARICONS, 0 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_FILES ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_FILES ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[5], guiTITLEBARICONS, 2 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_FINANCES ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_FINANCES ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[2], guiTITLEBARICONS, 5 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_HISTORY ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_HISTORY ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[4], guiTITLEBARICONS, 4 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_PERSONNEL ):
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_PERSONNEL ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pLaptopIcons[3], guiTITLEBARICONS, 3 );
|
|
SetCurrentToLastProgramOpened( );
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
case( LAPTOP_MODE_NONE ):
|
|
// nothing
|
|
break;
|
|
default:
|
|
gLaptopProgramStates[ LAPTOP_PROGRAM_WEB_BROWSER ] = LAPTOP_PROGRAM_MINIMIZED;
|
|
InitTitleBarMaximizeGraphics(guiTITLEBARLAPTOP, pWebTitle[ 0 ], guiTITLEBARICONS, 1 );
|
|
SetCurrentToLastProgramOpened( );
|
|
gfShowBookmarks = FALSE;
|
|
fShowBookmarkInfo = FALSE;
|
|
fMinizingProgram = TRUE;
|
|
fInitTitle = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
void DisplayProgramBoundingBox( BOOLEAN fMarkButtons )
|
|
{
|
|
// the border fot eh program
|
|
HVOBJECT hHandle;
|
|
|
|
GetVideoObject(&hHandle, guiLaptopBACKGROUND);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 1, iScreenWidthOffset + 25, iScreenHeightOffset + 23, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
// no laptop mode, no border around the program
|
|
if( guiCurrentLaptopMode != LAPTOP_MODE_NONE )
|
|
{
|
|
GetVideoObject(&hHandle, guiLaptopBACKGROUND);
|
|
BltVideoObject(FRAME_BUFFER, hHandle, 0, iScreenWidthOffset + 108, iScreenHeightOffset + 23, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
}
|
|
|
|
if( fMarkButtons || fLoadPendingFlag )
|
|
{
|
|
MarkButtonsDirty( );
|
|
RenderButtons( );
|
|
}
|
|
|
|
|
|
PrintDate( );
|
|
|
|
PrintBalance( );
|
|
|
|
PrintNumberOnTeam( );
|
|
|
|
// new files or email?
|
|
DisplayTaskBarIcons( );
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void CreateDestroyMouseRegionForNewMailIcon( void )
|
|
{
|
|
static BOOLEAN fCreated = FALSE;
|
|
|
|
//. will toggle creation/destruction of the mouse regions used by the new mail icon
|
|
|
|
if( fCreated == FALSE )
|
|
{
|
|
fCreated = TRUE;
|
|
MSYS_DefineRegion(&gNewMailIconRegion, LAPTOP__NEW_EMAIL_ICON_X, LAPTOP__NEW_EMAIL_ICON_Y + 5, LAPTOP__NEW_EMAIL_ICON_X+16, LAPTOP__NEW_EMAIL_ICON_Y + 16,
|
|
MSYS_PRIORITY_HIGHEST - 3 , CURSOR_LAPTOP_SCREEN, MSYS_NO_CALLBACK, NewEmailIconCallback);
|
|
CreateFileAndNewEmailIconFastHelpText( LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_MAIL, (BOOLEAN)(fUnReadMailFlag == 0 ) );
|
|
|
|
MSYS_DefineRegion(&gNewFileIconRegion, LAPTOP__NEW_FILE_ICON_X, LAPTOP__NEW_FILE_ICON_Y + 5, LAPTOP__NEW_FILE_ICON_X + 16, LAPTOP__NEW_FILE_ICON_Y + 16,
|
|
MSYS_PRIORITY_HIGHEST - 3 , CURSOR_LAPTOP_SCREEN, MSYS_NO_CALLBACK, NewFileIconCallback);
|
|
CreateFileAndNewEmailIconFastHelpText( LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_FILE, (BOOLEAN)( fNewFilesInFileViewer == 0 ) );
|
|
}
|
|
else
|
|
{
|
|
fCreated = FALSE;
|
|
MSYS_RemoveRegion( &gNewMailIconRegion );
|
|
MSYS_RemoveRegion( &gNewFileIconRegion );
|
|
}
|
|
}
|
|
|
|
|
|
void NewEmailIconCallback( MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
if(iReason & MSYS_CALLBACK_REASON_LBUTTON_UP)
|
|
{
|
|
if( fUnReadMailFlag )
|
|
{
|
|
fOpenMostRecentUnReadFlag = TRUE;
|
|
guiCurrentLaptopMode = LAPTOP_MODE_EMAIL;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void NewFileIconCallback( MOUSE_REGION * pRegion, INT32 iReason )
|
|
{
|
|
if(iReason & MSYS_CALLBACK_REASON_LBUTTON_UP)
|
|
{
|
|
if( fNewFilesInFileViewer )
|
|
{
|
|
fEnteredFileViewerFromNewFileIcon = TRUE;
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FILES;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void HandleWWWSubSites( void )
|
|
{
|
|
// check to see if WW Wait is needed for a sub site within the Web Browser
|
|
|
|
if( (guiCurrentLaptopMode == guiPreviousLaptopMode )||( guiCurrentLaptopMode < LAPTOP_MODE_WWW) ||( fLoadPendingFlag == TRUE ) ||( fDoneLoadPending == TRUE ) || ( guiPreviousLaptopMode < LAPTOP_MODE_WWW ) )
|
|
{
|
|
// no go, leave
|
|
return;
|
|
}
|
|
|
|
fLoadPendingFlag = TRUE;
|
|
fConnectingToSubPage = TRUE;
|
|
|
|
// fast or slow load?
|
|
if( gfWWWaitSubSitesVisitedFlags[ guiCurrentLaptopMode - ( LAPTOP_MODE_WWW + 1 ) ] == TRUE )
|
|
{
|
|
fFastLoadFlag = TRUE;
|
|
}
|
|
|
|
// set fact we were here
|
|
gfWWWaitSubSitesVisitedFlags[ guiCurrentLaptopMode - ( LAPTOP_MODE_WWW + 1 ) ] = TRUE;
|
|
|
|
//Dont show the dlownload screen when switching between these pages
|
|
if( ( guiCurrentLaptopMode == LAPTOP_MODE_AIM_MEMBERS ) && ( guiPreviousLaptopMode == LAPTOP_MODE_AIM_MEMBERS_FACIAL_INDEX ) ||
|
|
( guiCurrentLaptopMode == LAPTOP_MODE_AIM_MEMBERS_FACIAL_INDEX ) && ( guiPreviousLaptopMode == LAPTOP_MODE_AIM_MEMBERS ) )
|
|
{
|
|
fFastLoadFlag = FALSE;
|
|
fLoadPendingFlag = FALSE;
|
|
|
|
// set fact we were here
|
|
gfWWWaitSubSitesVisitedFlags[ LAPTOP_MODE_AIM_MEMBERS_FACIAL_INDEX - ( LAPTOP_MODE_WWW + 1 ) ] = TRUE;
|
|
gfWWWaitSubSitesVisitedFlags[ LAPTOP_MODE_AIM_MEMBERS - ( LAPTOP_MODE_WWW + 1 ) ] = TRUE;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void UpdateStatusOfDisplayingBookMarks( void )
|
|
{
|
|
// this function will disable showing of bookmarks if in process of download or if we miniming web browser
|
|
if( ( fLoadPendingFlag == TRUE ) || ( guiCurrentLaptopMode < LAPTOP_MODE_WWW ) )
|
|
{
|
|
gfShowBookmarks = FALSE;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void InitalizeSubSitesList( void )
|
|
{
|
|
INT32 iCounter = 0;
|
|
|
|
// init all subsites list to not visited
|
|
for( iCounter = LAPTOP_MODE_WWW + 1 ; iCounter <= LAPTOP_MODE_SIRTECH; iCounter++ )
|
|
{
|
|
gfWWWaitSubSitesVisitedFlags[ iCounter - ( LAPTOP_MODE_WWW + 1 ) ] = FALSE;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
void SetSubSiteAsVisted( void )
|
|
{
|
|
// sets a www sub site as visited
|
|
if( guiCurrentLaptopMode <= LAPTOP_MODE_WWW )
|
|
{
|
|
// not at a web page yet
|
|
}
|
|
else
|
|
{
|
|
gfWWWaitSubSitesVisitedFlags[ guiCurrentLaptopMode - ( LAPTOP_MODE_WWW + 1 ) ] = TRUE;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
void HandleShiftAltTabKeyInLaptop( void )
|
|
{
|
|
// will handle the alt tab keying in laptop
|
|
|
|
// move to next program
|
|
if( fMaximizingProgram == TRUE )
|
|
{
|
|
return;
|
|
}
|
|
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case( LAPTOP_MODE_FINANCES ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_PERSONNEL;
|
|
break;
|
|
case( LAPTOP_MODE_PERSONNEL ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_HISTORY;
|
|
break;
|
|
case( LAPTOP_MODE_HISTORY ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FILES;
|
|
break;
|
|
case( LAPTOP_MODE_EMAIL ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FINANCES;
|
|
break;
|
|
case( LAPTOP_MODE_FILES ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_WWW;
|
|
break;
|
|
case( LAPTOP_MODE_NONE ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FINANCES;
|
|
break;
|
|
case( LAPTOP_MODE_WWW ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_EMAIL;
|
|
break;
|
|
default:
|
|
guiCurrentLaptopMode = LAPTOP_MODE_EMAIL;
|
|
break;
|
|
}
|
|
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
|
|
|
|
void HandleAltTabKeyInLaptop( void )
|
|
{
|
|
// will handle the alt tab keying in laptop
|
|
|
|
// move to next program
|
|
// move to next program
|
|
if( fMaximizingProgram == TRUE )
|
|
{
|
|
return;
|
|
}
|
|
|
|
switch( guiCurrentLaptopMode )
|
|
{
|
|
case( LAPTOP_MODE_FINANCES ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_EMAIL;
|
|
break;
|
|
case( LAPTOP_MODE_PERSONNEL ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FINANCES;
|
|
break;
|
|
|
|
case( LAPTOP_MODE_HISTORY ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_PERSONNEL;
|
|
break;
|
|
case( LAPTOP_MODE_EMAIL ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_WWW;
|
|
break;
|
|
case( LAPTOP_MODE_FILES ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_HISTORY;
|
|
break;
|
|
case( LAPTOP_MODE_NONE ):
|
|
guiCurrentLaptopMode = LAPTOP_MODE_EMAIL;
|
|
break;
|
|
default:
|
|
guiCurrentLaptopMode = LAPTOP_MODE_FILES;
|
|
break;
|
|
}
|
|
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
|
|
|
|
|
|
// display the 2 second book mark instruction
|
|
void DisplayWebBookMarkNotify( void )
|
|
{
|
|
static BOOLEAN fOldShow = FALSE;
|
|
HVOBJECT hLapTopIconHandle;
|
|
|
|
|
|
// handle the timer for this thing
|
|
HandleWebBookMarkNotifyTimer( );
|
|
|
|
// are we about to start showing box? or did we just stop?
|
|
if( ( ( fOldShow == FALSE )||( fReDrawBookMarkInfo ) ) && ( fShowBookmarkInfo == TRUE ) )
|
|
{
|
|
fOldShow = TRUE;
|
|
fReDrawBookMarkInfo = FALSE;
|
|
|
|
// show background objects
|
|
GetVideoObject(&hLapTopIconHandle, guiDOWNLOADTOP);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,DOWNLOAD_X, DOWNLOAD_Y, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
GetVideoObject(&hLapTopIconHandle, guiDOWNLOADMID);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,DOWNLOAD_X, DOWNLOAD_Y+DOWN_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
GetVideoObject(&hLapTopIconHandle, guiDOWNLOADBOT);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 0,DOWNLOAD_X, DOWNLOAD_Y+2*DOWN_HEIGHT, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
GetVideoObject(&hLapTopIconHandle, guiTITLEBARICONS);
|
|
BltVideoObject(FRAME_BUFFER, hLapTopIconHandle, 1,DOWNLOAD_X + 4, DOWNLOAD_Y + 1, VO_BLT_SRCTRANSPARENCY,NULL);
|
|
|
|
// font stuff
|
|
SetFont(DOWNLOAD_FONT);
|
|
SetFontForeground(FONT_WHITE);
|
|
SetFontBackground(FONT_BLACK);
|
|
SetFontShadow(NO_SHADOW);
|
|
|
|
// display download string
|
|
mprintf( DOWN_STRING_X, DOWN_STRING_Y, pShowBookmarkString[ 0 ]);
|
|
|
|
SetFont(BOOK_FONT);
|
|
SetFontForeground(FONT_BLACK);
|
|
SetFontBackground(FONT_BLACK);
|
|
SetFontShadow(NO_SHADOW);
|
|
|
|
// now draw the message
|
|
DisplayWrappedString(( INT16 )( DOWN_STRING_X - 42 ),(UINT16)(DOWN_STRING_Y + 20), BOOK_WIDTH + 45, 2,BOOK_FONT,FONT_BLACK, pShowBookmarkString[ 1 ],FONT_BLACK,FALSE,CENTER_JUSTIFIED);
|
|
|
|
// invalidate region
|
|
InvalidateRegion(DOWNLOAD_X, DOWNLOAD_Y, DOWNLOAD_X + 150, DOWNLOAD_Y + 100);
|
|
|
|
}
|
|
else if( ( fOldShow == TRUE ) && ( fShowBookmarkInfo == FALSE ) )
|
|
{
|
|
//MSYS_RemoveRegion( &gLapTopScreenRegion );
|
|
fOldShow = FALSE;
|
|
fPausedReDrawScreenFlag = TRUE;
|
|
}
|
|
|
|
SetFontShadow(DEFAULT_SHADOW);
|
|
|
|
return;
|
|
}
|
|
|
|
void HandleWebBookMarkNotifyTimer( void )
|
|
{
|
|
static INT32 iBaseTime = 0;
|
|
INT32 iDifference = 0;
|
|
static BOOLEAN fOldShowBookMarkInfo = FALSE;
|
|
|
|
|
|
// check if maxing or mining?
|
|
if( ( fMaximizingProgram == TRUE ) || ( fMinizingProgram == TRUE ) )
|
|
{
|
|
fOldShowBookMarkInfo |= fShowBookmarkInfo;
|
|
fShowBookmarkInfo = FALSE;
|
|
return;
|
|
}
|
|
|
|
// if we were going to show this pop up, but were delayed, then do so now
|
|
fShowBookmarkInfo |= fOldShowBookMarkInfo;
|
|
|
|
// reset old flag
|
|
fOldShowBookMarkInfo = FALSE;
|
|
|
|
// if current mode is too low, then reset
|
|
if( guiCurrentLaptopMode < LAPTOP_MODE_WWW )
|
|
{
|
|
fShowBookmarkInfo = FALSE;
|
|
}
|
|
|
|
// if showing bookmarks, don't show help
|
|
if( gfShowBookmarks == TRUE )
|
|
{
|
|
fShowBookmarkInfo = FALSE;
|
|
}
|
|
|
|
// check if flag false, is so, leave
|
|
if( fShowBookmarkInfo == FALSE )
|
|
{
|
|
iBaseTime = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
// check if this is the first time in here
|
|
if( iBaseTime == 0 )
|
|
{
|
|
iBaseTime = GetJA2Clock( );
|
|
return;
|
|
}
|
|
|
|
iDifference = GetJA2Clock( ) - iBaseTime;
|
|
|
|
fReDrawBookMarkInfo = TRUE;
|
|
|
|
if( iDifference > DISPLAY_TIME_FOR_WEB_BOOKMARK_NOTIFY )
|
|
{
|
|
// waited long enough, stop showing
|
|
iBaseTime = 0;
|
|
fShowBookmarkInfo = FALSE;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
void ClearOutTempLaptopFiles( void )
|
|
{
|
|
// clear out all temp files from laptop
|
|
|
|
// file file
|
|
if ( (FileExists( "files.dat" ) == TRUE ) )
|
|
{
|
|
FileClearAttributes( "files.dat" );
|
|
FileDelete( "files.dat" );
|
|
}
|
|
|
|
// finances
|
|
if ( (FileExists( "finances.dat" ) == TRUE ) )
|
|
{
|
|
FileClearAttributes( "finances.dat" );
|
|
FileDelete( "finances.dat" );
|
|
}
|
|
|
|
// email
|
|
if ( (FileExists( "email.dat" ) == TRUE ) )
|
|
{
|
|
FileClearAttributes( "email.dat" );
|
|
FileDelete( "email.dat" );
|
|
}
|
|
|
|
// history
|
|
if ( (FileExists( "history.dat" ) == TRUE ) )
|
|
{
|
|
FileClearAttributes( "history.dat" );
|
|
FileDelete( "history.dat" );
|
|
}
|
|
|
|
}
|
|
|
|
|
|
BOOLEAN SaveLaptopInfoToSavedGame( HWFILE hFile )
|
|
{
|
|
UINT32 uiNumBytesWritten=0;
|
|
UINT32 uiSize;
|
|
|
|
|
|
// Save The laptop information
|
|
FileWrite( hFile, &LaptopSaveInfo, sizeof( LaptopSaveInfoStruct ), &uiNumBytesWritten );
|
|
if( uiNumBytesWritten != sizeof( LaptopSaveInfoStruct ) )
|
|
{
|
|
return(FALSE);
|
|
}
|
|
|
|
//If there is anything in the Bobby Ray Orders on Delivery
|
|
if( LaptopSaveInfo.usNumberOfBobbyRayOrderUsed )
|
|
{
|
|
//Allocate memory for the information
|
|
uiSize = sizeof( BobbyRayOrderStruct ) * LaptopSaveInfo.usNumberOfBobbyRayOrderItems;
|
|
|
|
// Load The laptop information
|
|
FileWrite( hFile, LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray, uiSize, &uiNumBytesWritten );
|
|
if( uiNumBytesWritten != uiSize)
|
|
{
|
|
return(FALSE);
|
|
}
|
|
}
|
|
|
|
|
|
//If there is any Insurance Payouts in progress
|
|
if( LaptopSaveInfo.ubNumberLifeInsurancePayoutUsed )
|
|
{
|
|
//Allocate memory for the information
|
|
uiSize = sizeof( LIFE_INSURANCE_PAYOUT ) * LaptopSaveInfo.ubNumberLifeInsurancePayouts;
|
|
|
|
// Load The laptop information
|
|
FileWrite( hFile, LaptopSaveInfo.pLifeInsurancePayouts, uiSize, &uiNumBytesWritten );
|
|
if( uiNumBytesWritten != uiSize )
|
|
{
|
|
return(FALSE);
|
|
}
|
|
}
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOLEAN LoadLaptopInfoFromSavedGame( HWFILE hFile )
|
|
{
|
|
UINT32 uiNumBytesRead=0;
|
|
UINT32 uiSize;
|
|
|
|
|
|
//if there is memory allocated for the BobbyR orders
|
|
if( LaptopSaveInfo.usNumberOfBobbyRayOrderItems )
|
|
{
|
|
//Free the memory
|
|
if( LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray )
|
|
MemFree( LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray );
|
|
LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray = NULL;
|
|
}
|
|
|
|
//if there is memory allocated for life insurance payouts
|
|
if( LaptopSaveInfo.ubNumberLifeInsurancePayouts )
|
|
{
|
|
if( !LaptopSaveInfo.pLifeInsurancePayouts )
|
|
Assert( 0 ); //Should never happen
|
|
|
|
//Free the memory
|
|
MemFree( LaptopSaveInfo.pLifeInsurancePayouts );
|
|
LaptopSaveInfo.pLifeInsurancePayouts = NULL;
|
|
}
|
|
|
|
// Load The laptop information
|
|
FileRead( hFile, &LaptopSaveInfo, sizeof( LaptopSaveInfoStruct ), &uiNumBytesRead );
|
|
if( uiNumBytesRead != sizeof( LaptopSaveInfoStruct ) )
|
|
{
|
|
return(FALSE);
|
|
}
|
|
|
|
//If there is anything in the Bobby Ray Orders on Delivery
|
|
if( LaptopSaveInfo.usNumberOfBobbyRayOrderUsed )
|
|
{
|
|
//Allocate memory for the information
|
|
uiSize = sizeof( BobbyRayOrderStruct ) * LaptopSaveInfo.usNumberOfBobbyRayOrderItems;
|
|
|
|
LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray = (BobbyRayOrderStruct *) MemAlloc( uiSize );
|
|
Assert( LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray );
|
|
|
|
// Load The laptop information
|
|
FileRead( hFile, LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray, uiSize, &uiNumBytesRead );
|
|
if( uiNumBytesRead != uiSize )
|
|
{
|
|
return(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LaptopSaveInfo.usNumberOfBobbyRayOrderItems = 0;
|
|
LaptopSaveInfo.BobbyRayOrdersOnDeliveryArray = NULL;
|
|
}
|
|
|
|
|
|
//If there is any Insurance Payouts in progress
|
|
if( LaptopSaveInfo.ubNumberLifeInsurancePayoutUsed )
|
|
{
|
|
//Allocate memory for the information
|
|
uiSize = sizeof( LIFE_INSURANCE_PAYOUT ) * LaptopSaveInfo.ubNumberLifeInsurancePayouts;
|
|
|
|
LaptopSaveInfo.pLifeInsurancePayouts = (LIFE_INSURANCE_PAYOUT *) MemAlloc( uiSize );
|
|
Assert( LaptopSaveInfo.pLifeInsurancePayouts );
|
|
|
|
// Load The laptop information
|
|
FileRead( hFile, LaptopSaveInfo.pLifeInsurancePayouts, uiSize, &uiNumBytesRead );
|
|
if( uiNumBytesRead != uiSize )
|
|
{
|
|
return(FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LaptopSaveInfo.ubNumberLifeInsurancePayouts = 0;
|
|
LaptopSaveInfo.pLifeInsurancePayouts = NULL;
|
|
}
|
|
|
|
|
|
return( TRUE );
|
|
}
|
|
|
|
void LaptopSaveVariablesInit()
|
|
{
|
|
}
|
|
|
|
|
|
INT32 WWaitDelayIncreasedIfRaining( INT32 iUnitTime )
|
|
{
|
|
INT32 iRetVal = 0;
|
|
|
|
if( guiEnvWeather & WEATHER_FORECAST_THUNDERSHOWERS )
|
|
{
|
|
iRetVal = (INT32)( iUnitTime * (FLOAT) 0.80 );
|
|
}
|
|
else if( guiEnvWeather & WEATHER_FORECAST_SHOWERS )
|
|
{
|
|
iRetVal = (INT32)( iUnitTime * (FLOAT) 0.6 );
|
|
}
|
|
|
|
return( iRetVal );
|
|
}
|
|
|
|
|
|
BOOLEAN IsItRaining()
|
|
{
|
|
if( guiEnvWeather & WEATHER_FORECAST_SHOWERS || guiEnvWeather & WEATHER_FORECAST_THUNDERSHOWERS )
|
|
return( TRUE );
|
|
else
|
|
return( FALSE );
|
|
}
|
|
|
|
|
|
void InternetRainDelayMessageBoxCallBack( UINT8 bExitValue )
|
|
{
|
|
// WANNE 2
|
|
//GoToWebPage( giRainDelayInternetSite );
|
|
|
|
//Set to -2 so we dont due the message for this occurence of laptop
|
|
//giRainDelayInternetSite = -2;
|
|
}
|
|
|
|
|
|
void CreateBookMarkHelpText( MOUSE_REGION *pRegion, UINT32 uiBookMarkID )
|
|
{
|
|
SetRegionFastHelpText( pRegion, gzLaptopHelpText[ BOOKMARK_TEXT_ASSOCIATION_OF_INTERNATION_MERCENARIES + uiBookMarkID ] );
|
|
}
|
|
|
|
void CreateFileAndNewEmailIconFastHelpText( UINT32 uiHelpTextID, BOOLEAN fClearHelpText )
|
|
{
|
|
MOUSE_REGION *pRegion;
|
|
|
|
switch( uiHelpTextID )
|
|
{
|
|
case LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_MAIL:
|
|
pRegion = &gNewMailIconRegion;
|
|
break;
|
|
|
|
case LAPTOP_BN_HLP_TXT_YOU_HAVE_NEW_FILE:
|
|
pRegion = &gNewFileIconRegion;
|
|
break;
|
|
|
|
default:
|
|
Assert(0);
|
|
return;
|
|
}
|
|
|
|
if( fClearHelpText )
|
|
SetRegionFastHelpText( pRegion, L"" );
|
|
else
|
|
SetRegionFastHelpText( pRegion, gzLaptopHelpText[ uiHelpTextID ] );
|
|
|
|
//fUnReadMailFlag
|
|
//fNewFilesInFileViewer
|
|
}
|
|
|
|
|
|
void CreateLaptopButtonHelpText( INT32 iButtonIndex, UINT32 uiButtonHelpTextID )
|
|
{
|
|
SetButtonFastHelpText( iButtonIndex, gzLaptopHelpText[ uiButtonHelpTextID ] );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|