WOWCube Docs logo
WOWCube Docs
Mission Control
Section Shortcuts
APIExamplesSourceWOWConnectChangelog
Filters
SDK and language defaults persist in cookies.
SDK version
Navigation Tree
Collapsed by default, focused on the active path.
Made byMcKay Seamons
GitHub
  1. Home
  2. Docs
  3. Source
  4. splashscreen.inc
Mission NodeSDK 6.1Pawnsplashscreen.inc

splashscreen.inc

SDK Source File: splashscreen.inc

Source / SDK 6.1 / Pawn / Core

splashscreen.inc

splashscreen.inc
CPP
1/****d* PawnLibs/splashscreen/SPLASH_SCREEN_MAX_LEADERS
2 * Summary
3 * How many leaders can be displayed on the splash screen.
4 * Synopsis
5 */
6#define SPLASH_SCREEN_MAX_LEADERS 10
7/******/
8
9#define SPLASH_SCREEN_MAX_NAME_LEADERS 6
10
11/****d* PawnLibs/splashscreen/SPLASH_SCREEN_MAX_RESULTS
12 * Summary
13 * How many different detailed result types exist.
14 * Synopsis
15 */
16#define SPLASH_SCREEN_MAX_RESULTS 4
17/******/
18
19/****d* PawnLibs/splashscreen/SPLASH_SCREEN_MAX_NAME_RESULTS
20 * Summary
21 * Maximum length of result type name.
22 * Synopsis
23 */
24#define SPLASH_SCREEN_MAX_NAME_RESULTS 10
25/******/
26
27/****d* PawnLibs/splashscreen/USER_NAME_LENGTH_IN_CELLS
28 * Summary
29 * Maximum length of user name in cells.
30 * Synopsis
31 */
32#define USER_NAME_LENGTH_IN_CELLS 3
33/******/
34
35#define LEADERBOARD_SIZE 30
36
37#include "string.inc"
38#include "leaderboard.inc"
39#include "graphics.inc"
40#include "topology.inc"
41#include "log.inc"
42
43/****s* PawnLibs/splashscreen/LEADER_DATA
44 * Summary
45 * Array with named fields which represents a line in score table.
46 * Synopsis
47 */
48#define LEADER_DATA .leaderName[USER_NAME_LENGTH_IN_CELLS], .leaderScore[4], .longNameFlag
49/*
50 * Description
51 * Fields:
52 * * leaderName - user name
53 * * leaderScore - user score
54 * * longNameFlag - flag that user name is too long and should be truncated
55 * See also
56 * * USER_NAME_LENGTH_IN_CELLS
57 ******/
58
59/****s* PawnLibs/splashscreen/RESULT_DATA
60 * Summary
61 * Array with named fields which represents result data line
62 * Synopsis
63 */
64#define RESULT_DATA .parameterName[SPLASH_SCREEN_MAX_NAME_RESULTS], .value[4], .valueType
65/*
66 * Description
67 * Fields:
68 * * parameterName - result name to display
69 * * value - result value to display
70 * * valueType - result type
71 * See also
72 * * SPLASH_SCREEN_MAX_NAME_RESULTS
73 ******/
74
75const EMPTY_PART = 0;
76const FIRST_LEADER_GROUP = 1;
77const SECOND_LEADER_GROUP = 2;
78const HIGH_SCORE = 3;
79const LEADERBOARD_SPRITE = 4;
80const GAME_TITLE = 5;
81const MAIN_IMAGE = 6;
82const LAST_RESULT = 7;
83const LAST_PARAMETER_1 = 8;
84const LAST_PARAMETER_2 = 9;
85const LAST_PARAMETER_3 = 10;
86const TWIST_ICON = 11;
87const QR_CODE = 12;
88const TWIST_TO_START = 13;
89const TAP_ICON = 14;
90
91const SPLASH_SCREEN_FONT = 0;
92const LEADER_TABLE_FONT = 7;
93
94// Special sprites
95new ss_background_sprite = 0;
96new ss_leaderboard_icon = 0;
97new ss_results_icon = 0;
98new ss_main_image = 0;
99new ss_twist_1 = 0;
100new ss_twist_2 = 0;
101new ss_tap_icon = 0;
102new ss_QR_code = 0;
103new ss_name = 0;
104
105new baseColor = 0xFFFFFFFF;
106new keyColor = 0xFFFFFFFF;
107
108new splashScreen_sideType[SCREENS_MAX][.sideType, .angle] = [
109 [TOPOLOGY_orientation:ORIENTATION_UP, 180],
110 [TOPOLOGY_orientation:ORIENTATION_UP, 180],
111 [TOPOLOGY_orientation:ORIENTATION_UP, 180],
112]
113
114new leaderBoardTable {} = {
115 TWIST_TO_START,
116 GAME_TITLE,
117 MAIN_IMAGE,
118 TWIST_ICON,
119 TWIST_TO_START,
120 GAME_TITLE,
121 QR_CODE,
122 TWIST_ICON,
123 TWIST_TO_START,
124 EMPTY_PART,
125 EMPTY_PART,
126 TWIST_ICON,
127 EMPTY_PART,
128 TWIST_TO_START,
129 TWIST_ICON,
130 EMPTY_PART,
131 HIGH_SCORE,
132 LEADERBOARD_SPRITE,
133 FIRST_LEADER_GROUP,
134 SECOND_LEADER_GROUP,
135 HIGH_SCORE,
136 LEADERBOARD_SPRITE,
137 FIRST_LEADER_GROUP,
138 SECOND_LEADER_GROUP,
139};
140
141new leaderBoardTableWithSaves {} = {
142 TWIST_ICON,
143 GAME_TITLE,
144 MAIN_IMAGE,
145 TAP_ICON,
146 TWIST_ICON,
147 GAME_TITLE,
148 QR_CODE,
149 TAP_ICON,
150 LAST_PARAMETER_3,
151 LAST_PARAMETER_2,
152 LAST_RESULT,
153 LAST_PARAMETER_1,
154 LAST_PARAMETER_3,
155 LAST_PARAMETER_2,
156 LAST_RESULT,
157 LAST_PARAMETER_1,
158 HIGH_SCORE,
159 LEADERBOARD_SPRITE,
160 FIRST_LEADER_GROUP,
161 SECOND_LEADER_GROUP,
162 HIGH_SCORE,
163 LEADERBOARD_SPRITE,
164 FIRST_LEADER_GROUP,
165 SECOND_LEADER_GROUP,
166};
167
168new leaderBoardTableResultsOnly {} = {
169 TWIST_TO_START,
170 GAME_TITLE,
171 MAIN_IMAGE,
172 TWIST_ICON,
173 TWIST_TO_START,
174 GAME_TITLE,
175 QR_CODE,
176 TWIST_ICON,
177 LAST_PARAMETER_3,
178 LAST_PARAMETER_2,
179 LAST_RESULT,
180 LAST_PARAMETER_1,
181 LAST_PARAMETER_3,
182 LAST_PARAMETER_2,
183 LAST_RESULT,
184 LAST_PARAMETER_1,
185 HIGH_SCORE,
186 LEADERBOARD_SPRITE,
187 FIRST_LEADER_GROUP,
188 SECOND_LEADER_GROUP,
189 HIGH_SCORE,
190 LEADERBOARD_SPRITE,
191 FIRST_LEADER_GROUP,
192 SECOND_LEADER_GROUP,
193};
194
195/****c* PawnLibs/splashscreen/e_ssLeadersDataType
196 * Summary
197 * Enumeration of results type in the leader board.
198 * Synopsis
199 */
200const e_ssLeadersDataType: {
201 ssTypeNumber = 1,
202 ssTypeTime = 2,
203}
204/*
205 * Description
206 * * ssTypeNumber - display scores in the leader board
207 * * ssTypeTime - display time in the leader board
208 ******/
209
210/****c* PawnLibs/splashscreen/e_ssLeaderBoardType
211 * Summary
212 * Enumeration of the leader board types.
213 * Synopsis
214 */
215const e_ssLeaderBoardType: {
216 ssNoSaves = 0,
217 ssContinue = 1,
218 ssResultsOnly = 2,
219}
220/*
221 * Description
222 * * ssNoSaves - first run of the application and it does not have saves and
223 * previous results
224 * * ssContinue - application has a save to continue from
225 * * ssResultsOnly - application has previous results but does not have a save
226 * to continue from
227 ******/
228
229new splashScreenAnimationTime = 0;
230new splashScreenKnowTopology = 0;
231new e_ssLeaderBoardType:splashScreenLeaderBoardType = 0;
232new splashscreenCounter = 0;
233new splashscreenIsAppVersionSet = 0;
234
235new leaderBoardText[] = "LEADERBOARD";
236new twistToStartText[] = "TWIST TO START";
237new lastResultsText[] = "LAST RESULTS";
238
239new splashscreen_neighbor[TOPOLOGY_FACELET_INFO];
240
241// Default leaderboard for splashscreen
242new leadersSplashScreen[SPLASH_SCREEN_MAX_LEADERS][LEADER_DATA] = [
243 ["Alex", "1000000", 0],
244 ["Kim", "999999", 0],
245 ["Beth", "999998", 0],
246 ["Ethan", "999997", 0],
247 ["Mia", "999996", 0],
248 ["Lucas", "999995", 0],
249 ["Jonas", "999994", 0],
250 ["Diego", "999993", 0],
251 ["Chloe", "999992", 0],
252 ["Simon", "999991", 0],
253];
254
255// Default parameters for example
256new resultsSplashScreen[SPLASH_SCREEN_MAX_RESULTS][RESULT_DATA] = [
257 ["SCORE", "0", e_ssLeadersDataType:ssTypeNumber],
258 ["TWISTS", "0", e_ssLeadersDataType:ssTypeNumber],
259 ["TIME", "0", e_ssLeadersDataType:ssTypeTime],
260 ["RECORD", "0", e_ssLeadersDataType:ssTypeNumber],
261];
262
263new splashscreen_userName[USER_NAME_LENGTH_IN_CELLS];
264new splashscreen_basicInfo[LB_INFO];
265new splashscreen_leadTableScore[LEADERBOARD_SIZE];
266
267new splashscreenPlayerScore[4];
268new splashscreenInScriptRecord = 0;
269new splashscreenInWebRecord = 0;
270
271new threeDots[] = "...";
272new zeroValue[4] = "0";
273new ssApplicationVersionStr[4] = "v";
274
275new displayCenter[GFX_POINT] = [120, 120];
276
277ssSetFacelet(module, screen) {
278 new facelet[TOPOLOGY_FACELET];
279 facelet.module = module;
280 facelet.screen = screen;
281 return facelet;
282}
283
284ReverseBytes(dword) {
285 return ((dword >> 24) & 0xFF) | ((dword >> 8) & 0xFF00) | ((dword << 8) & 0xFF0000) | ((dword << 24) & 0xFF000000);
286}
287
288ssToString(data, dataType) {
289 new dataStr[4];
290 new leaderData = data;
291 if (dataType == e_ssLeadersDataType:ssTypeTime) {
292 leaderData /= 1000;
293 strformat(dataStr, sizeof(dataStr), true, "%d:%02d", leaderData / 60, leaderData % 60);
294 } else {
295 strformat(dataStr, sizeof(dataStr), true, "%d", leaderData);
296 }
297 return dataStr;
298}
299
300SplashScreen_SetScreenData(screen) {
301 splashScreen_sideType[screen].angle = TOPOLOGY_getAngle(ssSetFacelet(SELF_ID, screen), TOPOLOGY_orientation_mode:ORIENTATION_MODE_SPLASH);
302
303 splashscreen_neighbor = TOPOLOGY_getAdjacentFacelet(ssSetFacelet(SELF_ID, screen), TOPOLOGY_neighbor:NEIGHBOR_RIGHT);
304 splashScreen_sideType[splashscreen_neighbor.screen].sideType = TOPOLOGY_getFaceletOrientation(ssSetFacelet(SELF_ID, splashscreen_neighbor.screen));
305 splashScreen_sideType[splashscreen_neighbor.screen].angle = TOPOLOGY_getAngle(ssSetFacelet(SELF_ID, splashscreen_neighbor.screen), TOPOLOGY_orientation_mode:ORIENTATION_MODE_SPLASH);
306
307 splashscreen_neighbor = TOPOLOGY_getAdjacentFacelet(ssSetFacelet(SELF_ID, screen), TOPOLOGY_neighbor:NEIGHBOR_BOTTOM);
308 splashScreen_sideType[splashscreen_neighbor.screen].sideType = TOPOLOGY_getFaceletOrientation(ssSetFacelet(SELF_ID, splashscreen_neighbor.screen));
309 splashScreen_sideType[splashscreen_neighbor.screen].angle = TOPOLOGY_getAngle(ssSetFacelet(SELF_ID, splashscreen_neighbor.screen), TOPOLOGY_orientation_mode:ORIENTATION_MODE_SPLASH);
310}
311
312/****f* PawnLibs/splashscreen/ssSetApplicationVersion
313 * Summary
314 * Set text for application version.
315 * Synopsis
316 */
317ssSetApplicationVersion(appVersion[])
318/*
319 * Description
320 * Receive application version in text format
321 * and concatenate with 'v' symbol. Version is
322 * written under QR code.
323 * Inputs
324 * * appVersion - application version in string format like "1.2.3"
325 * History
326 * * v5.1 - function added
327 * Source
328 */
329{
330 strcat(ssApplicationVersionStr, appVersion, sizeof(ssApplicationVersionStr));
331 splashscreenIsAppVersionSet = 1;
332}
333/******/
334
335/****f* PawnLibs/splashscreen/InitSplashScreenLeaders
336 * Summary
337 * Set leaders table to draw on a splash screen.
338 * Synopsis
339 */
340stock InitSplashScreenLeaders(gameLeaders[SPLASH_SCREEN_MAX_LEADERS][LEADER_DATA])
341/*
342 * Inputs
343 * * gameLeaders - leaders data
344 * See also
345 * * SPLASH_SCREEN_MAX_LEADERS
346 * * LEADER_DATA
347 * Source
348 */
349{
350 for (new i = 0; i < SPLASH_SCREEN_MAX_LEADERS; ++i) {
351 leadersSplashScreen[i] = gameLeaders[i];
352 }
353}
354/******/
355
356/****f* PawnLibs/splashscreen/InitSplashScreenResults
357 * Summary
358 * Set game results to draw on a splash screen.
359 * Synopsis
360 */
361stock InitSplashScreenResults(gameResults[SPLASH_SCREEN_MAX_RESULTS][RESULT_DATA])
362/*
363 * Inputs
364 * * gameResults - game results data
365 * See also
366 * * SPLASH_SCREEN_MAX_RESULTS
367 * * RESULT_DATA
368 * Source
369 */
370{
371 for (new i = 0; i < SPLASH_SCREEN_MAX_RESULTS; ++i) {
372 resultsSplashScreen[i] = gameResults[i];
373 resultsSplashScreen[i].value = ssToString(gameResults[i].value, gameResults[i].valueType);
374 }
375 splashscreenInScriptRecord = gameResults[SPLASH_SCREEN_MAX_RESULTS - 1].value;
376}
377/******/
378
379/****f* PawnLibs/splashscreen/InitSplashScreenSprites
380 * Summary
381 * Customize splash screen.
382 * Synopsis
383 */
384stock InitSplashScreenSprites(backgroundSprite = -1,
385 mainImageSprite = -1,
386 gameNameSprite = -1,
387 QRcodeSprite = -1,
388 leaderboardIcon = -1,
389 resultsIcon = -1,
390 twistIcon_1 = -1,
391 twistIcon_2 = -1,
392 tapIcon = -1)
393/*
394 * Description
395 * Set IDs of sprite used to draw different elements of the splash screen.
396 * Inputs
397 * * backgroundSprite - ID of a background image
398 * * mainImageSprite - ID of an application logo, may differ from a menu
399 * icon
400 * * gameNameSprite - ID of an image with application name, to display it with
401 * some custom font
402 * * QRcodeSprite - ID of a QR code
403 * * leaderboardIcon - ID of a leader board icon
404 * * resultsIcon - ID of a result icon
405 * * twistIcon_1, twistIcon_2 - IDs of twist animation images
406 * * tapIcon - ID of the tap icon
407 * Source
408 */
409{
410
411 ss_background_sprite = backgroundSprite;
412 ss_main_image = mainImageSprite;
413 ss_name = gameNameSprite;
414 ss_QR_code = QRcodeSprite;
415 ss_leaderboard_icon = leaderboardIcon;
416 ss_results_icon = resultsIcon;
417 ss_twist_1 = twistIcon_1;
418 ss_twist_2 = twistIcon_2;
419 ss_tap_icon = tapIcon;
420
421 if (ss_background_sprite < 0) {
422 LOG_w("splashscreen.inc: Background sprite is not initialized");
423 }
424 if (ss_main_image < 0) {
425 LOG_w("splashscreen.inc: Main image sprite is not initialized");
426 }
427 if (ss_name < 0) {
428 LOG_w("splashscreen.inc: Game name sprite is not initialized");
429 }
430 if (ss_QR_code < 0) {
431 LOG_w("splashscreen.inc: QR code sprite is not initialized");
432 }
433 if (ss_leaderboard_icon < 0) {
434 LOG_w("splashscreen.inc: Leaderboard icon sprite is not initialized");
435 }
436 if (ss_results_icon < 0) {
437 LOG_w("splashscreen.inc: Results icon sprite is not initialized");
438 }
439 if (ss_twist_1 < 0) {
440 LOG_w("splashscreen.inc: Twist icon 1-st sprite is not initialized");
441 }
442 if (ss_twist_2 < 0) {
443 LOG_w("splashscreen.inc: Twist icon 2-nd sprite is not initialized");
444 }
445 if (ss_tap_icon < 0) {
446 LOG_w("splashscreen.inc: Tap icon sprite is not initialized");
447 }
448}
449/******/
450
451/****f* PawnLibs/splashscreen/InitSplashScreenBasics
452 * Summary
453 * Set how splash screen should be displayed.
454 * Synopsis
455 */
456stock InitSplashScreenBasics(base = 0xFFFFFFFF, key = 0xFFFFFFFF,
457 e_ssLeaderBoardType:leaderBoardType = ssNoSaves,
458 e_ssLeadersDataType:dataType = ssTypeNumber)
459/*
460 * Inputs
461 * * base - base color for all text labels in ARGB8888 format
462 * * key - accent color for text labels in ARGB8888 format
463 * * leaderBoardType - type of splash screen
464 * * dataType - type of results in the leader board
465 * See also
466 * * e_ssLeaderBoardType
467 * * e_ssLeadersDataType
468 * Source
469 */
470{
471
472 splashScreenLeaderBoardType = leaderBoardType;
473
474 baseColor = base;
475 keyColor = key;
476
477 getUserName(splashscreen_userName);
478 LB_getInfo(splashscreen_basicInfo);
479 LB_getScore(splashscreen_leadTableScore);
480
481 splashscreen_userName[0] = ReverseBytes(splashscreen_userName[0]);
482 if (splashscreen_userName[1]) {
483 splashscreen_userName[1] = (splashscreen_userName[1] & 0xFF000000) >> 24;
484 splashscreen_userName[2] = 0;
485 }
486
487 new pawnCell = 0;
488 new curName[USER_NAME_LENGTH_IN_CELLS];
489 for (new leaderI = 0; leaderI < SPLASH_SCREEN_MAX_LEADERS; ++leaderI) {
490 if (leaderI < splashscreen_basicInfo.leadCount) {
491 new leaderName[USER_NAME_LENGTH_IN_CELLS];
492 new nameCell = 0;
493 curName[0] = ReverseBytes(splashscreen_leadTableScore[pawnCell]);
494 curName[1] = ReverseBytes(splashscreen_leadTableScore[pawnCell + 1]);
495
496 leaderName[nameCell] = curName[nameCell];
497 ++pawnCell;
498 ++nameCell;
499
500 if (curName[nameCell]) {
501 leaderName[nameCell] = (curName[nameCell] & 0xFF000000);
502 leadersSplashScreen[leaderI].longNameFlag = (curName[nameCell] & 0x00FFFFFF);
503 }
504
505 ++pawnCell;
506 leadersSplashScreen[leaderI].leaderName = leaderName;
507
508 leadersSplashScreen[leaderI].leaderScore = ssToString(splashscreen_leadTableScore[pawnCell], dataType);
509
510 ++pawnCell;
511 } else if (splashscreen_basicInfo.leadCount > 0) {
512 leadersSplashScreen[leaderI].leaderScore = zeroValue;
513 }
514 }
515 splashscreenInWebRecord = splashscreen_basicInfo.selfScore;
516 splashscreenPlayerScore = ssToString(splashscreen_basicInfo.selfScore, dataType);
517}
518/******/
519
520InitSplashScreenAngles() {
521 for (new screen = 0; screen < SCREENS_MAX; ++screen) {
522 if (TOPOLOGY_getFaceletOrientation(ssSetFacelet(SELF_ID, screen)) == TOPOLOGY_orientation:ORIENTATION_UP) {
523 splashScreen_sideType[screen].sideType = TOPOLOGY_orientation:ORIENTATION_UP;
524 SplashScreen_SetScreenData(screen);
525 break;
526 } else if (TOPOLOGY_getFaceletOrientation(ssSetFacelet(SELF_ID, screen)) == TOPOLOGY_orientation:ORIENTATION_DOWN) {
527 splashScreen_sideType[screen].sideType = TOPOLOGY_orientation:ORIENTATION_DOWN;
528 SplashScreen_SetScreenData(screen);
529 break;
530 }
531 }
532}
533
534/****f* PawnLibs/splashscreen/DrawSplashScreen
535 * Summary
536 * Add splash screen on a scene for rendering.
537 * Synopsis
538 */
539stock DrawSplashScreen(screen, backgroundAngle = 0, localDeltaTime = 0)
540/*
541 * Description
542 * Adds graphical primitives on the scene to render the splash screen. Should
543 * be used in between GFX_setRenderTarget() and GFX_render() calls.
544 * Technically it can be used for be used in baked image but it does not make
545 * sense because splash screen implements a twist animation.
546 * Inputs
547 * * screen - number of the screen to draw the splash screen
548 * * backgroundAngle - at which angle background should be drawn on that
549 * screen, useful for complex non-symmetrical backgrounds
550 * * localDeltaTime - time delta from previous call for the twist animation
551 * See also
552 * * GFX_setRenderTarget()
553 * * GFX_render()
554 * Source
555 */
556{
557
558 if (screen == 0) {
559 splashScreenAnimationTime += localDeltaTime;
560 ++splashscreenCounter;
561 }
562
563 if (splashscreenCounter == 1) {
564 InitSplashScreenAngles();
565 }
566
567 new screenAngle = splashScreen_sideType[screen].angle;
568
569 if (ss_background_sprite < 0) {
570 GFX_clear(0xFFFFFFFF);
571 } else {
572 GFX_drawImage(displayCenter, 0xFF, 0xFF00FF, 100, 100, backgroundAngle, MIRROR_BLANK, ss_background_sprite);
573 }
574
575 new leaderboardElement = EMPTY_PART;
576 new leaderboardPosition = splashScreen_sideType[screen].sideType * TOPOLOGY_POSITIONS_MAX + (screenAngle / 90);
577 if (splashScreenLeaderBoardType == e_ssLeaderBoardType:ssResultsOnly) {
578 leaderboardElement = leaderBoardTableResultsOnly { leaderboardPosition };
579 } else if (splashScreenLeaderBoardType == e_ssLeaderBoardType:ssContinue) {
580 leaderboardElement = leaderBoardTableWithSaves { leaderboardPosition };
581 } else {
582 leaderboardElement = leaderBoardTable { leaderboardPosition };
583 }
584
585 switch (leaderboardElement) {
586 case FIRST_LEADER_GROUP: {
587 new offset = 0;
588 for (new i = 0; i < 5; ++i) {
589 new nameColor = baseColor;
590 offset = 210 - (40 * i);
591 new center[GFX_POINT];
592 center.x = 200;
593 center.y = offset;
594 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_RIGHT_TOP_CORNER, baseColor, "%d", i + 1);
595 if (splashscreen_basicInfo.selfPosition == (i + 1)) {
596 nameColor = keyColor;
597 }
598 center.x = 190;
599 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_LEFT_TOP_CORNER, nameColor, leadersSplashScreen[i].leaderName);
600 if (leadersSplashScreen[i].longNameFlag) {
601 center.x = 124;
602 center.y = offset - 5;
603 GFX_drawText(center, LEADER_TABLE_FONT - 2, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_LEFT_TOP_CORNER, nameColor, threeDots);
604 }
605 center.x = 10;
606 center.y = offset;
607 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_RIGHT_TOP_CORNER, keyColor, leadersSplashScreen[i].leaderScore);
608 }
609 }
610 case SECOND_LEADER_GROUP: {
611 new offset = 0;
612 for (new i = 5; i < SPLASH_SCREEN_MAX_LEADERS; ++i) {
613 new nameColor = baseColor;
614 offset = 30 + (40 * (i - 5));
615 if ((i >= 8) && (splashscreen_basicInfo.selfPosition > SPLASH_SCREEN_MAX_LEADERS)) {
616 if (i == 8) {
617 new center[GFX_POINT];
618 center.x = offset;
619 center.y = 190;
620 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_LEFT_TOP_CORNER, nameColor, threeDots);
621 } else if (i == 9) {
622 new center[GFX_POINT];
623 center.x = offset;
624 center.y = 200;
625 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_RIGHT_TOP_CORNER, baseColor, "%d", splashscreen_basicInfo.selfPosition);
626 center.y = 190;
627 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_LEFT_TOP_CORNER, nameColor, splashscreen_userName);
628 center.y = 10;
629 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_RIGHT_TOP_CORNER, keyColor, splashscreenPlayerScore);
630 if (splashscreen_userName[1]) {
631 center.x = offset + 5;
632 center.y = 124;
633 GFX_drawText(center, LEADER_TABLE_FONT - 2, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_LEFT_TOP_CORNER, nameColor, threeDots);
634 }
635 }
636 } else {
637 new center[GFX_POINT];
638 center.x = offset;
639 center.y = 200;
640 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_RIGHT_TOP_CORNER, baseColor, "%d", i + 1);
641 if (splashscreen_basicInfo.selfPosition == (i + 1)) {
642 nameColor = keyColor;
643 }
644 center.y = 190;
645 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_LEFT_TOP_CORNER, nameColor, leadersSplashScreen[i].leaderName);
646 if (leadersSplashScreen[i].longNameFlag) {
647 new center[GFX_POINT];
648 center.x = offset + 5;
649 center.y = 124;
650 GFX_drawText(center, LEADER_TABLE_FONT - 2, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_LEFT_TOP_CORNER, nameColor, threeDots);
651 }
652 center.y = 10;
653 GFX_drawText(center, LEADER_TABLE_FONT, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_RIGHT_TOP_CORNER, keyColor, leadersSplashScreen[i].leaderScore);
654 }
655 }
656 }
657 case HIGH_SCORE: {
658 new center[GFX_POINT];
659 center.x = 120;
660 center.y = 104;
661 if (splashScreenLeaderBoardType != e_ssLeaderBoardType:ssNoSaves) {
662 if (splashscreenInScriptRecord > splashscreenInWebRecord) {
663 GFX_drawText(center, 15, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, resultsSplashScreen[3].value);
664 } else {
665 GFX_drawText(center, 15, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, splashscreenPlayerScore);
666 }
667 center.y = 142;
668 GFX_drawText(center, 9, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, "personal best");
669 } else {
670 GFX_drawText(center, 15, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, leadersSplashScreen[0].leaderScore);
671 center.y = 142;
672 GFX_drawText(center, 9, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, "high score");
673 }
674 }
675 case LEADERBOARD_SPRITE: {
676 if (ss_leaderboard_icon >= 0) {
677 GFX_drawImage(displayCenter, 0xFF, 0xFF00FF, 100, 100, screenAngle, MIRROR_BLANK, ss_leaderboard_icon);
678 }
679 new center[GFX_POINT];
680 center.x = 40;
681 center.y = 120;
682 GFX_drawText(center, 10, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_BOTTOM_CENTER, baseColor, leaderBoardText);
683 }
684 case GAME_TITLE: {
685 if (ss_name >= 0) {
686 GFX_drawImage(displayCenter, 0xFF, 0xFF00FF, 100, 100, screenAngle, MIRROR_BLANK, ss_name);
687 }
688 }
689 case MAIN_IMAGE: {
690 if (ss_main_image >= 0) {
691 GFX_drawImage(displayCenter, 0xFF, 0xFF00FF, 100, 100, screenAngle, MIRROR_BLANK, ss_main_image);
692 }
693 }
694 case LAST_RESULT: {
695 if (ss_results_icon >= 0) {
696 GFX_drawImage(displayCenter, 0xFF, 0xFF00FF, 100, 100, screenAngle, MIRROR_BLANK, ss_results_icon);
697 }
698 new center[GFX_POINT];
699 center.x = 120;
700 center.y = 40;
701 GFX_drawText(center, 10, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_BOTTOM_CENTER, baseColor, lastResultsText);
702 }
703 case LAST_PARAMETER_1: {
704 new center[GFX_POINT];
705 center.x = 104;
706 center.y = 120;
707 GFX_drawText(center, 15, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, resultsSplashScreen[0].value);
708 center.x = 144;
709 GFX_drawText(center, 10, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, resultsSplashScreen[0].parameterName);
710 }
711 case LAST_PARAMETER_2: {
712 new center[GFX_POINT];
713 center.x = 136;
714 center.y = 120;
715 GFX_drawText(center, 15, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, resultsSplashScreen[1].value);
716 center.x = 96;
717 GFX_drawText(center, 10, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, resultsSplashScreen[1].parameterName);
718 }
719 case LAST_PARAMETER_3: {
720 new center[GFX_POINT];
721 center.x = 120;
722 center.y = 104;
723 GFX_drawText(center, 15, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, resultsSplashScreen[2].value);
724 center.y = 144;
725 GFX_drawText(center, 10, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, resultsSplashScreen[2].parameterName);
726 }
727 case QR_CODE: {
728 if (ss_QR_code >= 0) {
729 GFX_drawImage(displayCenter, 0xFF, 0xFF00FF, 100, 100, screenAngle, MIRROR_BLANK, ss_QR_code);
730 }
731 if (splashscreenIsAppVersionSet) {
732 GFX_drawText([120, 20], 9, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, ssApplicationVersionStr);
733 }
734 }
735 case TWIST_ICON: {
736 if (ss_twist_1 >= 0) {
737 new center[GFX_POINT];
738 center.x = 120;
739 center.y = (splashScreenLeaderBoardType != e_ssLeaderBoardType:ssContinue) ? 120 : 92;
740 GFX_drawImage(center, 0xFF, 0xFF00FF, 100, 100, screenAngle, MIRROR_BLANK, (splashScreenAnimationTime > 500) ? (ss_twist_2) : (ss_twist_1));
741 }
742 if (splashScreenAnimationTime > 1000) {
743 splashScreenAnimationTime = 0;
744 }
745 if (splashScreenLeaderBoardType == e_ssLeaderBoardType:ssContinue) {
746 new center[GFX_POINT];
747 center.x = 120;
748 center.y = 176;
749 GFX_drawText(center, 9, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, "TWIST");
750 center.y = 204;
751 GFX_drawText(center, 9, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, "TO CONTINUE");
752 }
753 }
754 case TWIST_TO_START: {
755 new condition_1 = ((screenAngle % 180) > 0);
756 new condition_2 = ((screenAngle % 180) == 0);
757 new center[GFX_POINT];
758 center.x = 120 * condition_2 + 140 * condition_1;
759 center.y = 92 * condition_2 + 120 * condition_1;
760 GFX_drawText(center, 17, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, "TWIST");
761 center.x = 120 * condition_2 + 92 * condition_1;
762 center.y = 140 * condition_2 + 120 * condition_1;
763 GFX_drawText(center, 10, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, "TO START");
764 }
765 case TAP_ICON: {
766 if (ss_tap_icon >= 0) {
767 new center[GFX_POINT];
768 center.x = 92;
769 center.y = 120;
770 GFX_drawImage(center, 0xFF, 0xFF00FF, 100, 100, screenAngle, MIRROR_BLANK, ss_tap_icon);
771 }
772 new center[GFX_POINT];
773 center.x = 176;
774 center.y = 120;
775 GFX_drawText(center, 9, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, keyColor, "TRIPLE TAP");
776 center.x = 204;
777 GFX_drawText(center, 9, screenAngle, SPLASH_SCREEN_FONT, TEXT_ALIGN_CENTER, baseColor, "TO START NEW");
778 }
779 default : {}
780 }
781}
782/******/
783
784
Wrapped for easier reading. Turn wrap off to inspect exact line lengths.
Context Rail

Related nodes

fixed.inc
Source / SDK 6.1 / Pawn / Core
graphics.inc
Source / SDK 6.1 / Pawn / Core
leaderboard.inc
Source / SDK 6.1 / Pawn / Core
log.inc
Source / SDK 6.1 / Pawn / Core
Previous Node
sound.inc
Source / SDK 6.1 / Pawn / Core
Next Node
string.inc
Source / SDK 6.1 / Pawn / Core