| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260 |
- #if defined previewmodel_dialog_included
- #endinput
- #endif
- #define previewmodel_dialog_included
- /**************************************/
- // PreviewModelDialog.inc - v4.4 - Last Updated: 8 Feb, 2018 - By Gammix
- /***************************************/
- // by BigETI
- #include <memory.inc>
- // definitions
- #if !defined MAX_DIALOG_PREVIEW_MODELS
- #define MAX_DIALOG_PREVIEW_MODELS 350
- #endif
- #if !defined MAX_DIALOG_PREVIEW_TEXTSIZE
- #define MAX_DIALOG_PREVIEW_TEXTSIZE 128
- #endif
- #define DIALOG_STYLE_PREVIEW_MODEL 6 // new dialog id definition
- #define DIALOG_STYLE_PREVMODEL DIALOG_STYLE_PREVIEW_MODEL
- #define MAX_DIALOG_PREVIEW_ROWS 2
- #define MAX_DIALOG_PREVIEW_COLUMNS 6
- #define DIALOG_PREVIEW_HORIZONTAL_GAP 56.5
- #define DIALOG_PREVIEW_VERTICAL_GAP 63.5
- #define DIALOG_PREVIEW_SELECT_COLOR 0xFF0000FF
- #define DIALOG_PREVIEW_UNSELECT_COLOR 0x464646FF
- #define SCROLL_BAR_UP_TEXTDRAW Prev@FrameTD[4]
- #define SCROLL_BAR_DOWN_TEXTDRAW Prev@FrameTD[6]
- #define LEFT_BUTTON_TEXTDRAW Prev@LeftButtonTD[0]
- #define RIGHT_BUTTON_TEXTDRAW Prev@RightButtonTD[0]
- #define CENTER_BUTTON_TEXTDRAW Prev@CenterButtonTD[0]
- #define LISTITEM_TEXTDRAW<%0> Prev@ModelTD[%0][0]
- #define LISTITEM_ROTATE_LEFT_TEXTDRAW<%0> Prev@ModelTD[%0][2]
- #define LISTITEM_ROTATE_RIGHT_TEXTDRAW<%0> Prev@ModelTD[%0][3]
- // variables
- static Text:Prev@FrameTD[8];
- static Text:Prev@LeftButtonTD[2];
- static Text:Prev@RightButtonTD[2];
- static Text:Prev@CenterButtonTD[2];
- static Text:Prev@ModelTD[MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS][4];
- static PlayerText:Prev@HeaderPTD[MAX_PLAYERS];
- static PlayerText:Prev@LeftButtonPTD[MAX_PLAYERS];
- static PlayerText:Prev@RightButtonPTD[MAX_PLAYERS];
- static PlayerText:Prev@CenterButtonPTD[MAX_PLAYERS];
- static PlayerText:Prev@PageNumberPTD[MAX_PLAYERS];
- static PlayerText:Prev@ScrollBarPTD[MAX_PLAYERS];
- static PlayerText:Prev@ModelTextPTD[MAX_PLAYERS][MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS][2];
- static bool:Prev@CancelSelection[MAX_PLAYERS];
- static Prev@PlayerDialogID[MAX_PLAYERS];
- static Prev@PlayerDialogListitem[MAX_PLAYERS];
- static Prev@PlayerDialogNumListitems[MAX_PLAYERS];
- static Prev@PlayerDialogPage[MAX_PLAYERS];
- static Prev@PlayerDialogTickCount[MAX_PLAYERS];
- static Pointer:Prev@PlayerModelsPointer[MAX_PLAYERS];
- static Pointer:Prev@PlayerModelRotsPointer[MAX_PLAYERS][4];
- static Pointer:Prev@PlayerModelNamesPointer[MAX_PLAYERS][MAX_DIALOG_PREVIEW_MODELS];
- // public function decleration
- ShowPreviewModelDialog(playerid, dialogid, caption[], models[], labels[][], button1[], button2[], size = sizeof models);
- SetDialogPreviewRotation(playerid, listitem, Float:rx, Float:ry, Float:rz, Float:zoom);
- // internal functions
- static Prev_GetNumPages(playerid) {
- new SIZE = Prev@PlayerDialogNumListitems[playerid];
- new PAGESIZE = (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS);
- return ((SIZE / PAGESIZE) + ((SIZE % PAGESIZE) ? 1 : 0));
- }
- static Prev_CancelSelectTextDraw(playerid) {
- Prev@CancelSelection[playerid] = true;
- return CancelSelectTextDraw(playerid);
- }
- static Prev_CreateTextDraws() {
- /*
- * FRAME
- */
- Prev@FrameTD[0] = TextDrawCreate(144.0000, 154.0000, "CONTENT_BOX");
- TextDrawFont(Prev@FrameTD[0], 2);
- TextDrawLetterSize(Prev@FrameTD[0], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[0], -1);
- TextDrawSetShadow(Prev@FrameTD[0], 0);
- TextDrawSetOutline(Prev@FrameTD[0], 0);
- TextDrawBackgroundColor(Prev@FrameTD[0], 255);
- TextDrawSetProportional(Prev@FrameTD[0], 1);
- TextDrawUseBox(Prev@FrameTD[0], 1);
- TextDrawBoxColor(Prev@FrameTD[0], 150);
- TextDrawTextSize(Prev@FrameTD[0], 501.0000, 0.0000);
- Prev@FrameTD[1] = TextDrawCreate(146.5000, 155.5000, "LD_SPAC:WHITE");
- TextDrawFont(Prev@FrameTD[1], 4);
- TextDrawLetterSize(Prev@FrameTD[1], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[1], -1);
- TextDrawSetShadow(Prev@FrameTD[1], 0);
- TextDrawSetOutline(Prev@FrameTD[1], 0);
- TextDrawBackgroundColor(Prev@FrameTD[1], 255);
- TextDrawSetProportional(Prev@FrameTD[1], 1);
- TextDrawUseBox(Prev@FrameTD[1], 1);
- TextDrawBoxColor(Prev@FrameTD[1], 150);
- TextDrawTextSize(Prev@FrameTD[1], 351.5000, 130.0000);
- Prev@FrameTD[2] = TextDrawCreate(147.0000, 156.0000, "LD_SPAC:BLACK");
- TextDrawFont(Prev@FrameTD[2], 4);
- TextDrawLetterSize(Prev@FrameTD[2], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[2], -1);
- TextDrawSetShadow(Prev@FrameTD[2], 0);
- TextDrawSetOutline(Prev@FrameTD[2], 0);
- TextDrawBackgroundColor(Prev@FrameTD[2], 255);
- TextDrawSetProportional(Prev@FrameTD[2], 1);
- TextDrawUseBox(Prev@FrameTD[2], 1);
- TextDrawBoxColor(Prev@FrameTD[2], 150);
- TextDrawTextSize(Prev@FrameTD[2], 340.5000, 129.0000);
- Prev@FrameTD[3] = TextDrawCreate(488.0000, 156.0000, "LD_SPAC:BLACK");
- TextDrawFont(Prev@FrameTD[3], 4);
- TextDrawLetterSize(Prev@FrameTD[3], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[3], -1);
- TextDrawSetShadow(Prev@FrameTD[3], 0);
- TextDrawSetOutline(Prev@FrameTD[3], 0);
- TextDrawBackgroundColor(Prev@FrameTD[3], 255);
- TextDrawSetProportional(Prev@FrameTD[3], 1);
- TextDrawUseBox(Prev@FrameTD[3], 1);
- TextDrawBoxColor(Prev@FrameTD[3], 150);
- TextDrawTextSize(Prev@FrameTD[3], 9.5000, 129.0000);
- // button for scrolling up
- Prev@FrameTD[4] = TextDrawCreate(488.0000, 156.0000, "LD_POOL:BALL");
- TextDrawFont(Prev@FrameTD[4], 4);
- TextDrawLetterSize(Prev@FrameTD[4], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[4], -1);
- TextDrawSetShadow(Prev@FrameTD[4], 0);
- TextDrawSetOutline(Prev@FrameTD[4], 0);
- TextDrawBackgroundColor(Prev@FrameTD[4], 255);
- TextDrawSetProportional(Prev@FrameTD[4], 1);
- TextDrawUseBox(Prev@FrameTD[4], 1);
- TextDrawBoxColor(Prev@FrameTD[4], 150);
- TextDrawTextSize(Prev@FrameTD[4], 9.5000, 9.5000);
- TextDrawSetSelectable(Prev@FrameTD[4], 1);
- //
- Prev@FrameTD[5] = TextDrawCreate(489.0000, 156.5000, "LD_BEAT:UP");
- TextDrawFont(Prev@FrameTD[5], 4);
- TextDrawLetterSize(Prev@FrameTD[5], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[5], 255);
- TextDrawSetShadow(Prev@FrameTD[5], 0);
- TextDrawSetOutline(Prev@FrameTD[5], 0);
- TextDrawBackgroundColor(Prev@FrameTD[5], 255);
- TextDrawSetProportional(Prev@FrameTD[5], 1);
- TextDrawUseBox(Prev@FrameTD[5], 1);
- TextDrawBoxColor(Prev@FrameTD[5], 150);
- TextDrawTextSize(Prev@FrameTD[5], 7.5000, 7.5000);
- // button for scrolling down
- Prev@FrameTD[6] = TextDrawCreate(488.0000, 275.5000, "LD_POOL:BALL");
- TextDrawFont(Prev@FrameTD[6], 4);
- TextDrawLetterSize(Prev@FrameTD[6], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[6], -1);
- TextDrawSetShadow(Prev@FrameTD[6], 0);
- TextDrawSetOutline(Prev@FrameTD[6], 0);
- TextDrawBackgroundColor(Prev@FrameTD[6], 255);
- TextDrawSetProportional(Prev@FrameTD[6], 1);
- TextDrawUseBox(Prev@FrameTD[6], 1);
- TextDrawBoxColor(Prev@FrameTD[6], 150);
- TextDrawTextSize(Prev@FrameTD[6], 9.5000, 9.5000);
- TextDrawSetSelectable(Prev@FrameTD[6], 1);
- //
- Prev@FrameTD[7] = TextDrawCreate(489.0000, 277.0000, "LD_BEAT:DOWN");
- TextDrawFont(Prev@FrameTD[7], 4);
- TextDrawLetterSize(Prev@FrameTD[7], 0.0000, 18.2000);
- TextDrawColor(Prev@FrameTD[7], 255);
- TextDrawSetShadow(Prev@FrameTD[7], 0);
- TextDrawSetOutline(Prev@FrameTD[7], 0);
- TextDrawBackgroundColor(Prev@FrameTD[7], 255);
- TextDrawSetProportional(Prev@FrameTD[7], 1);
- TextDrawUseBox(Prev@FrameTD[7], 1);
- TextDrawBoxColor(Prev@FrameTD[7], 150);
- TextDrawTextSize(Prev@FrameTD[7], 7.5000, 7.5000);
- /*
- * LEFT BUTTON (button1)
- */
- // left button for response type "1"
- Prev@LeftButtonTD[0] = TextDrawCreate(260.0000, 293.0000, "LD_SPAC:WHITE");
- TextDrawFont(Prev@LeftButtonTD[0], 4);
- TextDrawLetterSize(Prev@LeftButtonTD[0], 0.5000, 1.0000);
- TextDrawColor(Prev@LeftButtonTD[0], -1);
- TextDrawSetShadow(Prev@LeftButtonTD[0], 0);
- TextDrawSetOutline(Prev@LeftButtonTD[0], 0);
- TextDrawBackgroundColor(Prev@LeftButtonTD[0], 255);
- TextDrawSetProportional(Prev@LeftButtonTD[0], 1);
- TextDrawTextSize(Prev@LeftButtonTD[0], 55.0000, 18.0000);
- TextDrawSetSelectable(Prev@LeftButtonTD[0], 1);
- //
- Prev@LeftButtonTD[1] = TextDrawCreate(260.5000, 293.5000, "LD_SPAC:BLACK");
- TextDrawFont(Prev@LeftButtonTD[1], 4);
- TextDrawLetterSize(Prev@LeftButtonTD[1], 0.5000, 1.0000);
- TextDrawColor(Prev@LeftButtonTD[1], -1);
- TextDrawSetShadow(Prev@LeftButtonTD[1], 0);
- TextDrawSetOutline(Prev@LeftButtonTD[1], 0);
- TextDrawBackgroundColor(Prev@LeftButtonTD[1], 255);
- TextDrawSetProportional(Prev@LeftButtonTD[1], 1);
- TextDrawTextSize(Prev@LeftButtonTD[1], 54.0000, 17.0000);
- /*
- * RIGHT BUTTON (button2)
- */
- // right button for response type "0"
- Prev@RightButtonTD[0] = TextDrawCreate(325.0000, 293.0000, "LD_SPAC:WHITE");
- TextDrawFont(Prev@RightButtonTD[0], 4);
- TextDrawLetterSize(Prev@RightButtonTD[0], 0.5000, 1.0000);
- TextDrawColor(Prev@RightButtonTD[0], -1);
- TextDrawSetShadow(Prev@RightButtonTD[0], 0);
- TextDrawSetOutline(Prev@RightButtonTD[0], 0);
- TextDrawBackgroundColor(Prev@RightButtonTD[0], 255);
- TextDrawSetProportional(Prev@RightButtonTD[0], 1);
- TextDrawTextSize(Prev@RightButtonTD[0], 55.0000, 18.0000);
- TextDrawSetSelectable(Prev@RightButtonTD[0], 1);
- //
- Prev@RightButtonTD[1] = TextDrawCreate(325.5000, 293.5000, "LD_SPAC:BLACK");
- TextDrawFont(Prev@RightButtonTD[1], 4);
- TextDrawLetterSize(Prev@RightButtonTD[1], 0.5000, 1.0000);
- TextDrawColor(Prev@RightButtonTD[1], -1);
- TextDrawSetShadow(Prev@RightButtonTD[1], 0);
- TextDrawSetOutline(Prev@RightButtonTD[1], 0);
- TextDrawBackgroundColor(Prev@RightButtonTD[1], 255);
- TextDrawSetProportional(Prev@RightButtonTD[1], 1);
- TextDrawTextSize(Prev@RightButtonTD[1], 54.0000, 17.0000);
- /*
- * CENTER BUTTON (button3)
- */
- // right button for response type "0"
- Prev@CenterButtonTD[0] = TextDrawCreate(290.5000, 293.0000, "LD_SPAC:WHITE");
- TextDrawFont(Prev@CenterButtonTD[0], 4);
- TextDrawLetterSize(Prev@CenterButtonTD[0], 0.5000, 1.0000);
- TextDrawColor(Prev@CenterButtonTD[0], -1);
- TextDrawSetShadow(Prev@CenterButtonTD[0], 0);
- TextDrawSetOutline(Prev@CenterButtonTD[0], 0);
- TextDrawBackgroundColor(Prev@CenterButtonTD[0], 255);
- TextDrawSetProportional(Prev@CenterButtonTD[0], 1);
- TextDrawTextSize(Prev@CenterButtonTD[0], 55.0000, 18.0000);
- TextDrawSetSelectable(Prev@CenterButtonTD[0], 1);
- //
- Prev@CenterButtonTD[1] = TextDrawCreate(291.0000, 293.5000, "LD_SPAC:BLACK");
- TextDrawFont(Prev@CenterButtonTD[1], 4);
- TextDrawLetterSize(Prev@CenterButtonTD[1], 0.5000, 1.0000);
- TextDrawColor(Prev@CenterButtonTD[1], -1);
- TextDrawSetShadow(Prev@CenterButtonTD[1], 0);
- TextDrawSetOutline(Prev@CenterButtonTD[1], 0);
- TextDrawBackgroundColor(Prev@CenterButtonTD[1], 255);
- TextDrawSetProportional(Prev@CenterButtonTD[1], 1);
- TextDrawTextSize(Prev@CenterButtonTD[1], 54.0000, 17.0000);
- /*
- * PREVIEW MODEL LISTITEMS
- */
- new textdrawid;
- for (new a = 0; a < MAX_DIALOG_PREVIEW_ROWS; a++) {
- for (new b = 0; b < MAX_DIALOG_PREVIEW_COLUMNS; b++) {
- textdrawid = ((a * MAX_DIALOG_PREVIEW_COLUMNS) + b);
- // listitem border button to select item
- Prev@ModelTD[textdrawid][0] = TextDrawCreate((148.5000 + (b * DIALOG_PREVIEW_HORIZONTAL_GAP)), (157.5000 + (a * DIALOG_PREVIEW_VERTICAL_GAP)), "LD_SPAC:WHITE");
- TextDrawFont(Prev@ModelTD[textdrawid][0], 4);
- TextDrawLetterSize(Prev@ModelTD[textdrawid][0], 0.5000, 1.0000);
- TextDrawColor(Prev@ModelTD[textdrawid][0], -16776961);
- TextDrawSetShadow(Prev@ModelTD[textdrawid][0], 0);
- TextDrawSetOutline(Prev@ModelTD[textdrawid][0], 0);
- TextDrawBackgroundColor(Prev@ModelTD[textdrawid][0], 255);
- TextDrawSetProportional(Prev@ModelTD[textdrawid][0], 1);
- TextDrawTextSize(Prev@ModelTD[textdrawid][0], 55.0000, 62.0000);
- TextDrawSetSelectable(Prev@ModelTD[textdrawid][0], 1);
- //
- Prev@ModelTD[textdrawid][1] = TextDrawCreate((149.0000 + (b * DIALOG_PREVIEW_HORIZONTAL_GAP)), (158.0000 + (a * DIALOG_PREVIEW_VERTICAL_GAP)), "MODEL");
- TextDrawFont(Prev@ModelTD[textdrawid][1], 5);
- TextDrawLetterSize(Prev@ModelTD[textdrawid][1], 0.5000, 1.0000);
- TextDrawColor(Prev@ModelTD[textdrawid][1], -1);
- TextDrawSetShadow(Prev@ModelTD[textdrawid][1], 0);
- TextDrawSetOutline(Prev@ModelTD[textdrawid][1], 0);
- TextDrawBackgroundColor(Prev@ModelTD[textdrawid][1], 842150655);
- TextDrawSetProportional(Prev@ModelTD[textdrawid][1], 1);
- TextDrawTextSize(Prev@ModelTD[textdrawid][1], 54.0000, 61.0000);
- TextDrawSetPreviewModel(Prev@ModelTD[textdrawid][1], 132);
- TextDrawSetPreviewRot(Prev@ModelTD[textdrawid][1], 0.0000, 0.0000, -50.0000, 1.0000);
- // listitem rotation button (left)
- Prev@ModelTD[textdrawid][2] = TextDrawCreate((151.5000 + (b * DIALOG_PREVIEW_HORIZONTAL_GAP)), (181.5000 + (a * DIALOG_PREVIEW_VERTICAL_GAP)), "LD_BEAT:LEFT");
- TextDrawFont(Prev@ModelTD[textdrawid][2], 4);
- TextDrawLetterSize(Prev@ModelTD[textdrawid][2], 0.5000, 1.0000);
- TextDrawColor(Prev@ModelTD[textdrawid][2], -156);
- TextDrawSetShadow(Prev@ModelTD[textdrawid][2], 0);
- TextDrawSetOutline(Prev@ModelTD[textdrawid][2], 0);
- TextDrawBackgroundColor(Prev@ModelTD[textdrawid][2], 255);
- TextDrawSetProportional(Prev@ModelTD[textdrawid][2], 1);
- TextDrawTextSize(Prev@ModelTD[textdrawid][2], 15.0000, 15.0000);
- TextDrawSetSelectable(Prev@ModelTD[textdrawid][2], 1);
- //
- // listitem rotation button (right)
- Prev@ModelTD[textdrawid][3] = TextDrawCreate((185.0000 + (b * DIALOG_PREVIEW_HORIZONTAL_GAP)), (181.5000 + (a * DIALOG_PREVIEW_VERTICAL_GAP)), "LD_BEAT:RIGHT");
- TextDrawFont(Prev@ModelTD[textdrawid][3], 4);
- TextDrawLetterSize(Prev@ModelTD[textdrawid][3], 0.5000, 1.0000);
- TextDrawColor(Prev@ModelTD[textdrawid][3], -156);
- TextDrawSetShadow(Prev@ModelTD[textdrawid][3], 0);
- TextDrawSetOutline(Prev@ModelTD[textdrawid][3], 0);
- TextDrawBackgroundColor(Prev@ModelTD[textdrawid][3], 255);
- TextDrawSetProportional(Prev@ModelTD[textdrawid][3], 1);
- TextDrawTextSize(Prev@ModelTD[textdrawid][3], 15.0000, 15.0000);
- TextDrawSetSelectable(Prev@ModelTD[textdrawid][3], 1);
- //
- }
- }
- }
- static Prev_DestroyTextDraws() {
- /*
- * FRAME
- */
- for (new i = 0; i < sizeof Prev@FrameTD; i++) {
- TextDrawDestroy(Prev@FrameTD[i]);
- }
- /*
- * LEFT BUTTON (button1)
- */
- TextDrawDestroy(Prev@LeftButtonTD[0]);
- TextDrawDestroy(Prev@LeftButtonTD[1]);
- /*
- * RIGHT BUTTON (button2)
- */
- TextDrawDestroy(Prev@RightButtonTD[0]);
- TextDrawDestroy(Prev@RightButtonTD[1]);
- /*
- * CENTER BUTTON (button1)
- */
- TextDrawDestroy(Prev@CenterButtonTD[0]);
- TextDrawDestroy(Prev@CenterButtonTD[1]);
- /*
- * PREVIEW MODEL LISTITEMS
- */
- for (new i = 0; i < (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS); i++) {
- TextDrawDestroy(Prev@ModelTD[i][0]);
- TextDrawDestroy(Prev@ModelTD[i][1]);
- TextDrawDestroy(Prev@ModelTD[i][2]);
- TextDrawDestroy(Prev@ModelTD[i][3]);
- }
- }
- static Prev_CreatePlayerTextDraws(playerid, header[], button1[], button2[], button3[], totalItems) {
- /*
- * HEADER
- */
- Prev@HeaderPTD[playerid] = CreatePlayerTextDraw(playerid, 144.0000, 143.0000, header);
- PlayerTextDrawFont(playerid, Prev@HeaderPTD[playerid], 2);
- PlayerTextDrawLetterSize(playerid, Prev@HeaderPTD[playerid], 0.1399, 0.8999);
- PlayerTextDrawColor(playerid, Prev@HeaderPTD[playerid], -1);
- PlayerTextDrawSetShadow(playerid, Prev@HeaderPTD[playerid], 0);
- PlayerTextDrawSetOutline(playerid, Prev@HeaderPTD[playerid], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@HeaderPTD[playerid], 255);
- PlayerTextDrawSetProportional(playerid, Prev@HeaderPTD[playerid], 1);
- PlayerTextDrawUseBox(playerid, Prev@HeaderPTD[playerid], 1);
- PlayerTextDrawBoxColor(playerid, Prev@HeaderPTD[playerid], 255);
- PlayerTextDrawTextSize(playerid, Prev@HeaderPTD[playerid], 501.0000, 0.0000);
- /*
- * LEFT BUTTON (button1)
- */
- if (button1[0] != EOS) {
- Prev@LeftButtonPTD[playerid] = CreatePlayerTextDraw(playerid, 287.5000, 297.0000, button1);
- PlayerTextDrawFont(playerid, Prev@LeftButtonPTD[playerid], 2);
- PlayerTextDrawLetterSize(playerid, Prev@LeftButtonPTD[playerid], 0.1399, 0.8999);
- PlayerTextDrawAlignment(playerid, Prev@LeftButtonPTD[playerid], 2);
- PlayerTextDrawColor(playerid, Prev@LeftButtonPTD[playerid], -1);
- PlayerTextDrawSetShadow(playerid, Prev@LeftButtonPTD[playerid], 0);
- PlayerTextDrawSetOutline(playerid, Prev@LeftButtonPTD[playerid], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@LeftButtonPTD[playerid], 255);
- PlayerTextDrawSetProportional(playerid, Prev@LeftButtonPTD[playerid], 1);
- PlayerTextDrawTextSize(playerid, Prev@LeftButtonPTD[playerid], 0.0000, 480.0000);
- } else {
- Prev@LeftButtonPTD[playerid] = PlayerText:INVALID_TEXT_DRAW;
- }
- /*
- * RIGHT BUTTON (button2)
- */
- if (button2[0] != EOS) {
- Prev@RightButtonPTD[playerid] = CreatePlayerTextDraw(playerid, 352.5000, 297.0000, button2);
- PlayerTextDrawFont(playerid, Prev@RightButtonPTD[playerid], 2);
- PlayerTextDrawLetterSize(playerid, Prev@RightButtonPTD[playerid], 0.1399, 0.8999);
- PlayerTextDrawAlignment(playerid, Prev@RightButtonPTD[playerid], 2);
- PlayerTextDrawColor(playerid, Prev@RightButtonPTD[playerid], -1);
- PlayerTextDrawSetShadow(playerid, Prev@RightButtonPTD[playerid], 0);
- PlayerTextDrawSetOutline(playerid, Prev@RightButtonPTD[playerid], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@RightButtonPTD[playerid], 255);
- PlayerTextDrawSetProportional(playerid, Prev@RightButtonPTD[playerid], 1);
- PlayerTextDrawTextSize(playerid, Prev@RightButtonPTD[playerid], 0.0000, 480.0000);
- } else {
- Prev@RightButtonPTD[playerid] = PlayerText:INVALID_TEXT_DRAW;
- }
- /*
- * CENTER BUTTON (button3)
- */
- if (button3[0] != EOS) {
- Prev@CenterButtonPTD[playerid] = CreatePlayerTextDraw(playerid, 318.0000, 297.0000, button3);
- PlayerTextDrawFont(playerid, Prev@CenterButtonPTD[playerid], 2);
- PlayerTextDrawLetterSize(playerid, Prev@CenterButtonPTD[playerid], 0.1399, 0.8999);
- PlayerTextDrawAlignment(playerid, Prev@CenterButtonPTD[playerid], 2);
- PlayerTextDrawColor(playerid, Prev@CenterButtonPTD[playerid], -1);
- PlayerTextDrawSetShadow(playerid, Prev@CenterButtonPTD[playerid], 0);
- PlayerTextDrawSetOutline(playerid, Prev@CenterButtonPTD[playerid], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@CenterButtonPTD[playerid], 255);
- PlayerTextDrawSetProportional(playerid, Prev@CenterButtonPTD[playerid], 1);
- PlayerTextDrawTextSize(playerid, Prev@CenterButtonPTD[playerid], 0.0000, 480.0000);
- } else {
- Prev@CenterButtonPTD[playerid] = PlayerText:INVALID_TEXT_DRAW;
- }
- /*
- * PAGE NUMBER
- */
- if (totalItems > (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) { // if there are more than "12" listitems, create page textdraw
- Prev@PageNumberPTD[playerid] = CreatePlayerTextDraw(playerid, 501.5000, 143.0000, "Page: 1");
- PlayerTextDrawFont(playerid, Prev@PageNumberPTD[playerid], 2);
- PlayerTextDrawLetterSize(playerid, Prev@PageNumberPTD[playerid], 0.1399, 0.8999);
- PlayerTextDrawAlignment(playerid, Prev@PageNumberPTD[playerid], 3);
- PlayerTextDrawColor(playerid, Prev@PageNumberPTD[playerid], -1);
- PlayerTextDrawSetShadow(playerid, Prev@PageNumberPTD[playerid], 0);
- PlayerTextDrawSetOutline(playerid, Prev@PageNumberPTD[playerid], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@PageNumberPTD[playerid], 255);
- PlayerTextDrawSetProportional(playerid, Prev@PageNumberPTD[playerid], 1);
- PlayerTextDrawTextSize(playerid, Prev@PageNumberPTD[playerid], 501.0000, 0.0000);
- } else {
- Prev@PageNumberPTD[playerid] = PlayerText:INVALID_TEXT_DRAW;
- }
- /*
- * PREVIEW MODEL LISTITEMS
- */
- new textdrawid;
- for (new a = 0; a < MAX_DIALOG_PREVIEW_ROWS; a++) {
- for (new b = 0; b < MAX_DIALOG_PREVIEW_COLUMNS; b++) {
- textdrawid = ((a * MAX_DIALOG_PREVIEW_COLUMNS) + b);
- if (textdrawid >= totalItems) {
- Prev@ModelTextPTD[playerid][textdrawid][0] = PlayerText:INVALID_TEXT_DRAW;
- Prev@ModelTextPTD[playerid][textdrawid][1] = PlayerText:INVALID_TEXT_DRAW;
- continue;
- }
- Prev@ModelTextPTD[playerid][textdrawid][0] = CreatePlayerTextDraw(playerid, (153.5000 + (b * DIALOG_PREVIEW_HORIZONTAL_GAP)), (161.5000 + (a * DIALOG_PREVIEW_VERTICAL_GAP)), "");
- PlayerTextDrawFont(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], 2);
- PlayerTextDrawLetterSize(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], 0.1399, 0.8999);
- PlayerTextDrawColor(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], -1);
- PlayerTextDrawSetShadow(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], 0);
- PlayerTextDrawSetOutline(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], 255);
- PlayerTextDrawSetProportional(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], 1);
- PlayerTextDrawTextSize(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], 640.0000, 480.0000);
- Prev@ModelTextPTD[playerid][textdrawid][1] = CreatePlayerTextDraw(playerid, (176.5000 + (b * DIALOG_PREVIEW_HORIZONTAL_GAP)), (204.5000 + (a * DIALOG_PREVIEW_VERTICAL_GAP)), "0.0");
- PlayerTextDrawFont(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 2);
- PlayerTextDrawLetterSize(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 0.1399, 0.8999);
- PlayerTextDrawAlignment(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 2);
- PlayerTextDrawColor(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], -156);
- PlayerTextDrawSetShadow(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 0);
- PlayerTextDrawSetOutline(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 255);
- PlayerTextDrawSetProportional(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 1);
- PlayerTextDrawTextSize(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], 640.0000, 480.0000);
- }
- }
- /*
- * SCROLLBAR
- */
- Prev@ScrollBarPTD[playerid] = PlayerText:INVALID_TEXT_DRAW; // we will create this later if needed in dialog
- }
- static Prev_DestroyPlayerTextDraws(playerid) {
- /*
- * HEADER
- */
- PlayerTextDrawDestroy(playerid, Prev@HeaderPTD[playerid]);
- /*
- * LEFT BUTTON (button1)
- */
- PlayerTextDrawDestroy(playerid, Prev@LeftButtonPTD[playerid]);
- /*
- * RIGHT BUTTON (button2)
- */
- PlayerTextDrawDestroy(playerid, Prev@RightButtonPTD[playerid]);
- /*
- * CENTER BUTTON (button3)
- */
- PlayerTextDrawDestroy(playerid, Prev@CenterButtonPTD[playerid]);
- /*
- * PAGE NUMBER
- */
- PlayerTextDrawDestroy(playerid, Prev@PageNumberPTD[playerid]);
- /*
- * SCROLLBAR
- */
- PlayerTextDrawDestroy(playerid, Prev@ScrollBarPTD[playerid]);
- /*
- * PREVIEW MODEL LISTITEMS
- */
- for (new i = 0; i < (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS); i++) {
- PlayerTextDrawDestroy(playerid, Prev@ModelTextPTD[playerid][i][0]);
- PlayerTextDrawDestroy(playerid, Prev@ModelTextPTD[playerid][i][1]);
- }
- }
- static Prev_UpdateScrollBar(playerid, page, totalPages) {
- PlayerTextDrawDestroy(playerid, Prev@ScrollBarPTD[playerid]);
- const Float:MAX_HEIGHT = 108.0000;
- new Float:height = (MAX_HEIGHT / totalPages);
- new Float:y = 166.5000;
- y += (height * page);
- Prev@ScrollBarPTD[playerid] = CreatePlayerTextDraw(playerid, 489.0000, y, "LD_SPAC:WHITE");
- PlayerTextDrawFont(playerid, Prev@ScrollBarPTD[playerid], 4);
- PlayerTextDrawLetterSize(playerid, Prev@ScrollBarPTD[playerid], 0.0000, 18.2000);
- PlayerTextDrawColor(playerid, Prev@ScrollBarPTD[playerid], -16776961);
- PlayerTextDrawSetShadow(playerid, Prev@ScrollBarPTD[playerid], 0);
- PlayerTextDrawSetOutline(playerid, Prev@ScrollBarPTD[playerid], 0);
- PlayerTextDrawBackgroundColor(playerid, Prev@ScrollBarPTD[playerid], 255);
- PlayerTextDrawSetProportional(playerid, Prev@ScrollBarPTD[playerid], 1);
- PlayerTextDrawUseBox(playerid, Prev@ScrollBarPTD[playerid], 1);
- PlayerTextDrawBoxColor(playerid, Prev@ScrollBarPTD[playerid], 150);
- PlayerTextDrawTextSize(playerid, Prev@ScrollBarPTD[playerid], 7.5000, height);
- PlayerTextDrawShow(playerid, Prev@ScrollBarPTD[playerid]);
- }
- static Prev_UpdateListitems(playerid, page, selected, totalItems) {
- new textdrawid;
- new listitem;
- new name[MAX_DIALOG_PREVIEW_TEXTSIZE];
- for (new a = 0; a < MAX_DIALOG_PREVIEW_ROWS; a++) {
- for (new b = 0; b < MAX_DIALOG_PREVIEW_COLUMNS; b++) {
- textdrawid = ((a * MAX_DIALOG_PREVIEW_COLUMNS) + b);
- listitem = ((page * (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) + textdrawid);
- if (listitem >= totalItems) {
- TextDrawHideForPlayer(playerid, Prev@ModelTD[textdrawid][0]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[textdrawid][1]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[textdrawid][2]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[textdrawid][3]);
- PlayerTextDrawHide(playerid, Prev@ModelTextPTD[playerid][textdrawid][0]);
- PlayerTextDrawHide(playerid, Prev@ModelTextPTD[playerid][textdrawid][1]);
- continue;
- }
- TextDrawSetPreviewModel(Prev@ModelTD[textdrawid][1], MEM_get_val(Prev@PlayerModelsPointer[playerid], listitem));
- TextDrawSetPreviewRot(Prev@ModelTD[textdrawid][1], Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][0], listitem), Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][1], listitem), Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][2], listitem), Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][3], listitem));
- TextDrawShowForPlayer(playerid, Prev@ModelTD[textdrawid][1]);
- if (textdrawid == selected) {
- TextDrawColor(Prev@ModelTD[textdrawid][0], DIALOG_PREVIEW_SELECT_COLOR);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[textdrawid][0]);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[textdrawid][2]);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[textdrawid][3]);
- new string[16];
- format(string, sizeof string, "%0.1f", Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][3], listitem));
- PlayerTextDrawSetString(playerid, Prev@ModelTextPTD[playerid][textdrawid][1], string);
- PlayerTextDrawShow(playerid, Prev@ModelTextPTD[playerid][textdrawid][1]);
- } else {
- TextDrawColor(Prev@ModelTD[textdrawid][0], DIALOG_PREVIEW_UNSELECT_COLOR);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[textdrawid][0]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[textdrawid][2]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[textdrawid][3]);
- PlayerTextDrawHide(playerid, Prev@ModelTextPTD[playerid][textdrawid][1]);
- }
- if (MEM_get_arr(Prev@PlayerModelNamesPointer[playerid][listitem], 0, name, MEM_get_size(Prev@PlayerModelNamesPointer[playerid][listitem])) != MEM_NULLFEPTR) {
- PlayerTextDrawSetString(playerid, Prev@ModelTextPTD[playerid][textdrawid][0], name);
- PlayerTextDrawShow(playerid, Prev@ModelTextPTD[playerid][textdrawid][0]);
- } else {
- PlayerTextDrawHide(playerid, Prev@ModelTextPTD[playerid][textdrawid][0]);
- }
- }
- }
- new string[16];
- format(string, sizeof string, "PAGE: %i/%i", (page + 1), Prev_GetNumPages(playerid));
- PlayerTextDrawSetString(playerid, Prev@PageNumberPTD[playerid], string);
- }
- static Prev_HidePlayerDialog(playerid) {
- /*
- * FRAME
- */
- for (new i = 0; i < sizeof Prev@FrameTD; i++) {
- TextDrawHideForPlayer(playerid, Prev@FrameTD[i]);
- }
- /*
- * LEFT BUTTON
- */
- TextDrawHideForPlayer(playerid, Prev@LeftButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@LeftButtonTD[1]);
- /*
- * RIGHT BUTTON
- */
- TextDrawHideForPlayer(playerid, Prev@RightButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@RightButtonTD[1]);
- /*
- * CENTER BUTTON
- */
- TextDrawHideForPlayer(playerid, Prev@CenterButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@CenterButtonTD[1]);
- /*
- * PREVIEW MODEL LISTITEMS
- */
- for (new i = 0; i < (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS); i++) {
- TextDrawHideForPlayer(playerid, Prev@ModelTD[i][0]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[i][1]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[i][2]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[i][3]);
- }
- /*
- * DESTROY DIALOG PLAYER TEXTDRAWS
- */
- Prev_DestroyPlayerTextDraws(playerid);
- // reset player data
- MEM_delete(Prev@PlayerModelsPointer[playerid]);
- Prev@PlayerModelsPointer[playerid] = MEM_NULLPTR;
- for (new i = 0; i < Prev@PlayerDialogNumListitems[playerid]; i++) {
- MEM_delete(Prev@PlayerModelNamesPointer[playerid][i]);
- Prev@PlayerModelNamesPointer[playerid][i] = MEM_NULLPTR;
- }
- Prev@PlayerDialogID[playerid] = -1;
- return Prev_CancelSelectTextDraw(playerid);
- }
- // hooked methods
- public OnGameModeInit() {
- Prev_CreateTextDraws();
- #if defined PDialog_OnGameModeInit
- return PDialog_OnGameModeInit();
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit PDialog_OnGameModeInit
- #if defined PDialog_OnGameModeInit
- forward PDialog_OnGameModeInit();
- #endif
- public OnGameModeExit() {
- Prev_DestroyTextDraws();
- #if defined PDialog_OnGameModeExit
- return PDialog_OnGameModeExit();
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnGameModeExit
- #undef OnGameModeExit
- #else
- #define _ALS_OnGameModeExit
- #endif
- #define OnGameModeExit PDialog_OnGameModeExit
- #if defined PDialog_OnGameModeExit
- forward PDialog_OnGameModeExit();
- #endif
- public OnFilterScriptInit() {
- Prev_CreateTextDraws();
- #if defined PDialog_OnFilterScriptInit
- return PDialog_OnFilterScriptInit();
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnFilterScriptInit
- #undef OnFilterScriptInit
- #else
- #define _ALS_OnFilterScriptInit
- #endif
- #define OnFilterScriptInit PDialog_OnFilterScriptInit
- #if defined PDialog_OnFilterScriptInit
- forward PDialog_OnFilterScriptInit();
- #endif
- public OnFilterScriptExit() {
- Prev_DestroyTextDraws();
- #if defined PDialog_OnFilterScriptExit
- return PDialog_OnFilterScriptExit();
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnFilterScriptExit
- #undef OnFilterScriptExit
- #else
- #define _ALS_OnFilterScriptExit
- #endif
- #define OnFilterScriptExit PDialog_OnFilterScriptExit
- #if defined PDialog_OnFilterScriptExit
- forward PDialog_OnFilterScriptExit();
- #endif
- public OnPlayerConnect(playerid) {
- Prev@CancelSelection[playerid] = false;
- Prev@PlayerDialogID[playerid] = -1;
- static const Float:__ROTATIONS[MAX_DIALOG_PREVIEW_MODELS] = {0.0, ...};
- Prev@PlayerModelRotsPointer[playerid][0] = MEM_new_arr(_:__ROTATIONS, MAX_DIALOG_PREVIEW_MODELS);
- Prev@PlayerModelRotsPointer[playerid][1] = MEM_new_arr(_:__ROTATIONS, MAX_DIALOG_PREVIEW_MODELS);
- Prev@PlayerModelRotsPointer[playerid][2] = MEM_new_arr(_:__ROTATIONS, MAX_DIALOG_PREVIEW_MODELS);
- static const Float:__ZOOM[MAX_DIALOG_PREVIEW_MODELS] = {1.0, ...};
- Prev@PlayerModelRotsPointer[playerid][3] = MEM_new_arr(_:__ZOOM, MAX_DIALOG_PREVIEW_MODELS);
- #if defined PDialog_OnPlayerConnect
- return PDialog_OnPlayerConnect(playerid);
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #define OnPlayerConnect PDialog_OnPlayerConnect
- #if defined PDialog_OnPlayerConnect
- forward PDialog_OnPlayerConnect(playerid);
- #endif
- public OnPlayerDisconnect(playerid, reason) {
- MEM_delete(Prev@PlayerModelsPointer[playerid]);
- Prev@PlayerModelsPointer[playerid] = MEM_NULLPTR;
- MEM_delete(Prev@PlayerModelRotsPointer[playerid][0]);
- MEM_delete(Prev@PlayerModelRotsPointer[playerid][1]);
- MEM_delete(Prev@PlayerModelRotsPointer[playerid][2]);
- MEM_delete(Prev@PlayerModelRotsPointer[playerid][3]);
- Prev@PlayerModelRotsPointer[playerid][0] = MEM_NULLPTR;
- Prev@PlayerModelRotsPointer[playerid][1] = MEM_NULLPTR;
- Prev@PlayerModelRotsPointer[playerid][2] = MEM_NULLPTR;
- Prev@PlayerModelRotsPointer[playerid][3] = MEM_NULLPTR;
- for (new i = 0; i < Prev@PlayerDialogNumListitems[playerid]; i++) {
- MEM_delete(Prev@PlayerModelNamesPointer[playerid][i]);
- Prev@PlayerModelNamesPointer[playerid][i] = MEM_NULLPTR;
- }
- #if defined PDialog_OnPlayerDisconnect
- return PDialog_OnPlayerDisconnect(playerid, reason);
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect PDialog_OnPlayerDisconnect
- #if defined PDialog_OnPlayerDisconnect
- forward PDialog_OnPlayerDisconnect(playerid, reason);
- #endif
- public OnPlayerClickTextDraw(playerid, Text:clickedid) {
- if (Prev@CancelSelection[playerid]) {
- Prev@CancelSelection[playerid] = false;
- #if defined PDialog_OnPlayerClickTextDraw
- return PDialog_OnPlayerClickTextDraw(playerid, Text:clickedid);
- #else
- return 1;
- #endif
- }
- if (Prev@PlayerDialogID[playerid] != -1) {
- if (clickedid == Text:INVALID_TEXT_DRAW || clickedid == RIGHT_BUTTON_TEXTDRAW) {
- new dialogid = Prev@PlayerDialogID[playerid];
- new listitem = ((Prev@PlayerDialogPage[playerid] * (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) + Prev@PlayerDialogListitem[playerid]);
- new inputtext[16];
- valstr(inputtext, MEM_get_val(Prev@PlayerModelsPointer[playerid], listitem));
- Prev_HidePlayerDialog(playerid);
- CallLocalFunction("OnDialogResponse", "iiiis", playerid, dialogid, 0, listitem, inputtext);
- } else if (clickedid == SCROLL_BAR_UP_TEXTDRAW) {
- if (Prev@PlayerDialogPage[playerid] > 0) {
- Prev_UpdateListitems(playerid, --Prev@PlayerDialogPage[playerid], 0, Prev@PlayerDialogNumListitems[playerid]);
- Prev_UpdateScrollBar(playerid, Prev@PlayerDialogPage[playerid], Prev_GetNumPages(playerid));
- Prev@PlayerDialogListitem[playerid] = 0;
- }
- } else if (clickedid == SCROLL_BAR_DOWN_TEXTDRAW) {
- if ((Prev@PlayerDialogPage[playerid] + 1) < Prev_GetNumPages(playerid)) {
- Prev_UpdateListitems(playerid, ++Prev@PlayerDialogPage[playerid], 0, Prev@PlayerDialogNumListitems[playerid]);
- Prev_UpdateScrollBar(playerid, Prev@PlayerDialogPage[playerid], Prev_GetNumPages(playerid));
- Prev@PlayerDialogListitem[playerid] = 0;
- }
- } else if (clickedid == LEFT_BUTTON_TEXTDRAW || clickedid == CENTER_BUTTON_TEXTDRAW) {
- new dialogid = Prev@PlayerDialogID[playerid];
- new listitem = ((Prev@PlayerDialogPage[playerid] * (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) + Prev@PlayerDialogListitem[playerid]);
- new inputtext[16];
- valstr(inputtext, MEM_get_val(Prev@PlayerModelsPointer[playerid], listitem));
- Prev_HidePlayerDialog(playerid);
- CallLocalFunction("OnDialogResponse", "iiiis", playerid, dialogid, 1, listitem, inputtext);
- } else if (clickedid == LISTITEM_ROTATE_LEFT_TEXTDRAW<Prev@PlayerDialogListitem[playerid]>) {
- new listitem = ((Prev@PlayerDialogPage[playerid] * (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) + Prev@PlayerDialogListitem[playerid]);
- new Float:rx, Float:ry, Float:rz, Float:rzoom;
- rx = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][0], listitem);
- ry = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][1], listitem);
- rz = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][2], listitem);
- rzoom = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][3], listitem);
- rz -= 10.0;
- MEM_set_val(Prev@PlayerModelRotsPointer[playerid][2], listitem, _:rz);
- TextDrawSetPreviewRot(Prev@ModelTD[Prev@PlayerDialogListitem[playerid]][1], rx, ry, rz, rzoom);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[Prev@PlayerDialogListitem[playerid]][1]);
- new string[16];
- format(string, sizeof string, "%0.1f", rz);
- PlayerTextDrawSetString(playerid, Prev@ModelTextPTD[playerid][Prev@PlayerDialogListitem[playerid]][1], string);
- PlayerTextDrawShow(playerid, Prev@ModelTextPTD[playerid][Prev@PlayerDialogListitem[playerid]][1]);
- } else if (clickedid == LISTITEM_ROTATE_RIGHT_TEXTDRAW<Prev@PlayerDialogListitem[playerid]>) {
- new listitem = ((Prev@PlayerDialogPage[playerid] * (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) + Prev@PlayerDialogListitem[playerid]);
- new Float:rx, Float:ry, Float:rz, Float:rzoom;
- rx = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][0], listitem);
- ry = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][1], listitem);
- rz = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][2], listitem);
- rzoom = Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][3], listitem);
- rz += 10.0;
- MEM_set_val(Prev@PlayerModelRotsPointer[playerid][2], listitem, _:rz);
- TextDrawSetPreviewRot(Prev@ModelTD[Prev@PlayerDialogListitem[playerid]][1], rx, ry, rz, rzoom);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[Prev@PlayerDialogListitem[playerid]][1]);
- new string[16];
- format(string, sizeof string, "%0.1f", rz);
- PlayerTextDrawSetString(playerid, Prev@ModelTextPTD[playerid][Prev@PlayerDialogListitem[playerid]][1], string);
- PlayerTextDrawShow(playerid, Prev@ModelTextPTD[playerid][Prev@PlayerDialogListitem[playerid]][1]);
- } else {
- for (new i = 0; i < (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS); i++) {
- if (clickedid == LISTITEM_TEXTDRAW<i>) {
- if (Prev@PlayerDialogListitem[playerid] == i && (GetTickCount() - Prev@PlayerDialogTickCount[playerid]) <= 200) {
- new dialogid = Prev@PlayerDialogID[playerid];
- new listitem = ((Prev@PlayerDialogPage[playerid] * (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) + Prev@PlayerDialogListitem[playerid]);
- new inputtext[16];
- valstr(inputtext, MEM_get_val(Prev@PlayerModelsPointer[playerid], listitem));
- Prev_HidePlayerDialog(playerid);
- CallLocalFunction("OnDialogResponse", "iiiis", playerid, dialogid, 1, listitem, inputtext);
- } else {
- // reset previous listitem
- new previous = Prev@PlayerDialogListitem[playerid];
- TextDrawColor(Prev@ModelTD[previous][0], DIALOG_PREVIEW_UNSELECT_COLOR);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[previous][0]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[previous][2]);
- TextDrawHideForPlayer(playerid, Prev@ModelTD[previous][3]);
- PlayerTextDrawHide(playerid, Prev@ModelTextPTD[playerid][previous][1]);
- // update new selected listitem
- TextDrawColor(Prev@ModelTD[i][0], DIALOG_PREVIEW_SELECT_COLOR);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[i][0]);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[i][2]);
- TextDrawShowForPlayer(playerid, Prev@ModelTD[i][3]);
- new string[16];
- format(string, sizeof string, "%0.1f", Float:MEM_get_val(Prev@PlayerModelRotsPointer[playerid][2], ((Prev@PlayerDialogPage[playerid] * (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) + i)));
- PlayerTextDrawSetString(playerid, Prev@ModelTextPTD[playerid][i][1], string);
- PlayerTextDrawShow(playerid, Prev@ModelTextPTD[playerid][i][1]);
- Prev@PlayerDialogListitem[playerid] = i;
- Prev@PlayerDialogTickCount[playerid] = GetTickCount();
- }
- break;
- }
- }
- }
- }
- #if defined PDialog_OnPlayerClickTextDraw
- return PDialog_OnPlayerClickTextDraw(playerid, Text:clickedid);
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnPlayerClickTextDraw
- #undef OnPlayerClickTextDraw
- #else
- #define _ALS_OnPlayerClickTextDraw
- #endif
- #define OnPlayerClickTextDraw PDialog_OnPlayerClickTextDraw
- #if defined PDialog_OnPlayerClickTextDraw
- forward PDialog_OnPlayerClickTextDraw(playerid, Text:clickedid);
- #endif
- stock Prev_ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]) {
- if (playerid < 0 || playerid >= MAX_PLAYERS) {
- return 0;
- }
- if (Prev@PlayerDialogID[playerid] != -1) {
- Prev_HidePlayerDialog(playerid);
- }
- if (style != DIALOG_STYLE_PREVIEW_MODEL) {
- return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
- }
- if (dialogid < 0) {
- if (style == DIALOG_STYLE_PREVIEW_MODEL) {
- return 1;
- }
- return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
- }
- new modelstr[8];
- new listitem[sizeof(modelstr) + 2 + MAX_DIALOG_PREVIEW_TEXTSIZE];
- new pos = 0;
- new next;
- new end;
- new count = 0;
- new bool:valid;
- new models[MAX_DIALOG_PREVIEW_MODELS];
- do {
- // split "info" to indvidual listitems
- next = strfind(info, "\n", false, pos);
- end = (next == -1) ? strlen(info) : next;
- strmid(listitem, info, pos, end, sizeof(listitem));
- pos = (next == -1) ? -1 : (next + 1);
- // split "listitem" from '\t' delim
- next = strfind(listitem, "\t");
- if (next == -1) {
- modelstr[0] = EOS;
- strcat(modelstr, listitem);
- }
- else {
- strmid(modelstr, listitem, 0, pos);
- }
- // model validity check
- valid = false;
- for (new i = 0; modelstr[i] != EOS; i++) {
- if (modelstr[i] >= '0' && modelstr[i] <= '9') {
- valid = true;
- break;
- }
- }
- if (!valid)
- continue;
- models[count] = strval(modelstr);
- // listitem text validity check
- valid = false;
- for (new i = next + 1; listitem[i] != EOS; i++) {
- if (listitem[i] != ' ') {
- valid = true;
- break;
- }
- }
- Prev@PlayerModelNamesPointer[playerid][count] = valid ? MEM_new_arr(listitem[next + 1], strlen(listitem[next + 1])) : MEM_NULLPTR;
- // check if number of models doesnt exceed the array size
- if (++count == MAX_DIALOG_PREVIEW_MODELS) {
- printf("[PreviewModelDialog.inc] - Warning: You have more than \"MAX_DIALOG_PREVIEW_MODELS\" ("#MAX_DIALOG_PREVIEW_MODELS") listitems in your dialog, only the first "#MAX_DIALOG_PREVIEW_MODELS" listitems were loaded.");
- break;
- }
- } while (pos != -1);
- if (count == 0) {
- return 0;
- }
- // set player data
- Prev@PlayerDialogID[playerid] = dialogid;
- Prev@PlayerDialogListitem[playerid] = 0;
- Prev@PlayerDialogNumListitems[playerid] = count;
- Prev@PlayerDialogPage[playerid] = 0;
- Prev@PlayerDialogTickCount[playerid] = 0;
- Prev@PlayerModelsPointer[playerid] = MEM_new_arr(models, Prev@PlayerDialogNumListitems[playerid]);
- /*
- * FRAME
- */
- for (new i = 0; i < sizeof Prev@FrameTD; i++) {
- TextDrawShowForPlayer(playerid, Prev@FrameTD[i]);
- }
- /*
- * BUTTONS AND PLAYER DIALOG TEXTDRAWS
- */
- if (button2[0] == EOS) { // only one center button
- TextDrawHideForPlayer(playerid, Prev@LeftButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@LeftButtonTD[1]);
- TextDrawHideForPlayer(playerid, Prev@RightButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@RightButtonTD[1]);
- TextDrawShowForPlayer(playerid, Prev@CenterButtonTD[0]);
- TextDrawShowForPlayer(playerid, Prev@CenterButtonTD[1]);
- Prev_CreatePlayerTextDraws(playerid, caption, "", "", button1, Prev@PlayerDialogNumListitems[playerid]);
- PlayerTextDrawShow(playerid, Prev@CenterButtonPTD[playerid]);
- } else { // dual buttons
- TextDrawShowForPlayer(playerid, Prev@LeftButtonTD[0]);
- TextDrawShowForPlayer(playerid, Prev@LeftButtonTD[1]);
- TextDrawShowForPlayer(playerid, Prev@RightButtonTD[0]);
- TextDrawShowForPlayer(playerid, Prev@RightButtonTD[1]);
- TextDrawHideForPlayer(playerid, Prev@CenterButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@CenterButtonTD[1]);
- Prev_CreatePlayerTextDraws(playerid, caption, button1, button2, "", Prev@PlayerDialogNumListitems[playerid]);
- PlayerTextDrawShow(playerid, Prev@LeftButtonPTD[playerid]);
- PlayerTextDrawShow(playerid, Prev@RightButtonPTD[playerid]);
- }
- /*
- * HEADER
- */
- PlayerTextDrawShow(playerid, Prev@HeaderPTD[playerid]);
- /*
- * PAGE NUMBER
- */
- PlayerTextDrawShow(playerid, Prev@PageNumberPTD[playerid]);
- /*
- * SCROLLBAR
- */
- Prev@ScrollBarPTD[playerid] = PlayerText:INVALID_TEXT_DRAW;
- if (Prev@PlayerDialogNumListitems[playerid] > (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) {
- Prev_UpdateScrollBar(playerid, 0, Prev_GetNumPages(playerid));
- }
- /*
- * PREVIEW MODEL LISTITEMS
- */
- Prev_UpdateListitems(playerid, 0, 0, Prev@PlayerDialogNumListitems[playerid]);
- return SelectTextDraw(playerid, DIALOG_PREVIEW_SELECT_COLOR);
- }
- #if defined _ALS_ShowPlayerDialog
- #undef ShowPlayerDialog
- #else
- #define _ALS_ShowPlayerDialog
- #endif
- #define ShowPlayerDialog Prev_ShowPlayerDialog
- stock ShowPreviewModelDialog(playerid, dialogid, caption[], models[], labels[][], button1[], button2[], size = sizeof models) {
- if (playerid < 0 || playerid >= MAX_PLAYERS) {
- return 0;
- }
- if (Prev@PlayerDialogID[playerid] != -1) {
- Prev_HidePlayerDialog(playerid);
- }
- if (dialogid < 0 || size <= 0) {
- return 0;
- }
- if (size >= MAX_DIALOG_PREVIEW_MODELS) {
- size = MAX_DIALOG_PREVIEW_MODELS;
- printf("[PreviewModelDialog.inc] - Warning: You have more than \"MAX_DIALOG_PREVIEW_MODELS\" ("#MAX_DIALOG_PREVIEW_MODELS") listitems in your dialog, only the first "#MAX_DIALOG_PREVIEW_MODELS" listitems were loaded.");
- }
- Prev@PlayerModelsPointer[playerid] = MEM_new_arr(models, size);
- for (new i = 0; i < size; i++) {
- Prev@PlayerModelNamesPointer[playerid][i] = MEM_new_arr(labels[i], strlen(labels[i]));
- }
- /*
- * FRAME
- */
- for (new i = 0; i < sizeof Prev@FrameTD; i++) {
- TextDrawShowForPlayer(playerid, Prev@FrameTD[i]);
- }
- // set player data
- Prev@PlayerDialogID[playerid] = dialogid;
- Prev@PlayerDialogListitem[playerid] = 0;
- Prev@PlayerDialogNumListitems[playerid] = size;
- Prev@PlayerDialogPage[playerid] = 0;
- Prev@PlayerDialogTickCount[playerid] = 0;
- /*
- * BUTTONS AND PLAYER DIALOG TEXTDRAWS
- */
- if (button2[0] == EOS) { // only one center button
- TextDrawHideForPlayer(playerid, Prev@LeftButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@LeftButtonTD[1]);
- TextDrawHideForPlayer(playerid, Prev@RightButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@RightButtonTD[1]);
- TextDrawShowForPlayer(playerid, Prev@CenterButtonTD[0]);
- TextDrawShowForPlayer(playerid, Prev@CenterButtonTD[1]);
- Prev_CreatePlayerTextDraws(playerid, caption, "", "", button1, Prev@PlayerDialogNumListitems[playerid]);
- PlayerTextDrawShow(playerid, Prev@CenterButtonPTD[playerid]);
- } else { // dual buttons
- TextDrawShowForPlayer(playerid, Prev@LeftButtonTD[0]);
- TextDrawShowForPlayer(playerid, Prev@LeftButtonTD[1]);
- TextDrawShowForPlayer(playerid, Prev@RightButtonTD[0]);
- TextDrawShowForPlayer(playerid, Prev@RightButtonTD[1]);
- TextDrawHideForPlayer(playerid, Prev@CenterButtonTD[0]);
- TextDrawHideForPlayer(playerid, Prev@CenterButtonTD[1]);
- Prev_CreatePlayerTextDraws(playerid, caption, button1, button2, "", Prev@PlayerDialogNumListitems[playerid]);
- PlayerTextDrawShow(playerid, Prev@LeftButtonPTD[playerid]);
- PlayerTextDrawShow(playerid, Prev@RightButtonPTD[playerid]);
- }
- /*
- * HEADER
- */
- PlayerTextDrawShow(playerid, Prev@HeaderPTD[playerid]);
- /*
- * PAGE NUMBER
- */
- PlayerTextDrawShow(playerid, Prev@PageNumberPTD[playerid]);
- /*
- * SCROLLBAR
- */
- Prev@ScrollBarPTD[playerid] = PlayerText:INVALID_TEXT_DRAW;
- if (Prev@PlayerDialogNumListitems[playerid] > (MAX_DIALOG_PREVIEW_ROWS * MAX_DIALOG_PREVIEW_COLUMNS)) {
- Prev_UpdateScrollBar(playerid, 0, Prev_GetNumPages(playerid));
- }
- /*
- * PREVIEW MODEL LISTITEMS
- */
- Prev_UpdateListitems(playerid, 0, 0, Prev@PlayerDialogNumListitems[playerid]);
- return SelectTextDraw(playerid, DIALOG_PREVIEW_SELECT_COLOR);
- }
- #define Dialog_ShowPreviewModelDialog \
- ShowPreviewModelDialog
- #define ShowPlayerPreviewModelDialog \
- ShowPreviewModelDialog
- stock SetDialogPreviewRotation(playerid, listitem, Float:rx, Float:ry, Float:rz, Float:zoom) {
- if (playerid < 0 || playerid >= MAX_PLAYERS) {
- return 0;
- }
- if (listitem < 0 || listitem >= MAX_DIALOG_PREVIEW_MODELS) {
- return 0;
- }
- MEM_set_val(Prev@PlayerModelRotsPointer[playerid][0], listitem, _:rx);
- MEM_set_val(Prev@PlayerModelRotsPointer[playerid][1], listitem, _:ry);
- MEM_set_val(Prev@PlayerModelRotsPointer[playerid][2], listitem, _:rz);
- MEM_set_val(Prev@PlayerModelRotsPointer[playerid][3], listitem, _:zoom);
- return 1;
- }
- #define Dialog_SetListitemPreviewRot \
- SetDialogPreviewRotation
- #define Dialog_SetModelRot \
- Dialog_SetListitemPreviewRot
|