From 387ff2c5a5c2941977b285ba530b805678e063f5 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 20 Mar 2021 12:12:39 +0000 Subject: [PATCH] Font functions, beginning of HUDstuff --- !RunImage,ff8 | Bin 6608 -> 6652 bytes Makefile,fe1 | 12 +++------ c/CTheEscape | 73 +++++++++++++------------------------------------- c/Graphics | 35 ++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 62 deletions(-) diff --git a/!RunImage,ff8 b/!RunImage,ff8 index 377dbea41e91cb12a4a2809b81c80a4fd5381216..591c988f4c1161639e8e67c290e1fcece2a5779d 100644 GIT binary patch delta 2187 zcmZ8i4Qx|Y6h80ue{EU2Zf;#+?FM5m3@8NxBFF}!&P~@aB;o`%9WWwH9EPxjq#GR! z|6q7Gk;J$MLPY$7AY>7uO(22m3@+;d+~ zPfSiMB$A?BY($A~^^|ZD{hBNwB4KOc*P&_y9i~c2){`VJ*HPlScS}sb{x$5cVlQIf ziv1<*b=bdx{dw%UeGB$)ay@%XtPqjOCq;orPxvKSa7glIaHqk!hHxUdZg3|mrCIX# zFt83W;Laf!90jKz!g1%d;M~tj@)7V!c1CbnRslH#?GLtJaM}4m-m8=3FM-@u`6eKr zK)a>#FF*^xe!h&2ILa=$haL zdPR%g4D^ExPlI2Qc^4eOik^|=Mc{kY>}DX75KBZ&^MSs_cIaG_Qz9jnYUtBI*Js2k zLM-0xd$8%!Z05kGoqLAv0zIUmQ-Ja=Kd3*TdESK0ZOvvpY?fu%G{Z)R=vQD<3a)Vo z$IpKb+-Pv_aguBpA<2H|Z{yBObu>D$hC7g7cI;`ebORg*{Uu5d2gkiS@~mVF^xYOw zq&vawM0;3VUnWdrPQ!TNEUPl)3rV)XP+yK2ROftCPruUA;Z?4!LTT%|W4cCMgRtoa z1*NFy>rn>S8AF-7h&p0KLD@odaw;D{hZHr~B>7)vHb?UH;p<-HW|hd!-*^pQXLhUD%7-E2S1sTw>+snIZqh zv2p#r+E^AXj4npBN6_}8P%okA{x}ehD!+_K=2E0DB_C){(|TN;!y=nz0q29tqS$NE* zQ>jE4QVhBNUn=3ltnG4nF%hL%Wt0CA>F~MP(5P2ALR|`fd;_#g`4cI5IhWy40nhzd zC5QuQ-(a0tu4-LI*KZ+83f9AMkL$2nQE0BFuf=MHZbs*9DEu&VpOeo;r}7;lpJ&xp z4_jd!B^+m4ts_gBIw9K>0dwjIZd3F`d-0&66Ai5M@NN7b$u{~( z$&HLu3cwAAbQOCQd@Q0H!3n00*nNTSEPb{0^~FnIP6@c)&vBVK++KMT=Mib(P? zEr%dVQ8QwRq7=d(URa?B5<_w!H>*$xYUW8gwItX1bm2EMmfPl2;x4XU`lQ<+!7vWCqyq?_3^>=z-zsp~?`MICy9Qqz)@tm+wcwnUq-S_tq4MHLx5?$RvB%%>q=Z0J# z^*OqNUq?q8Q*!}(@Z)+C!_N5wjyy@ne0h4dufSa7U__t2OSBKde?02%ko%BiAFFcL zvB3fpt8hC_4yTja+Ky?Mf%Ui@{;8XZrb8+rk3*h<)Ix%gd64HJFG3n2&5-{Ah^u0$ delta 2128 zcmb7FeQZ-z6hHU%b){WLTRL>z#@fL~`QFNh5F*kMhS8xL&Mz{D0}IXwijbfq$U5i{ zqr&hGgedM!G;uOD6gi35)xEL1e+R{N|cz4ToP)!ALu&XZ1ILJ16^XGcLJ>$ zkShndM1Ow}dx1n3#_b?l!+Yf*3vrLNfF*g6^=8(^=UdD3F?GgdM;n^->Zo6LJ&V$+a0G1Q z87foaQlLR^<0q`ap+sexo#;?VjGnjBY}qIL0iQ%Z6_Mur;fMzr8ym0w34THY+I z*cr-jv~i!UB5e=60$Gk8wDLOJ${DK>CvM!Uj1uSkrN#~21$~ftLlx)_^M>w(E}1u! zshP25fPUNfA zry!w7v;gt)L5y?)G@ZVyhu zW7?5D8x}R{@1w_mptLr6Q~v=kvj#bYh)hH_V{L%Aae7blB8RtjW%u>d`x;r!ft`&# zVEm1%6f*6tSj8!26p7i2=>hCl#+N<=cM#SnR;PJ_;`GwNnTBajF;A`zesOZo8xy!q z?@kv}(R_>kjsq`TO4vvy5>KNhT_hZg01@njE>0~E_-X|2#x^?mPDhrF+#XMXiLqA?6 zhI9j@5Pw{hX~maA;IA|Jdw5OiR6GfLQ-k&(j!hgF@px)E8^xzMZu@#`Nhng- zf+*}Otwc%uqS1a#d`n>0e!}i*A3e0)l5_E8qK%LjA>t>}bU}_oy0>!XE9GvVjhFd6 mT=va1^aDP3VfrSb3`jO40Lg=lf{cR{LMB6|L2iYFA^!kE%Sn|0 diff --git a/Makefile,fe1 b/Makefile,fe1 index 02ad35f..8c7020a 100644 --- a/Makefile,fe1 +++ b/Makefile,fe1 @@ -30,14 +30,6 @@ o.Sound: C:h.swis o.Sound: C:h.kernel o.Sound: C:h.kernel o.Sound: h.Sound -o.Graphics: c.Graphics -o.Graphics: C:h.swis -o.Graphics: C:h.kernel -o.Graphics: C:h.kernel -o.Graphics: c.Graphics -o.Graphics: C:h.swis -o.Graphics: C:h.kernel -o.Graphics: C:h.kernel o.Input: c.Input o.Input: C:h.swis o.Input: C:h.kernel @@ -46,6 +38,10 @@ o.Input: c.Input o.Input: C:h.swis o.Input: C:h.kernel o.Input: C:h.kernel +o.Graphics: c.Graphics +o.Graphics: C:h.swis +o.Graphics: C:h.kernel +o.Graphics: C:h.kernel o.CTheEscape: c.CTheEscape o.CTheEscape: C:h.swis o.CTheEscape: C:h.kernel diff --git a/c/CTheEscape b/c/CTheEscape index c2c12de..b1a4f46 100644 --- a/c/CTheEscape +++ b/c/CTheEscape @@ -26,7 +26,11 @@ extern int current_element; enum sprite_e{player_ship, durno_ship,player_shipl,player_shipr}; char *sprites[] = {"player_ship","durno_ship","player_shipl","player_shipr"}; -int font = 0; +enum font_e{sys_12_8,font_max}; + +enum fontcolour_e{lcars_black,lcars_violet1}; +int fontcolours[] = {0x11111000,0xc4727200}; +int font[font_max]; struct EntityLocation_s { short int X,Y; @@ -152,10 +156,10 @@ void game_tick_stars() for(i = 0; i <= MAX_STARS; i++) { Stars[i].Y -= (tick - lasttick) * 2; - if(Stars[i].Y <= 0) + if((Stars[i].Y + 30) <= 0) { Stars[i].X = rand() % DISPLAY_X; - Stars[i].Y = DISPLAY_Y; + Stars[i].Y = DISPLAY_Y + 30; } } } @@ -221,45 +225,19 @@ void game_draw_hud() { draw_sprite("lcars",4,DISPLAY_Y-180); -inreg.r[0] = font; -inreg.r[1] = (int)"Shields"; -inreg.r[2] = 1 << 4; -inreg.r[3] = 75; -inreg.r[4] = DISPLAY_Y-60; -inreg.r[5] = 0; -inreg.r[6] = 0; -inreg.r[7] = 0; -_kernel_swi(Font_Paint,&inreg,&outreg); + font_colour(fontcolours[lcars_black],fontcolours[lcars_violet1],font[sys_12_8]); -inreg.r[0] = font; -inreg.r[1] = (int)"Integrity"; -inreg.r[2] = 1 << 4; -inreg.r[3] = 75; -inreg.r[4] = DISPLAY_Y-90; -inreg.r[5] = 0; -inreg.r[6] = 0; -inreg.r[7] = 0; -_kernel_swi(Font_Paint,&inreg,&outreg); + draw_text("Shields",75,DISPLAY_Y-62,font[sys_12_8]); + draw_text("Integrity",75,DISPLAY_Y-92,font[sys_12_8]); + draw_text("Velocity",75,DISPLAY_Y-122,font[sys_12_8]); + draw_text("Distance",75,DISPLAY_Y-152,font[sys_12_8]); + + font_colour(fontcolours[lcars_violet1],fontcolours[lcars_black],font[sys_12_8]); -inreg.r[0] = font; -inreg.r[1] = (int)"Velocity"; -inreg.r[2] = 1 << 4; -inreg.r[3] = 75; -inreg.r[4] = DISPLAY_Y-120; -inreg.r[5] = 0; -inreg.r[6] = 0; -inreg.r[7] = 0; -_kernel_swi(Font_Paint,&inreg,&outreg); - -inreg.r[0] = font; -inreg.r[1] = (int)"Distance"; -inreg.r[2] = 1 << 4; -inreg.r[3] = 75; -inreg.r[4] = DISPLAY_Y-150; -inreg.r[5] = 0; -inreg.r[6] = 0; -inreg.r[7] = 0; -_kernel_swi(Font_Paint,&inreg,&outreg); + draw_text("Shields",230,DISPLAY_Y-62,font[sys_12_8]); + draw_text("Integrity",230,DISPLAY_Y-92,font[sys_12_8]); + draw_text("Velocity",230,DISPLAY_Y-122,font[sys_12_8]); + draw_text("Distance",230,DISPLAY_Y-152,font[sys_12_8]); } void game_setup() @@ -299,20 +277,7 @@ int main(int argc, char *argv[]) display_mode(DISPLAY_MODE); -inreg.r[0] = 0; -inreg.r[1] = (int)"System.Medium"; -inreg.r[2] = 12*16; -inreg.r[3] = 8*16; -inreg.r[4] = 0; -inreg.r[5] = 0; -_kernel_swi(Font_FindFont,&inreg,&outreg); - -font = outreg.r[0]; -inreg.r[0] = 0; -inreg.r[1] = 0xffaaa000; // TODO: Not purple -inreg.r[2] = 0x11111000; -inreg.r[3] = 14; -_kernel_swi(ColourTrans_SetFontColours, &inreg, &outreg); + font[sys_12_8] = font_find("System.Medium",12,8); game_setup(); diff --git a/c/Graphics b/c/Graphics index 5f212ef..5ce6e2c 100644 --- a/c/Graphics +++ b/c/Graphics @@ -89,6 +89,41 @@ void draw_sprite(char* spritename,int x, int y) _kernel_swi(OS_SpriteOp,&inreg,&outreg); } +void draw_text(char* text, int x, int y, int fonthandle) +{ + inreg.r[0] = fonthandle; + inreg.r[1] = (int) text; + inreg.r[2] = 1 << 4; + inreg.r[3] = x; + inreg.r[4] = y; + inreg.r[5] = 0; + inreg.r[6] = 0; + inreg.r[7] = 0; + _kernel_swi(Font_Paint,&inreg,&outreg); +} + +int font_find(char* font, int height, int width) +{ + inreg.r[0] = 0; + inreg.r[1] = (int) font; + inreg.r[2] = height*16; + inreg.r[3] = width*16; + inreg.r[4] = 0; + inreg.r[5] = 0; + _kernel_swi(Font_FindFont,&inreg,&outreg); + + return outreg.r[0]; +} + +void font_colour(int fg, int bg, int fonthandle) +{ + inreg.r[0] = fonthandle; + inreg.r[1] = bg; + inreg.r[2] = fg; + inreg.r[3] = 14; + _kernel_swi(ColourTrans_SetFontColours, &inreg, &outreg); +} + void screen_flipbuffer() { inreg.r[0] = 19;