diff --git a/src/text.c b/src/text.c index 8b13789..c6aa160 100644 --- a/src/text.c +++ b/src/text.c @@ -1 +1,330 @@ +#include +#include +#include "sdl.h" +char about[] = { // about screen +"FUN COLUMNS" +" BY FTA " +"CODING: " +"O. GOGUEL " +"DESIGN: " +"O. BAILLY " +" MAITRE " +"VERSION 1.1" +"TOOLBOX-MAG" +" ISSUE: 04 " +" 03-FEB-91 " +" COPYRIGHT " +"FTA/TOOLBOX" +}; + +int aboutl [13][2] = { +{118, 35}, // fun columns +{118, 49}, // by fta +{118, 63}, // coding: +{118, 72}, // o. goguel +{118, 88}, // design: +{118, 97}, // o. bailly +{118, 104}, // maitre +{118, 132}, // version 1.1 +{118, 141}, // toolbox-mag +{118, 150}, // issue: 04 +{118, 159}, // 03-deb-91 +{118, 175}, // copyright +{118, 184} // fta/toolbox +}; + +char high[] = { // high scores +"HIGH " +"SCORES:" +"HULK " // OLIVIER +"..10000" +"EARTH " // J-YVES +"...9000" +"BUSH " // BERNARD +"...8000" +"AXE " // ERIC +"...7000" +"PERFECT" // HUBERT +"...6000" +"POWERS " // J-LUC +"...5000" +"TUGBOAT" // YVAN +"...4000" +"DINO " // EMILE +"......1" +}; + +int highl [18][2] = { +{22, 11}, // HIGH +{22, 18}, // SCORES: +{22, 34}, // HULK +{22, 42}, // ......0 +{22, 54}, // EARTH +{22, 62}, // ......0 +{22, 74}, // BUSH +{22, 82}, // ......0 +{22, 94}, // AXE +{22, 102}, // ......0 +{22, 114}, // PERFECT +{22, 122}, // ......0 +{22, 134}, // POWERS +{22, 142}, // ......0 +{22, 154}, // TUGBOAT +{22, 162}, // ......0 +{22, 174}, // DINO +{22, 182} // ......0 +}; + +char status[] = { // current status +"SCORE: " +" 0" // score +"LEVEL: " +"1E 1" // levels remaining / completed (31) +"TOTAL: " +" 0" // tiles smashed +}; + +int statusl [6][2] = { +{240, 11}, // score: +{240, 20}, // 0 +{240, 31}, // level: +{240, 40}, // 00 1 +{240, 51}, // total: +{240, 60} // 0 +}; + +char m_menu[] = { // main menu +"CHOOSE : " +"1-VERY EASY" +"2-EASY " +"3-MEDIUM " +"4-HARD " +"5-VERY HARD" +"6-JEDI " +"A-ABOUT " +"I-INFO " +"Q-QUIT " +}; + +int m_menul [10][2] = { +{118, 52}, // choose +{118, 66}, // 1 - very easy +{118, 73}, // 2 - easy +{118, 80}, // 3 - medium +{118, 87}, // 4 - hard +{118, 94}, // 5 - very hard +{118, 101}, // 6 - jedi +{118, 115}, // a - about +{118, 122}, // i - info +{118, 129} // q - quit +}; + +char info[] = { // info/instruction screen +"COLUMNS " +"RULES. " +" <-:LEFT " +" ->:RIGHT " +" R:ROTATE " +"SPC:FALL " +" ^R:RESTART" +" ^S:NEW PAT" +" N:NEXT " +" P:PAUSE " +" HAVE FUN !" +}; + +int infol [11][2] = { +{116, 50}, // columns +{116, 57}, // rules. +{116, 71}, // <-:left +{116, 78}, // ->:right +{116, 85}, // r:rotate +{116, 92}, // spc:fall +{116, 99}, // ^r:restart +{116, 106}, // ^s:new pat +{116, 113}, // n:next +{116, 120}, // p:pause +{116, 134} // have fun ! +}; + +char gameo[] = { +"GAME OVER" +}; + +int gameol [1][2] = { +{124, 97} +}; + +char pause[] = { +"> PAUSE <" +}; + +int pausel [1][2] = { +{124, 97} +}; + +char name[] = { +"ENTER NAME" +"< >" +}; + +int namel [2][2] = { +{120, 138}, +{120, 146} +}; + +///////// ASCII SPRITEMAP X/Y COORDS ///////// +// (Black XY, White XY) + +int ascii [128][4] = { +{518, 49, 582, 49}, // NUL Null +{518, 49, 582, 49}, // SOH Start Of Heading +{518, 49, 582, 49}, // STX Start of TeXt +{518, 49, 582, 49}, // ETX End of TeXt +{518, 49, 582, 49}, // EOT End Of Transm, +{518, 49, 582, 49}, // ENQ ENQuiry +{518, 49, 582, 49}, // ACK ACKnowledge +{518, 49, 582, 49}, // BEL BELl +{518, 49, 582, 49}, // BS Back Space +{518, 49, 582, 49}, // HT Horizontal Tabulation (Character Tabulation) +{518, 49, 582, 49}, // LF Line Feed +{518, 49, 582, 49}, // VT Vertical Tabulation (Line Tabulation) +{518, 49, 582, 49}, // FF Form Feed +{518, 49, 582, 49}, // CR Carriage Return +{518, 49, 582, 49}, // SO Shift Out +{518, 49, 582, 49}, // SI Shift In +{518, 49, 582, 49}, // DLE Data Link Escape +{518, 49, 582, 49}, // DC1 Device Control 1 +{518, 49, 582, 49}, // DC2 Device Control 2 +{518, 49, 582, 49}, // DC3 Device Control 3 +{518, 49, 582, 49}, // DC4 Device Control 4 +{518, 49, 582, 49}, // NAK Negative AKnowledgement +{518, 49, 582, 49}, // SYN SYNchronous idle +{518, 49, 582, 49}, // ETB End of Transmission Block +{518, 49, 582, 49}, // CAN CANcel +{518, 49, 582, 49}, // EM End of Medium +{518, 49, 582, 49}, // SUB SUBstitute +{518, 49, 582, 49}, // ESC ESCape +{518, 49, 582, 49}, // FS File Separator +{518, 49, 582, 49}, // GS Group Separator +{518, 49, 582, 49}, // RS Record Separator +{518, 49, 582, 49}, // US Unit Separator +{518, 49, 582, 49}, // SPC Space 510, 574 +{494, 25, 558, 25}, // ! Exclamation mark (point) +{486, 37, 550, 37}, // " Quotation mark, quotes +{510, 43, 574, 43}, // # Number sign, hash +{502, 25, 566, 25}, // $ Dollar Sign +{510, 25, 574, 25}, // % Percent sign +{486, 49, 550, 49}, // & Ampersand +{494, 37, 558, 37}, // ' Apostrophe +{470, 31, 534, 31}, // ( Left parenthesis +{478, 31, 542, 31}, // ) Right parenthesis +{462, 31, 526, 31}, // * Asterisk +{502, 31, 566, 31}, // + Plus sign +{486, 43, 550, 43}, // , Comma +{486, 31, 550, 31}, // - Hyphen, dash, minus +{478, 43, 542, 43}, // . Full stop, dot, point +{518, 37, 582, 37}, // / Forward slash +{478, 19, 542, 19}, // 0 zero +{486, 19, 550, 19}, // 1 one +{494, 19, 558, 19}, // 2 two +{502, 19, 566, 19}, // 3 three +{510, 19, 574, 19}, // 4 four +{518, 19, 582, 19}, // 5 five +{462, 25, 526, 25}, // 6 six +{470, 25, 534, 25}, // 7 seven +{478, 25, 542, 25}, // 8 eight +{486, 25, 550, 25}, // 9 nine +{470, 37, 534, 37}, // : Colon +{478, 37, 542, 37}, // ; Semicolon +{462, 43, 526, 43}, // < Less than, Left angled bracket +{510, 31, 574, 31}, // = Equal +{470, 43, 534, 43}, // > Greater than, Right angled bracket +{478, 49, 542, 49}, // ? Question mark +{518, 43, 582, 43}, // @ At sign, commercial at +{462, 1, 526, 1}, // A Alpha +{470, 1, 534, 1}, // B Bravo +{478, 1, 542, 1}, // C Charlie +{486, 1, 550, 1}, // D Delta +{494, 1, 558, 1}, // E Echo +{502, 1, 566, 1}, // F Foxtrot +{510, 1, 574, 1}, // G Golf +{518, 1, 582, 1}, // H Hotel +{462, 7, 526, 7}, // I India +{470, 7, 534, 7}, // J Juliett +{478, 7, 542, 7}, // K Kilo +{486, 7, 550, 7}, // L Lima +{494, 7, 558, 7}, // M Mike +{502, 7, 566, 7}, // N November +{510, 7, 574, 7}, // O Oscar +{518, 7, 582, 7}, // P Papa +{462, 13, 526, 13}, // Q Quebec +{470, 13, 534, 13}, // R Romeo +{478, 13, 542, 13}, // S Sierra +{486, 13, 550, 13}, // T Tango +{494, 13, 558, 13}, // U Uniform +{502, 13, 566, 13}, // V Victor +{510, 13, 574, 13}, // W Whiskey +{518, 13, 582, 13}, // X X-ray +{462, 19, 526, 19}, // Y Yankee +{470, 19, 534, 19}, // Z Zulu +{518, 31, 582, 31}, // [ Left square bracket +{510, 37, 574, 37}, // \ Backslash +{462, 37, 526, 37}, // ] Right square bracket +{518, 25, 582, 25}, // ^ Circumflex accent, Caret +{494, 31, 558, 31}, // _ Underscore +{502, 43, 566, 43}, // ` Grave accent +{462, 1, 526, 1}, // a alpha +{470, 1, 534, 1}, // b bravo +{478, 1, 542, 1}, // c charlie +{486, 1, 550, 1}, // d delta +{494, 1, 558, 1}, // e echo +{502, 1, 566, 1}, // f foxtrot +{510, 1, 574, 1}, // g golf +{518, 1, 582, 1}, // h hotel +{462, 7, 526, 7}, // i india +{470, 7, 534, 7}, // j juliett +{478, 7, 542, 7}, // k kilo +{486, 7, 550, 7}, // l lima +{494, 7, 558, 7}, // m mike +{502, 7, 566, 7}, // n november +{510, 7, 574, 7}, // o oscar +{518, 7, 582, 7}, // p papa +{462, 13, 526, 13}, // q quebec +{470, 13, 534, 13}, // r romeo +{478, 13, 542, 13}, // s seirra +{486, 13, 550, 13}, // t tango +{494, 13, 558, 13}, // u uniform +{502, 13, 566, 13}, // v victor +{510, 13, 574, 13}, // w whiskey +{518, 13, 582, 13}, // x x-ray +{462, 19, 526, 19}, // y yankee +{470, 19, 534, 19}, // z zulu +{462, 49, 526, 49}, // { Left curly bracket +{502, 37, 566, 37}, // | Vertical bar +{470, 49, 534, 49}, // } Right curly bracket +{494, 43, 558, 43}, // ~ Tilde +{518, 49, 582, 49}, // DEL DELete +}; + +///////////////// ASCII LINE READER ///////////////// +// api: text, x, y, line num, line len, col +int Ren_line(char line[], int char_x, int char_y, int ln, int ll, bool col ) { + + int cc; // char col + int j = 0; + + if (col) { + cc = 2; // white char + } else { + cc = 0; // black char + } + for (int i = 0; i < ll; i++) { + SDL_Rect char_dst = {char_x + j, char_y, 8, 5}; + SDL_Rect char_src = {ascii[line[i + ln]][cc], ascii[line[i + ln]][cc + 1], 8, 5}; + SDL_RenderCopy(sr, texture, &char_src, &char_dst); // render char + j = j + 8; // character height + } + return 0; +}