#include "Content\\ShellScripts\\stddefs.h" #include "Content\\ShellScripts\\ScriptStrings.h" #include "Content\\ShellScripts\\buttons.script" #include "Content\\ShellScripts\\ErrorScreen.script" #include "Content\\ShellScripts\\common_shell.script" // jcem #define RANK_MAXLOOPS 9 // sync w/ gs_single_rank.script #define ALPHA_MIN 0 #define ALPHA_DEC 15 // fade out deccrement down to ALPHA_MIN #define ALPHA_INIT_VALUE 5 // should be between ALPHA_MIN < & < ALPHA_MAX #define ALPHA_INC 15 // fade in incrementsupward ALPHA_MAX #define ALPHA_MAX 120 // #define MAX_STR_TYPE_LEN 16 // sync w/ MW4SHELL::CTCL_CheckCampaign(6, ...) #define MAX_CAPS 40 // 0-9 a-z '-' ' ' BkSP Enter #define CAPS_PER_ROW 10 #define NAME_HEIGHT 28 #define NAME_GAPY 15 #define TYPE_HEIGHT 32 #define TYPE_GAPY 15 #define CAPS_YSTART 280 #define CAPS_LMARGIN 180 #define CAPS_RMARGIN (180 - 30) #define CAPS_TOTALX (800 - CAPS_LMARGIN - CAPS_RMARGIN) #define CAPS_WIDTH (CAPS_TOTALX / CAPS_PER_ROW) #define CAPS_HEIGHT 48 #define CAPS_GAPY 7 #define PM_FIX_CURCAP (-4876) #define NAME_TIME_HEIGHT 60 // 60 pixel high #define MAX_IDLE 15000 #define MAX_IDLE2 10000 main { GUI_CREATE { if callback($$CTCL_CheckUseJPD$$) setpointer(0) location = 0, 0, 10000 //Makes the connection to the string table .dll //Requires the #include "Content\\ShellScripts\\ScriptStrings.h" in every script with localizable text setresource("ScriptStrings.dll") object screen = o_ID_Screen initialize(screen) focus(screen.o_fscreen) mail(25, @shell@volumn_control) } } o_ID_Screen { GUI_CREATE { int nTimeCutOFF int nTime_Quit = MAX_IDLE int nTime_Left = -1 int nTime_Cur // temp value nTimeCutOFF = gettimex() + nTime_Quit framerate=10 sound sndOpenPanel = SPATH "sfx_vtol_drop.wav" // sfx_turret_actuator.wav play sndOpenPanel, 1 callback($$CTCL_SetDispStateCOOP$$, 0, 1, 1) callback($$CTCL_SetDispStateCOOP$$, 1, 1, 0) callback($$CTCL_SetDispStateCOOP$$, 2, 1, 7) callback($$CTCL_SetDispStateCOOP$$, 3, 1, 1) int MAX_ROWS = MAX_CAPS / CAPS_PER_ROW if MAX_CAPS % CAPS_PER_ROW // if MAX_CAPS % CAPS_PER_ROW != 0 MAX_ROWS = MAX_ROWS + 1 // variables for fading in and out int alpha_val = ALPHA_INIT_VALUE int fadeout = false int nRetBut = 0 int str_length string str_typed int uPlayerID string aCaps[MAX_CAPS] //callback($$CTCL_GetPlayerName$$, str_typed) font3d font_mesg = "arial.ttf" // FPATH "" font3d TypeFont = "arial.ttf" font3d CapsFont = "h_keybd.ttf" if callback($$CTCL_GetACP$$) == 949 // korean font3d help_font = "±¼¸².ttf" else font3d help_font = "arial.ttf" // FPATH "" int row int col int i_loop for i_loop = 48; i_loop < 58; i_loop++ // '0' - '9' { aCaps[i_loop - 48] = chr$(i_loop) } for i_loop = 65; i_loop < 91; i_loop++ // 'A' - 'Z' { aCaps[i_loop - 65 + 10] = chr$(i_loop) } aCaps[10 + 26 + 0] = "-" aCaps[10 + 26 + 1] = chr$(0xb8) // 0xb8, space aCaps[10 + 26 + 2] = chr$(0xc1) // 0xc1, BackSpace( <- )... aCaps[10 + 26 + 3] = chr$(0xc6) // 0xc6, Enter int nCurCap = 10 + 26 + 2 // back space, 0 object o_fscreen = s_fscreen o_fscreen.playHorz = 1 o_fscreen.playVert = 1 initialize(o_fscreen) pane p_infopanel = "hsh\\coop\\infopanel.png" color(p_infopanel) = packcolor(255, 255, 255, 255) alphamode(p_infopanel) = am_alpha_alphainvalpha int nDiffX = 15 int nPanelX = -getwidth(p_infopanel) pane p_yourname = "hsh\\coop\\enteryourname.png" color(p_yourname) = packcolor(255, 255, 255, 255) alphamode(p_yourname) = am_alpha_alphainvalpha } GUI_INIT { } GUI_EXECUTE { if (!fadeout) { nTime_Cur = gettimex() if nTimeCutOFF <= nTime_Cur { // esc.. cancel this screen if 0 == length$(str_typed) { str_typed = "nonamed" } fadeout = true nRetBut = fs_but1 return } else { nTime_Cur = nTimeCutOFF - nTime_Cur nTime_Cur = nTime_Cur + 500 // round up nTime_Cur = nTime_Cur / 1000 // as sec if nTime_Cur < 0 nTime_Cur = 0 if (nTime_Quit / 1000) < nTime_Cur nTime_Cur = nTime_Quit / 1000 // display as sec... nTime_Left = nTime_Cur } } if fadeout == true { // Fading out(Exiting) if ALPHA_MIN < alpha_val { alpha_val = alpha_val - ALPHA_DEC if alpha_val <= ALPHA_MIN { alpha_val = ALPHA_MIN unfocus if nRetBut == fs_but1 { if @SHELL@id_type_is_single { string saNames[RANK_MAXLOOPS] int naStages[RANK_MAXLOOPS] int naScores[RANK_MAXLOOPS] int naKills[RANK_MAXLOOPS] int naDeaths[RANK_MAXLOOPS] int naTime[RANK_MAXLOOPS] int naMech[RANK_MAXLOOPS] int naSuccess[RANK_MAXLOOPS] int nLastIdx = RANK_MAXLOOPS int nScores nScores = callback($$CTCL_CheckCampaign$$,6,nLastIdx,saNames[0], naStages[0], naScores[0], naKills[0], naDeaths[0], naTime[0], naMech[0], naSuccess[0]) if nLastIdx != -1 { saNames[nLastIdx] = str_typed } callback($$CTCL_CheckCampaign$$,7,nScores,saNames[0], naStages[0], naScores[0], naKills[0], naDeaths[0], naTime[0], naMech[0], naSuccess[0]) @SHELL@currentScreen = @SHELL@lastScreen[@SHELL@lastScreenDepth] @SHELL@lastScreenDepth-- } else { #if 1 callback($$CTCL_SetPlayerName$$, str_typed, uPlayerID) callback($$SetShellCommand$$, StartNetworkShellsCommand) @SHELL@currentScreen = LAUNCHGAME @SHELL@lastScreenDepth-- #else //@SHELL@lastScreenDepth++ //@SHELL@lastScreen[@SHELL@lastScreenDepth] = MAINMENU //@SHELL@currentScreen = // 200 // CAMPAIGNLOBBY #endif } } else { @SHELL@currentScreen = MAINMENU // @SHELL@lastScreen[@SHELL@lastScreenDepth] @SHELL@lastScreen[@SHELL@lastScreenDepth] = MAINMENU @SHELL@lastScreenDepth-- } //script_end "gs_multi_id.script" } } return } else { // Fading in(Entering) if alpha_val < ALPHA_MAX { alpha_val += ALPHA_INC if alpha_val >= ALPHA_MAX { alpha_val = ALPHA_MAX } } } nDiffX = nDiffX + 15 if nPanelX < 0 nPanelX = nPanelX + nDiffX if 0 < nPanelX nPanelX = 0 } GUI_DRAW { render @shell@p_bkgnd_4coop, 0, 0, 0 setpencolor(0, 0, 40, alpha_val) drawrect 0, 0 to getresx(), getresy() int boxcolor #if 0 boxcolor = packcolor(0, 0, 120, 255) // blue setpencolor(boxcolor) drawrect 0, 0 to getresx(), getresy() #endif render p_infopanel, nPanelX, 0, 0 int x int y y = CAPS_YSTART - (TYPE_HEIGHT + TYPE_GAPY) - (NAME_HEIGHT + NAME_GAPY) render p_yourname, nPanelX + CAPS_LMARGIN, y, 1 int nWidth int n_color string text int text_size for i_loop = 0; i_loop < MAX_CAPS; i_loop++ { row = i_loop / CAPS_PER_ROW col = i_loop % CAPS_PER_ROW x = CAPS_LMARGIN + CAPS_WIDTH * col y = CAPS_YSTART + CAPS_HEIGHT * row if 0 < row y = y + CAPS_GAPY * (row - 1) text = aCaps[i_loop] text_size = -(1000 + CAPS_HEIGHT) if nCurCap == i_loop n_color = packcolor(255,255,0,255) else { if (i_loop == MAX_CAPS - 1) n_color = packcolor(255,255,255,255) else n_color = packcolor(240,240,240,255) } print3d_attributes = CapsFont, n_color, text_size,0,1,1,0,just_left,1 nWidth = getprint3dwidth(text) x = x + (CAPS_WIDTH - nWidth) / 2 print3d_position = nPanelX + x, y print3d text } boxcolor = packcolor(192, 192, 192, 200) // half-transparent editing-box setpencolor(boxcolor) y = CAPS_YSTART - (TYPE_HEIGHT + TYPE_GAPY) drawrect nPanelX + CAPS_LMARGIN, y to nPanelX + getresx() - CAPS_RMARGIN, y + TYPE_HEIGHT text_size = -(1000 + TYPE_HEIGHT) n_color = packcolor(255,255,0,255) print3d_attributes = TypeFont, n_color, text_size,0,1,1,0,just_left,1 print3d_position = nPanelX + CAPS_LMARGIN + 10, y print3d str_typed if (nPanelX == 0) && (nTime_Left != -1) { print3d_margins = 610, 140 to 690, 214 text = conv$(nTime_Left) text_size = -(1000 + NAME_TIME_HEIGHT) n_color = packcolor(255,255,255,255) print3d_attributes = font_mesg, n_color, text_size,0,1,1,0,just_center,1 int nHeight = getprint3dheight(text) print3d_position = 610, 214 - nHeight print3d text // jcem - draw help text!!! print3d_attributes = help_font, 0xff80ff00, -(1000 + 14), 1, 1, 1, 0, just_center print3d_margins = 140, 490 to 670, 530 print3d_position = 140, 490 if callback($$CTCL_GetACP$$) == 949 // korean { print3d "Á¶À̽ºÆ½ÀÇ ÇÞ(HAT)À» »óÇÏÁ¿ì·Î ¿òÁ÷¿© ¹æ¾Æ¼è¸¦ ´ç±â¸é ±ÛÀÚ°¡ ÀԷµ˴ϴÙ. ÀÔ·ÂÀÌ ³¡³ª¸é ¿ìÇÏ´Ü Enter۸¦ ¼±ÅÃÇϽŠÈÄ ¹æ¾Æ¼è¸¦ ´ç±â½Ê½Ã¿À.\nÃʱâ È­¸éÀº ¾öÁö(¹Ì»çÀÏ) ¹öưÀ» ´©¸£½Ã¸é µË´Ï´Ù." } else { print3d "Use HAT(on joystick) to move cursor. Trigger on ENTER end of typing.\nThumb button(on joythick) for MainScreen." } } } GUI_MAILBOX { if sender == this { if getmessage(0) == PM_FIX_CURCAP { int row_dif = getmessage(1) int col_dif = getmessage(2) row = nCurCap / CAPS_PER_ROW col = nCurCap % CAPS_PER_ROW row = row + row_dif col = col + col_dif if row < 0 row = MAX_ROWS - 1 if MAX_ROWS <= row row = 0 if col < 0 col = CAPS_PER_ROW - 1 if CAPS_PER_ROW <= col col = 0 int NewCap NewCap = row * CAPS_PER_ROW + col if MAX_CAPS <= NewCap { if row_dif { if row_dif < 0 NewCap = NewCap - CAPS_PER_ROW if row_dif > 0 NewCap = NewCap % CAPS_PER_ROW } else { if col_dif < 0 NewCap = MAX_CAPS - 1 if col_dif > 0 NewCap = (MAX_CAPS / CAPS_PER_ROW) * CAPS_PER_ROW } } if nCurCap != NewCap { nCurCap = NewCap } } return } if sender == o_fscreen { nTime_Cur = gettimex() nTime_Quit = nTimeCutOFF - nTime_Cur nTime_Quit = nTime_Quit / 1000 nTime_Quit = nTime_Quit * 1000 if nTime_Quit < MAX_IDLE2 nTime_Quit = MAX_IDLE2 if MAX_IDLE < nTime_Quit nTime_Quit = MAX_IDLE // possible? nTime_Left = nTime_Quit / 1000 nTimeCutOFF = gettimex() + nTime_Quit int kEvent = getmessage(1) if kEvent == fs_but1 { str_length = length$(str_typed) if str_length < MAX_STR_TYPE_LEN { if nCurCap < 10 { str_typed = str_typed chr$(48 + nCurCap) return } if nCurCap < 10 + 26 { str_typed = str_typed chr$(nCurCap - 10 + 65) return } if nCurCap == 10 + 26 + 0 { str_typed = str_typed "-" return } if nCurCap == 10 + 26 + 1 { if 0 < str_length str_typed = str_typed " " return } } if nCurCap == 10 + 26 + 2 { if 0 < str_length { str_typed = left$(str_typed, str_length - 1) } return } if nCurCap == 10 + 26 + 3 // end select... { //if 0 < str_length { if 0 == length$(str_typed) { str_typed = "nonamed" } fadeout = true nRetBut = fs_but1 return } } return } if kEvent == fs_but2 { // esc.. cancel this screen //play btnTriggeredSound,1 fadeout = true nRetBut = fs_but2 return } if (kEvent & fs_left) { mail(PM_FIX_CURCAP, 0, -1, this) } if (kEvent & fs_right) { mail(PM_FIX_CURCAP, 0, +1, this) } if (kEvent & fs_up) { mail(PM_FIX_CURCAP, -1, 0, this) } if (kEvent & fs_down) { mail(PM_FIX_CURCAP, +1, 0, this) } } } GUI_DESTROY { unfocus } }