[client] Clean up screen view creation

This commit is contained in:
Bill Currie 2023-07-08 14:04:29 +09:00
parent 8bb5d2e1c9
commit 3138c7ae3b

View file

@ -104,6 +104,37 @@ static viewstate_t *_vs;//FIXME ick
canvas_system_t cl_canvas_sys;
static ecs_system_t cl_view_system;
static view_t
clscr_view (int x, int y, int w, int h, grav_t gravity)
{
auto view = View_New (cl_view_system, cl_screen_view);
View_SetPos (view, x, y);
View_SetLen (view, w, h);
View_SetGravity (view, gravity);
View_SetVisible (view, 0);
return view;
}
static void
clscr_set_pic (view_t view, qpic_t *pic)
{
Ent_SetComponent (view.id, canvas_pic, view.reg, &pic);
}
static void
clscr_set_cachepic (view_t view, const char *name)
{
Ent_SetComponent (view.id, canvas_cachepic, view.reg, &name);
}
static void
clscr_set_canvas_func (view_t view, canvas_func_f func)
{
Ent_SetComponent (view.id, canvas_func, view.reg, &func);
}
static void
SCR_CShift (void)
{
@ -188,11 +219,46 @@ cl_vidsize_listener (void *data, const viddef_t *vdef)
cl_set_size ();
}
static void
cl_create_views (void)
{
qpic_t *pic;
const char *name;
pic = r_funcs->Draw_PicFromWad ("ram");
ram_view = clscr_view (32, 0, pic->width, pic->height, grav_northwest);
clscr_set_pic (ram_view, pic);
pic = r_funcs->Draw_PicFromWad ("turtle");
turtle_view = clscr_view (32, 0, pic->width, pic->height, grav_northwest);
clscr_set_pic (turtle_view, pic);
pic = r_funcs->Draw_PicFromWad ("net");
net_view = clscr_view (64, 0, pic->width, pic->height, grav_northwest);
clscr_set_pic (net_view, pic);
timegraph_view = clscr_view (0, 0, r_data->vid->width, 100, grav_southwest);
clscr_set_canvas_func (timegraph_view, R_TimeGraph);
View_SetVisible (timegraph_view, r_timegraph);
zgraph_view = clscr_view (0, 0, r_data->vid->width, 100, grav_southwest);
clscr_set_canvas_func (zgraph_view, R_ZGraph);
View_SetVisible (zgraph_view, r_zgraph);
name = "gfx/loading.lmp";
pic = r_funcs->Draw_CachePic (name, 1);
loading_view = clscr_view (0, -24, pic->width, pic->height, grav_center);
clscr_set_cachepic (loading_view, name);
name = "gfx/pause.lmp";
pic = r_funcs->Draw_CachePic (name, 1);
pause_view = clscr_view (0, -24, pic->width, pic->height, grav_center);
clscr_set_cachepic (pause_view, name);
}
void
CL_Init_Screen (void)
{
qpic_t *pic;
__auto_type reg = ECS_NewRegistry ();
Canvas_InitSys (&cl_canvas_sys, reg);
if (con_module) {
@ -207,7 +273,7 @@ CL_Init_Screen (void)
cl_xlen = viddef.width;
cl_ylen = viddef.height;
ecs_system_t vsys = {
cl_view_system = (ecs_system_t) {
.reg = reg,
.base = cl_canvas_sys.view_base,
};
@ -222,68 +288,11 @@ CL_Init_Screen (void)
View_SetGravity (cl_screen_view, grav_northwest);
View_SetVisible (cl_screen_view, 1);
pic = r_funcs->Draw_PicFromWad ("ram");
ram_view = View_New (vsys, cl_screen_view);
View_SetPos (ram_view, 32, 0);
View_SetLen (ram_view, pic->width, pic->height);
View_SetGravity (ram_view, grav_northwest);
Ent_SetComponent (ram_view.id, canvas_pic, ram_view.reg, &pic);
View_SetVisible (ram_view, 0);
pic = r_funcs->Draw_PicFromWad ("turtle");
turtle_view = View_New (vsys, cl_screen_view);
View_SetPos (turtle_view, 32, 0);
View_SetLen (turtle_view, pic->width, pic->height);
View_SetGravity (turtle_view, grav_northwest);
Ent_SetComponent (turtle_view.id, canvas_pic, turtle_view.reg, &pic);
View_SetVisible (turtle_view, 0);
Cvar_Register (&scr_showpause_cvar, 0, 0);
Cvar_Register (&scr_showram_cvar, 0, 0);
Cvar_Register (&scr_showturtle_cvar, 0, 0);
pic = r_funcs->Draw_PicFromWad ("net");
net_view = View_New (vsys, cl_screen_view);
View_SetPos (net_view, 64, 0);
View_SetLen (net_view, pic->width, pic->height);
View_SetGravity (net_view, grav_northwest);
Ent_SetComponent (net_view.id, canvas_pic, net_view.reg, &pic);
View_SetVisible (net_view, 0);
timegraph_view = View_New (vsys, cl_screen_view);
View_SetPos (timegraph_view, 0, 0);
View_SetLen (timegraph_view, r_data->vid->width, 100);
View_SetGravity (timegraph_view, grav_southwest);
void *rtg = R_TimeGraph;
Ent_SetComponent (timegraph_view.id, canvas_func, timegraph_view.reg, &rtg);
View_SetVisible (timegraph_view, r_timegraph);
zgraph_view = View_New (vsys, cl_screen_view);
View_SetPos (zgraph_view, 0, 0);
View_SetLen (zgraph_view, r_data->vid->width, 100);
View_SetGravity (zgraph_view, grav_southwest);
void *rzg = R_ZGraph;
Ent_SetComponent (zgraph_view.id, canvas_func, zgraph_view.reg, &rzg);
View_SetVisible (zgraph_view, r_zgraph);
const char *name = "gfx/loading.lmp";
pic = r_funcs->Draw_CachePic (name, 1);
loading_view = View_New (vsys, cl_screen_view);
View_SetPos (loading_view, 0, -24);
View_SetLen (loading_view, pic->width, pic->height);
View_SetGravity (loading_view, grav_center);
Ent_SetComponent (loading_view.id, canvas_cachepic,
loading_view.reg, &name);
View_SetVisible (loading_view, 0);
name = "gfx/pause.lmp";
pic = r_funcs->Draw_CachePic (name, 1);
pause_view = View_New (vsys, cl_screen_view);
View_SetPos (pause_view, 0, -24);
View_SetLen (pause_view, pic->width, pic->height);
View_SetGravity (pause_view, grav_center);
Ent_SetComponent (pause_view.id, canvas_cachepic, pause_view.reg, &name);
View_SetVisible (pause_view, 0);
cl_create_views ();
cvar_t *con_scale = Cvar_FindVar ("con_scale");
Cvar_AddListener (con_scale, cl_scale_listener, 0);