V0.4 - added HUD
This commit is contained in:
parent
954fa72ed7
commit
a7fe765b38
|
@ -44,6 +44,8 @@ set(ASSETS_cg
|
|||
assets-cg/billboard/rightturn.png
|
||||
assets-cg/billboard/uphill.png
|
||||
assets-cg/billboard/downhill.png
|
||||
assets-cg/fonts/speedfont.png
|
||||
assets-cg/hud/speedhud.png
|
||||
)
|
||||
|
||||
fxconv_declare_assets(${ASSETS_cg} WITH_METADATA)
|
||||
|
|
100
CppOutRun.layout
100
CppOutRun.layout
|
@ -2,41 +2,6 @@
|
|||
<CodeBlocks_layout_file>
|
||||
<FileVersion major="1" minor="0" />
|
||||
<ActiveTarget name="Release" />
|
||||
<File name="src/parameters.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="429" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/main.cc" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="1" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="9106" topLine="345" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/colors.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="352" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/cars.cc" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1019" topLine="11" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/circuit.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="645" topLine="43" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/clouds.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="203" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="CMakeLists.txt" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="411" topLine="3" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/drawstuff.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2642" topLine="49" />
|
||||
|
@ -47,29 +12,44 @@
|
|||
<Collapse line="76" />
|
||||
</Folding>
|
||||
</File>
|
||||
<File name="src/include/drawstuff.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="src/main.cc" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="1" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="622" topLine="0" />
|
||||
<Cursor1 position="688" topLine="22" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/camera.cc" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="src/parameters.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="370" topLine="0" />
|
||||
<Cursor1 position="399" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/cars.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="src/src/cars.cc" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="443" topLine="0" />
|
||||
<Cursor1 position="1019" topLine="11" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/circuit.cc" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="src/src/circuit.cc" open="1" top="1" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6693" topLine="225" />
|
||||
<Cursor1 position="6354" topLine="190" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/fixed.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="src/colors.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="778" topLine="0" />
|
||||
<Cursor1 position="352" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/segment.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="539" topLine="12" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/clouds.cc" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="203" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="CMakeLists.txt" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="411" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/segment.cc" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="2" zoom_2="0">
|
||||
|
@ -77,19 +57,39 @@
|
|||
<Cursor1 position="230" topLine="30" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/segment.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="539" topLine="11" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/camera.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="221" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/src/camera.cc" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="370" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/drawstuff.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="622" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/clouds.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="306" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/circuit.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1654" topLine="48" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/include/cars.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="443" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="src/fixed.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="778" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
from make_grid import *
|
||||
|
||||
make_grid(16, 18)
|
|
@ -0,0 +1,9 @@
|
|||
speedfont.png:
|
||||
name: speedfont
|
||||
type: font
|
||||
charset: print
|
||||
grid.size: 16x18
|
||||
grid.padding: 1
|
||||
grid.border: 0
|
||||
proportional: true
|
||||
height: 18
|
|
@ -0,0 +1,28 @@
|
|||
from PIL import Image, ImageDraw
|
||||
|
||||
|
||||
def make_grid(char_w, char_h):
|
||||
"""
|
||||
Arguments
|
||||
char_w : character's width (int)
|
||||
char_h : character's height (int)
|
||||
|
||||
Description
|
||||
Make a grid with 1 pxl of padding and boxes around each character in order to make easier the font creation.
|
||||
|
||||
Usage
|
||||
Just enter :
|
||||
>>> make_grid(char_width, char_height)
|
||||
An image will be create in the same folder that this programm in *.png format and the name starts by : 'grid_'.
|
||||
"""
|
||||
width, height = 16 * (char_w + 2), 6 * (char_h + 2)
|
||||
grid = Image.new('RGB', (width, height), 'white')
|
||||
draw = ImageDraw.Draw(grid)
|
||||
|
||||
for x in range(0, width, char_w + 2):
|
||||
for y in range(0, height, char_h + 2):
|
||||
if (x // (char_w + 2) - y // (char_h + 2)) % 2: color = 'blue'
|
||||
else: color = 'orange'
|
||||
draw.rectangle((x, y, x + char_w + 1, y + char_h + 1), fill=None, outline=color)
|
||||
|
||||
grid.save(f"grid_{char_w}—{char_h}.png")
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,5 @@
|
|||
*.png:
|
||||
type: bopti-image
|
||||
profile: p4
|
||||
name_regex: (.*)\.png \1
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
44
src/main.cc
44
src/main.cc
|
@ -30,8 +30,8 @@ extern bopti_image_t leftturn, rightturn, uphill, downhill;
|
|||
extern bopti_image_t player;
|
||||
extern bopti_image_t sky1, sky2, sky3;
|
||||
extern bopti_image_t mountain, treeline;
|
||||
|
||||
|
||||
extern font_t speedfont;
|
||||
extern bopti_image_t speedhud;
|
||||
|
||||
std::vector<Segment*> circuit;
|
||||
int MAX_SEGMENT=0;
|
||||
|
@ -58,9 +58,9 @@ bool BDrawRoad = true;
|
|||
uint16_t currentcurve=0;
|
||||
uint8_t shiftcolor=0;
|
||||
|
||||
float speed = 0;
|
||||
float maxspeedforward = 5;
|
||||
float maxspeedbackward = 2;
|
||||
float speed = 0.0;
|
||||
float maxspeedforward = 5.0;
|
||||
float maxspeedbackward = 2.0;
|
||||
int direction = 1;
|
||||
bool speedcontrol = false;
|
||||
|
||||
|
@ -246,6 +246,7 @@ int main(void)
|
|||
#endif
|
||||
|
||||
prof_t perf_update, perf_create, perf_project, perf_render;
|
||||
int32_t start_time = 99000000;
|
||||
uint32_t time_update=0, time_create=0, time_project=0, time_render=0;
|
||||
prof_init();
|
||||
|
||||
|
@ -278,6 +279,7 @@ int main(void)
|
|||
|
||||
uint32_t dt=0;
|
||||
uint16_t l=0;
|
||||
uint32_t remaining_time;
|
||||
|
||||
while (!stop)
|
||||
{
|
||||
|
@ -286,8 +288,13 @@ int main(void)
|
|||
prof_enter(perf_update);
|
||||
|
||||
get_inputs( dt, indexstart );
|
||||
|
||||
dt = ((float) (time_update+time_render+time_project) / 1000.0);
|
||||
|
||||
start_time -= (time_update+time_render+time_project);
|
||||
if (start_time<0) start_time=0;
|
||||
remaining_time = ((float) (start_time) / 1000000.0);
|
||||
|
||||
//--------------
|
||||
if (fround(cam->cZ)<=0) cam->cZ=fixdouble(0.0);
|
||||
if (fround(cam->cZ)>=maxDistance) cam->cZ=fixdouble(maxDistance);
|
||||
|
@ -422,7 +429,32 @@ int main(void)
|
|||
//dprint( 1, 30, C_RED, "Rdr=%.3D ms", time_render );
|
||||
//dprint( 1, 45, C_RED, "Upd=%.3D ms", time_update );
|
||||
|
||||
dprint( 1, 1, C_BLACK, "Dt=%.3D ms", dt );
|
||||
//dprint( 1, 1, C_BLACK, "Dt=%.3D ms", dt );
|
||||
|
||||
|
||||
float drawspeed = (float) (speed*5.0f);
|
||||
|
||||
dsubimage( 5, 5, &speedhud, 0, 117, 37, 13, DIMAGE_NONE); // speed logo
|
||||
dsubimage( 155, 5, &speedhud, 0, 130, 37, 13, DIMAGE_NONE); // timer logo
|
||||
|
||||
|
||||
dfont(&speedfont);
|
||||
dprint_opt(122,3, C_RGB(0,0,0), C_NONE, DTEXT_RIGHT, DTEXT_TOP, "%.1f :", drawspeed );
|
||||
dprint_opt(120,1, C_RGB(255,0,0), C_NONE, DTEXT_RIGHT, DTEXT_TOP, "%.1f :", drawspeed ); //the ':' char corresponds to "Km/h"
|
||||
|
||||
dprint_opt(253,3, C_RGB(0,0,0), C_NONE, DTEXT_RIGHT, DTEXT_TOP, "%.3D ;", remaining_time );
|
||||
dprint_opt(250,1, C_RGB(255,255,0), C_NONE, DTEXT_RIGHT, DTEXT_TOP, "%.3D ;", remaining_time ); // the ';' char corresponds to "s"
|
||||
|
||||
|
||||
if (drawspeed==0.0) dsubimage( 48, 25, &speedhud, 0, 0, 76, 13, DIMAGE_NONE);
|
||||
else if (drawspeed<3.30) dsubimage( 48, 25, &speedhud, 0, 13, 76, 13, DIMAGE_NONE);
|
||||
else if (drawspeed<6.70) dsubimage( 48, 25, &speedhud, 0, 26, 76, 13, DIMAGE_NONE);
|
||||
else if (drawspeed<10.0) dsubimage( 48, 25, &speedhud, 0, 39, 76, 13, DIMAGE_NONE);
|
||||
else if (drawspeed<13.3) dsubimage( 48, 25, &speedhud, 0, 52, 76, 13, DIMAGE_NONE);
|
||||
else if (drawspeed<16.7) dsubimage( 48, 25, &speedhud, 0, 65, 76, 13, DIMAGE_NONE);
|
||||
else if (drawspeed<20.0) dsubimage( 48, 25, &speedhud, 0, 78, 76, 13, DIMAGE_NONE);
|
||||
else if (drawspeed<23.3) dsubimage( 48, 25, &speedhud, 0, 91, 76, 13, DIMAGE_NONE);
|
||||
else dsubimage( 48, 25, &speedhud, 0, 104, 76, 13, DIMAGE_NONE);
|
||||
|
||||
//dprint( 1, 1, C_BLACK, "FPS=%.3D ms", 1000/dt );
|
||||
|
||||
|
|
Loading…
Reference in New Issue