/* game, and either issuing a 'begin' or 'cancel' command for the created game */ T_void GuildUIConfirmCreateGame (T_void) { DebugRoutine ("GuildUIConfirmCreateGame"); /* switch control buttons to 'begin game' and 'cancel game' */ ButtonDelete (G_joinButton); ButtonDelete (G_createButton); G_joinButton=ButtonCreate (6, 127, "UI/GUILD/BEGIN", FALSE, KeyDual(KEY_SCAN_CODE_B,KEY_SCAN_CODE_ALT), NULL, GuildUIBeginGame); G_createButton=ButtonCreate (109, 127, "UI/GUILD/CANCEL", FALSE, KeyDual(KEY_SCAN_CODE_C,KEY_SCAN_CODE_ALT), NULL, GuildUICancelCreateGame); /* delete adventure list box and replace with information */ /* concerning status */ TxtboxDelete (G_displayBoxes[GUILD_GAME_LIST]); TxtboxDelete (G_displayBoxes[GUILD_MAPS_LIST]); ButtonSetCallbacks (G_upButtons[GUILD_GAME_LIST],NULL,NULL); ButtonSetCallbacks (G_dnButtons[GUILD_GAME_LIST],NULL,NULL); ButtonSetCallbacks (G_upButtons[GUILD_MAPS_LIST],NULL,NULL); ButtonSetCallbacks (G_dnButtons[GUILD_MAPS_LIST],NULL,NULL); G_displayBoxes[GUILD_GAME_LIST]=TxtboxCreate (6, 28, 95, 75, "FontTiny", 0, 0, FALSE, Txtbox_JUSTIFY_CENTER, Txtbox_MODE_VIEW_NOSCROLL_FORM, NULL); TxtboxSetData (G_displayBoxes[GUILD_GAME_LIST], "^003Creating game:^007\r\rplease wait for\rother players\r\r^005Select begin button\rTo start game."); DebugEnd(); }
T_void HardFormStart(T_word32 formNum) { T_word32 formID; DebugRoutine("HardFormStart"); HardFormOpen = TRUE; /* All hard forms have an alternate output turned on. */ MessageSetAlternateOutputOn(); BannerUIModeOn(); formNum -= STORE_ID_START; formID = formNum; DebugCheck(formNum < HARD_FORM_UNKNOWN); DebugCheck(G_currentForm == HARD_FORM_UNKNOWN); // if (formID!=HARD_FORM_TOWN) if (1) { /* create hardform close button */ G_closeButton = ButtonCreate(196, 5, "UI/COMMON/CLOSEWIN", FALSE, 0, NULL, HardFormExit); } else { G_closeButton = NULL; } if (formNum >= 20) formNum = HARD_FORM_HOUSE; G_currentForm = formNum; if (G_callbackGroups[G_currentForm].start != NULL ) G_callbackGroups[G_currentForm].start(formID); DebugEnd(); }
HMC ScrollBarCreateFromFile ( FILE* pFile ) { HSCROLLBAR hScroll; int nId, nX, nY, nWidth, nHeight, nButtonHeight, nShow, nBitmap; char pText[180]; //read all the general info for the scroll bar fscanf ( pFile, "%i %i %i %i %i %i %i %i\n", &nId, &nX, &nY, &nWidth, &nHeight, &nButtonHeight, &nBitmap, &nShow ); //create the main scroll bar window hScroll = ScrollBarCreate ( nId, nX, nY, nWidth, nHeight, nButtonHeight, nBitmap ); if ( !hScroll ) return 0; //read info for the top button fscanf ( pFile, "%i %[^\n]\n", &nBitmap, pText ); //id + 2 = top button HBUTTON hBut = ButtonCreate ( nId + 2, pText, 0, -nButtonHeight, nWidth, nButtonHeight, nBitmap ); ScrollBarAddButton ( hScroll, (HMC) hBut ); //get all the info for the bottom button now fscanf ( pFile, "%i %[^\n]\n", &nBitmap, pText ); //create the next button, id+3 = bottom button hBut = ButtonCreate ( nId +3, pText, 0, nHeight - ( 2 * nButtonHeight), nWidth, nButtonHeight, nBitmap ); ScrollBarAddButton ( hScroll, (HMC) hBut ); //get all the info for the Slider now fscanf ( pFile, "%i %[^\n]\n", &nBitmap, pText ); //create the next button, id+3 = bottom button hBut = ButtonCreate ( nId + 4, pText, 0, 0, nWidth, hScroll->nSliderHeight, nBitmap ); ScrollBarAddButton ( hScroll, (HMC) hBut ); ScrollBarShow ( (HMC) hScroll, nShow, 1 ); return (HMC) hScroll; }
T_formObjectID FormAddTextButton( T_word16 x1, T_word16 y1, T_byte8 *data, T_byte8 *picturename, T_byte8 *fontname, T_byte8 fcolor, T_byte8 bcolor, E_Boolean toggletype, T_word16 hotkey, T_word32 idnum) { T_word16 i; T_buttonID buttonID; DebugRoutine("FormAddTextButton"); DebugCheck(picturename!=NULL); G_formHasButtons = TRUE; for (i = 0; i < MAX_FORM_OBJECTS; i++) { /* find an empty slot */ if (G_formObjectArray[i] == NULL ) { /* found one, create a new button */ buttonID = ButtonCreate(x1, y1, picturename, toggletype, hotkey, NULL, NULL ); ButtonSetFont(buttonID, fontname); ButtonSetText(buttonID, data, fcolor); /* now that a button has been created, make an objstruct for it */ G_formObjectArray[i] = FormCreateObject(FORM_OBJECT_BUTTON, (T_formObjectID)buttonID, idnum); /* we made a new object struct, break from the loop */ break; } } /* make sure we haven't exceeded any limits */ DebugCheck(i!=MAX_FORM_OBJECTS); DebugEnd(); /* return the ID for the object created */ return (G_formObjectArray[i]); }
T_void GuildUIStart (T_word32 formNum) { T_word16 i; const T_word16 arrowCoordX[4]= { 97, 97, 200, 200}; const T_word16 upArrowCoordY[4]= { 28, 77, 28, 77 }; const T_word16 dnArrowCoordY[4]= { 67, 117, 67, 117}; const T_word16 scrollBarY[4]= { 38, 87, 38, 87 }; const T_word16 dispWindowX1[4]= { 6, 6, 109, 109}; const T_word16 dispWindowY1[4]= { 28, 77, 28, 77 }; const T_word16 dispWindowX2[4]= { 95, 95, 198, 198}; const T_word16 dispWindowY2[4]= { 75, 125, 75, 125}; const E_TxtboxMode dispWindowMode[4]={Txtbox_MODE_SELECTION_BOX, Txtbox_MODE_VIEW_SCROLL_FORM, Txtbox_MODE_SELECTION_BOX, Txtbox_MODE_VIEW_SCROLL_FORM}; const E_TxtboxJustify dispWindowJustify[4]={Txtbox_JUSTIFY_LEFT, Txtbox_JUSTIFY_LEFT, Txtbox_JUSTIFY_CENTER, Txtbox_JUSTIFY_CENTER}; DebugRoutine ("GuildUIStart"); /* load backdrop */ G_backgroundPic=GraphicCreate (4,3,"UI/GUILD/GLDBACK"); for (i=GUILD_GAME_LIST;i<=GUILD_MAPS_DESC;i++) { /* set up display textboxes */ /* scroll bars and control arrows */ G_displayBoxes[i]=TxtboxCreate (dispWindowX1[i], dispWindowY1[i], dispWindowX2[i], dispWindowY2[i], "FontTiny", 0, 0, FALSE, dispWindowJustify[i], dispWindowMode[i], NULL); TxtboxSetData (G_displayBoxes[i]," "); G_upButtons[i]=ButtonCreate (arrowCoordX[i], upArrowCoordY[i], "UI/COMMON/UPARROW", FALSE, 0, NULL, GuildUIUpDisplay); ButtonSetData (G_upButtons[i],i); G_dnButtons[i]=ButtonCreate (arrowCoordX[i], dnArrowCoordY[i], "UI/COMMON/DNARROW", FALSE, 0, NULL, GuildUIDnDisplay); ButtonSetData (G_dnButtons[i],i); if (i%2==0) { G_scrollBars[i]=GraphicCreate (arrowCoordX[i], scrollBarY[i], "UI/GUILD/SB1"); } else { G_scrollBars[i]=GraphicCreate (arrowCoordX[i], scrollBarY[i], "UI/GUILD/SB1"); } TxtboxSetScrollBarObjIDs(G_displayBoxes[i],G_upButtons[i],G_dnButtons[i],G_scrollBars[i]); } /* set up control buttons */ G_joinButton=ButtonCreate (6, 127, "UI/GUILD/JOIN", FALSE, KeyDual(KEY_SCAN_CODE_J,KEY_SCAN_CODE_ALT), NULL, GuildUIJoinGame); G_createButton=ButtonCreate (109, 127, "UI/GUILD/CREATE", FALSE, KeyDual(KEY_SCAN_CODE_C,KEY_SCAN_CODE_ALT), NULL, GuildUICreateGame); /* build map list */ GuildUIBuildMapList(); /* initialize game/player listings */ G_gameList=DoubleLinkListCreate(); G_playerList=DoubleLinkListCreate(); /* set up control callbacks */ TxtboxSetCallback (G_displayBoxes[GUILD_MAPS_LIST],GuildDisplayMapInfo); TxtboxSetCallback (G_displayBoxes[GUILD_GAME_LIST],GuildDisplayGameInfo); /* notify server to send a list of active games */ GuildUIRequestGameList(); /* update graphics */ GraphicUpdateAllGraphics(); /* Set up what we are out. */ ClientSyncSetGameGroupID(*DirectTalkGetNullBlankUniqueAddress()) ; PeopleHereSetOurAdventure(0) ; PeopleHereSetOurState(PLAYER_ID_STATE_NONE) ; /* Ask for people to show themselves. */ PeopleHereReset() ; /* add journal help page if necessary */ if (StatsPlayerHasNotePage(30)==FALSE && StatsPlayerHasNotePage(0)==TRUE) { StatsAddPlayerNotePage(30); } DebugEnd(); }
T_void InnUIStart(T_word32 formNum) { T_word16 i; T_byte8 stmp[32]; T_word16 hotkey[4]; DebugRoutine("InnUIStart"); /* load backdrop */ G_backgroundPic = GraphicCreate(4, 3, "UI/INN/INNBACK"); hotkey[0] = KeyDual(KEY_SCAN_CODE_C,KEY_SCAN_CODE_ALT); hotkey[1] = KeyDual(KEY_SCAN_CODE_S,KEY_SCAN_CODE_ALT); hotkey[2] = KeyDual(KEY_SCAN_CODE_L,KEY_SCAN_CODE_ALT); hotkey[3] = KeyDual(KEY_SCAN_CODE_U,KEY_SCAN_CODE_ALT); for (i = 0; i < 4; i++) { /* place rent buttons */ sprintf(stmp, "UI/INN/ROOMBTN%d", i + 1); G_rentButtons[i] = ButtonCreate(45, 24 + (i * 28), stmp, FALSE, hotkey[i], NULL, InnUIRent); ButtonSetData(G_rentButtons[i], i); /* set up rent cost displays */ G_rentCostDisplays[i] = TxtboxCreate(45, 37 + (i * 28), 110, 46 + (i * 28), "FontMedium", 0, 0, TRUE, Txtbox_JUSTIFY_CENTER, Txtbox_MODE_VIEW_NOSCROLL_FORM, NULL); /* set up current funds display */ G_financeDisplays[i] = TxtboxCreate(164, 32 + (i * 11), 204, 41 + (i * 11), "FontMedium", 0, 0, TRUE, Txtbox_JUSTIFY_CENTER, Txtbox_MODE_VIEW_NOSCROLL_FORM, NULL); sprintf(stmp, "%d", StatsGetPlayerCoins(3-i)); TxtboxSetData(G_financeDisplays[i], stmp); } /* set rent prices */ TxtboxSetData(G_rentCostDisplays[0], "free!"); TxtboxSetData(G_rentCostDisplays[1], "2 gold"); TxtboxSetData(G_rentCostDisplays[2], "1 platinum"); TxtboxSetData(G_rentCostDisplays[3], "2 platinum"); GraphicUpdateAllGraphics(); /* welcome user */ MessageAdd("^007Welcome to the inn!"); /* add journal help page if necessary */ if (StatsPlayerHasNotePage(31) == FALSE && StatsPlayerHasNotePage(0) == TRUE) { StatsAddPlayerNotePage(31); } DebugEnd(); }
T_void BankUIStart (T_word32 formNum) { T_word16 i; T_byte8 stmp[64]; E_statsAdventureNumber adv=ADVENTURE_NONE; DebugRoutine ("BankUIStart"); /* load backdrop */ G_backgroundPic=GraphicCreate (4,3,"UI/BANK/BANKBACK"); for (i=0;i<4;i++) { /* load deposit/withdraw buttons */ G_depositButtons[i]=ButtonCreate(119, 32+(i*11), "UI/COMMON/LTARROW", FALSE, 0, NULL, BankUIDeposit); ButtonSetData(G_depositButtons[i],3-i); G_withdrawButtons[i]=ButtonCreate(131, 32+(i*11), "UI/COMMON/RTARROW", FALSE, 0, NULL, BankUIWithdraw); ButtonSetData(G_withdrawButtons[i],3-i); /* create financial display fields */ G_financeDisplays[i]=TxtboxCreate(57, 31+(i*11), 109, 40+(i*11), "FontMedium", 0, 0, TRUE, Txtbox_JUSTIFY_CENTER, Txtbox_MODE_VIEW_NOSCROLL_FORM, NULL); sprintf (stmp,"%d",StatsGetPlayerSavedCoins(3-i)); TxtboxSetData(G_financeDisplays[i],stmp); G_financeDisplays[i+4]=TxtboxCreate(148, 31+(i*11), 200, 40+(i*11), "FontMedium", 0, 0, TRUE, Txtbox_JUSTIFY_CENTER, Txtbox_MODE_VIEW_NOSCROLL_FORM, NULL); sprintf (stmp,"%d",StatsGetPlayerCoins(3-i)); TxtboxSetData(G_financeDisplays[i+4],stmp); } GraphicUpdateAllGraphics(); /* set up bank inventory */ StoreSetUpInventory(10,82,112,124,6,3); /* tell store what items we will buy */ StoreAddBuyType(EQUIP_OBJECT_TYPE_RING); StoreAddBuyType(EQUIP_OBJECT_TYPE_AMULET); adv=StatsGetCompletedAdventure(); switch (adv) { case ADVENTURE_7: /* Ring of Strength 2 */ StoreAddItem (408,1); /* Ring of Speed 2 */ StoreAddItem (430,1); /* Amulet of Quickness */ StoreAddItem (611,1); /* Amulet of Hiding */ StoreAddItem(609, 1); case ADVENTURE_6: /* Amulet of Speed */ StoreAddItem (602,1); /* Amulet of Mana Regeneration */ StoreAddItem (619,1); case ADVENTURE_5: /* Amulet of Accuracy */ StoreAddItem (605,1); /* Ring of Stealth */ StoreAddItem(438, 1); /* Ring of Armor 1 */ StoreAddItem (415,1); /* Amulet of Spell Focus */ StoreAddItem (600,1); case ADVENTURE_4: /* Ring of Regen 2 */ StoreAddItem(406, 1); /* Ring of Speed 1 */ StoreAddItem (429,1); /* Ring of Accuracy 2 */ StoreAddItem (421,1); case ADVENTURE_3: /* Ring of Strength 1 */ StoreAddItem (407,1); /* Ring of Map */ StoreAddItem (435,1); case ADVENTURE_2: /* Ring of Accuracy 1 */ StoreAddItem (420,1); case ADVENTURE_1: /* Amulet of Stealth */ StoreAddItem(603, 1); /* Ring of Regen 1 */ StoreAddItem(405, 1); case ADVENTURE_NONE: default: /* Ring of Food Conservation */ StoreAddItem (426,1); /* Ring of Water Conservation */ StoreAddItem (427,1); /* Ring of Water Walk */ StoreAddItem (400,1); /* Ring of Traction */ StoreAddItem (432,1); break; case ADVENTURE_UNKNOWN: DebugCheck(0); break; } /* Amulet of Falling */ /// StoreAddItem (614,1); /* Ring of Regen 2 */ // StoreAddItem (406,1); /* Ring of Strength 3 */ // StoreAddItem (409,1); /* Ring of Strength 4 */ // StoreAddItem (410,1); /* Ring of Strength 5 */ // StoreAddItem (411,1); /* Ring of Armor 2 */ // StoreAddItem (416,1); /* Ring of Armor 3 */ // StoreAddItem (417,1); /* Ring of Armor 4 */ // StoreAddItem (418,1); /* Ring of Armor 5 */ // StoreAddItem (419,1); /* Ring of Accuracy 3 */ // StoreAddItem (422,1); /* Ring of Accuracy 4 */ // StoreAddItem (423,1); /* Ring of Accuracy 5 */ // StoreAddItem (424,1); /* Ring of Speed 4 */ // StoreAddItem (428,1); /* Ring of Speed 3 */ // StoreAddItem (431,1); /* Ring of Jumping */ // StoreAddItem (434,1); /* Amulet of Regeneration */ // StoreAddItem (601,1); /* Amulet of Strength */ // StoreAddItem (604,1); /* Amulet of Poison Protection */ // StoreAddItem (606,1); /* Amulet of Fire Protection */ // StoreAddItem (607,1); /* Amulet of Lava Walk */ // StoreAddItem (608,1); /* Amulet of Eternal Nourishment */ // StoreAddItem (610,1); /* Amulet of Jumping */ // StoreAddItem (612,1); /* Amulet of Flying */ // StoreAddItem (613,1); /* Amulet of Super Armor */ // StoreAddItem (615,1); /* Amulet of Acid Protection */ // StoreAddItem (616,1); /* Amulet of Electricity Protection */ // StoreAddItem (617,1); /* Amulet of Mana Drain Protection */ // StoreAddItem (618,1); InventoryReorder(INVENTORY_STORE,TRUE); InventoryDrawInventoryWindow (INVENTORY_STORE); /* set up store control callback */ StoreSetControlCallback (BankUIUpdateGraphics); /* welcome user */ MessageAdd ("^007Welcome to the bank!"); /* add journal help page if necessary */ if (StatsPlayerHasNotePage(33)==FALSE && StatsPlayerHasNotePage(0)==TRUE) { StatsAddPlayerNotePage(33); } else { /* force loading of inventory banner display */ BannerOpenForm(BANNER_FORM_INVENTORY); } DebugEnd(); }