diff --git a/!RunImage,ff8 b/!RunImage,ff8 index 377dbea..591c988 100644 Binary files a/!RunImage,ff8 and b/!RunImage,ff8 differ 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;