static int roll_enter(struct state *st, struct state *prev) { hud_init(); if (paused) paused = 0; else game_putt(); return 0; }
static int stop_enter(struct state *st, struct state *prev) { if (paused) paused = 0; else hole_stop(); hud_init(); return 0; }
static int stroke_enter(void) { hud_init(); game_clr_mag(); config_set_d(CONFIG_CAMERA, 2); video_set_grab(!paused); if (paused) paused = 0; return 0; }
static int stroke_enter(struct state *st, struct state *prev) { hud_init(); game_clr_mag(); config_set_d(CONFIG_CAMERA, 2); video_set_grab(1); if (paused) paused = 0; return 0; }
static int roll_enter(struct state *st, struct state *prev) { video_hide_cursor(); hud_init(); if (paused) paused = 0; else game_putt(); return 0; }
int cl_init(void) { unsigned int i; gfs = gfs_open("data/game.gfs"); if ( gfs == NULL ) return 0; client_frame = 0; /* Bind keys */ cl_cmd_bind("backquote", "console"); cl_cmd_bind("q", "quit"); cl_cmd_bind("w", "+forwards"); cl_cmd_bind("s", "+backwards"); cl_cmd_bind("a", "+strafe_left"); cl_cmd_bind("d", "+strafe_right"); cl_cmd_bind("space", "+jump"); cl_cmd_bind("c", "+crouch"); //if ( !gl_init(1920, 1080, 24, 1) ) if ( !gl_init(1280, 720, 24, 0) ) return 0; if ( !hud_init() ) return 0; #if 0 for(i = 0; i < sizeof(soldier)/sizeof(*soldier); i++) { soldier[i] = md2_new("md2_mdl/monsters/soldier/tris.md2"); if ( soldier[i] ) { vector_t v; v[X] = 50 + 30 * i; v[Y] = 0; v[Z] = 0; md2_skin(soldier[i], i); md2_animate(soldier[i], 146, 214); md2_spawn(soldier[i], v); } } #endif for(i = 0; i < sizeof(marine)/sizeof(*marine); i++) { marine[i] = md5_new("models/md5/chars/marine.md5mesh"); if ( marine[i] ) { vector_t v; v[Z] = 0; v[Y] = 0; v[Z] = 50 + 50 * i; md5_animate(marine[i], anims[i]); md5_spawn(marine[i], v); } } return 1; }
static int next_enter(struct state *st, struct state *prev) { int id, jd; char str[MAXSTR]; sprintf(str, _("Hole %02d"), curr_hole()); if ((id = gui_vstack(0))) { gui_label(id, str, GUI_MED, 0, 0); gui_space(id); if ((jd = gui_vstack(id))) { gui_label(jd, _("Player"), GUI_SML, 0, 0); switch (curr_player()) { case 1: gui_label(jd, "1", GUI_LRG, gui_red, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER1, 1.f); break; case 2: gui_label(jd, "2", GUI_LRG, gui_grn, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER2, 1.f); break; case 3: gui_label(jd, "3", GUI_LRG, gui_blu, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER3, 1.f); break; case 4: gui_label(jd, "4", GUI_LRG, gui_yel, gui_wht); if (curr_party() > 1) audio_play(AUD_PLAYER4, 1.f); break; } gui_set_rect(jd, GUI_ALL); } gui_layout(id, 0, 0); } hud_init(); game_set_fly(1.f); if (paused) paused = 0; return id; }
static int goal_enter(void) { int id; if ((id = gui_label(0, _("It's In!"), GUI_MED, GUI_ALL, gui_grn, gui_grn))) gui_layout(id, 0, 0); if (paused) paused = 0; else hole_goal(); hud_init(); return id; }
static int goal_enter(struct state *st, struct state *prev) { int id; if ((id = gui_label(0, _("It's In!"), GUI_MED, gui_grn, gui_grn))) gui_layout(id, 0, 0); if (paused) paused = 0; else hole_goal(); hud_init(); return id; }
int main() { BDISP = 0; BDRAW = 0; fill_mem(0x0000); fill_mem(0xffff); BDISP = 0; BDRAW = 1; hud_init(); while(1) { hud_rc_plane_single_frame(); // demo(); } return 0; }
void init() { glClearColor(0.1, 0.1, 0.1, 0); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glfwDisable(GLFW_MOUSE_CURSOR); my_player = player_init(-1); my_world = world_init(); my_hud = hud_init(); my_server = server_init(); server_connect(my_server); }
static int fall_enter(void) { int id; if ((id = gui_label(0, _("1 Stroke Penalty"), GUI_MED, GUI_ALL, gui_blk, gui_red))) gui_layout(id, 0, 0); if (paused) paused = 0; else { hole_fall(); /* game_draw(0);*/ /*TODO: is this call ok? */ /* No, it's not. */ } hud_init(); return id; }
static int pause_enter(void) { int id, jd, td; audio_music_fade_out(0.2f); if ((id = gui_vstack(0))) { td = gui_label(id, _("Paused"), GUI_LRG, GUI_ALL, 0, 0); gui_space(id); if ((jd = gui_harray(id))) { gui_state(jd, _("Quit"), GUI_SML, PAUSE_QUIT, 0); gui_start(jd, _("Continue"), GUI_SML, PAUSE_CONTINUE, 1); } gui_pulse(td, 1.2f); gui_layout(id, 0, 0); } hud_init(); return id; }
result_t eng_init(const struct init_params* params) { result_t r = RET_OK; ASSERT(g_eng == NULL); g_eng = (struct engine*)ALLOC(sizeof(struct engine), 0); if (g_eng == 0) return err_printn(__FILE__, __LINE__, RET_OUTOFMEMORY); memset(g_eng, 0x00, sizeof(struct engine)); eng_zero(); memcpy(&g_eng->params, params, sizeof(struct init_params)); hw_getinfo(&g_eng->hwinfo, HWINFO_ALL); /* console (before anything else) */ if (BIT_CHECK(params->flags, ENG_FLAG_CONSOLE)) { r |= con_init(params->console_lines_max); if (IS_FAIL(r)) return RET_FAIL; log_outputfunc(TRUE, con_log, NULL); } /* show build options */ #if !defined(FULL_VERSION) #error "must define FULL_VERSION macro" #endif time_t raw_tm; time(&raw_tm); log_printf(LOG_TEXT, "init darkhammer engine v%s build[%s, %s, %s, %s], time: %s", FULL_VERSION, #if defined(_DEBUG_) "debug" #else "release" #endif , #if defined(_PROFILE_) "profile" #else "no-profile" #endif , #if defined(_X86_) "x86" #elif defined(_X64_) "x64" #endif , #if defined(_ENABLEASSERT_) "assert" #else "no-assert" #endif , asctime(localtime(&raw_tm))); /* hardware info */ hw_printinfo(&g_eng->hwinfo, HWINFO_ALL); size_t tmp_sz = params->dev.buffsize_tmp; size_t data_sz = data_sz = params->dev.buffsize_data; tmp_sz = tmp_sz != 0 ? ((size_t)tmp_sz*1024) : FRAME_STACK_SIZE; data_sz = data_sz != 0 ? ((size_t)data_sz*1024) : DATA_SIZE; /* allocators */ /* dynamic allocator for data in dev (editor) mode, stack allocator in game (normal) mode */ if (BIT_CHECK(params->flags, ENG_FLAG_OPTIMIZEMEMORY)) { /* lsr (load-stay-resident) allocator for essential engine data */ r |= mem_stack_create(mem_heap(), &g_eng->lsr_stack, LSR_SIZE, MID_DATA); mem_stack_bindalloc(&g_eng->lsr_stack, &g_eng->lsr_alloc); r |= mem_freelist_create(mem_heap(), &g_eng->data_freelist, data_sz, MID_DATA); mem_freelist_bindalloc(&g_eng->data_freelist, &g_eng->data_alloc); } else { mem_heap_bindalloc(&g_eng->data_alloc); mem_heap_bindalloc(&g_eng->lsr_alloc); g_eng->data_alloc.alloc_fn = eng_allocfn_data; g_eng->data_alloc.alignedalloc_fn = eng_alignedallocfn_data; g_eng->lsr_alloc.alloc_fn = eng_allocfn_lsr; g_eng->lsr_alloc.alignedalloc_fn = eng_alignedallocfn_lsr; r = RET_OK; } if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: out of memory for allocators"); return RET_FAIL; } /* timer manager and frame timer */ g_eng->timer = timer_createinstance(TRUE); /* add engine's own data path to file-mgr */ if (params->data_path != NULL) { char data_path_ext[DH_PATH_MAX]; path_getfileext(data_path_ext, params->data_path); if (str_isequal_nocase(data_path_ext, "pak")) { if (IS_FAIL(pak_open(&g_eng->data_pak, mem_heap(), params->data_path, 0))) { err_print(__FILE__, __LINE__, "engine init: could not open data pak"); return RET_FAIL; } } else { if (!util_pathisdir(params->data_path)) { err_print(__FILE__, __LINE__, "engine init: data path is not valid"); return RET_FAIL; } fio_addvdir(params->data_path, FALSE); } /* assume that share directory is same as data dir */ path_getdir(g_eng->share_dir, params->data_path); } else { char data_path[DH_PATH_MAX]; char share_dir[DH_PATH_MAX]; #ifndef SHARE_DIR char exe_dir[DH_PATH_MAX]; path_join(share_dir, util_getexedir(exe_dir), "..", NULL); path_norm(share_dir, share_dir); #else path_norm(share_dir, SHARE_DIR); #endif path_join(data_path, share_dir, "data", NULL); if (!util_pathisdir(data_path)) { err_print(__FILE__, __LINE__, "engine init: data path is not valid"); return RET_FAIL; } fio_addvdir(data_path, FALSE); /* set default (config.h configured on build) data dir */ strcpy(g_eng->share_dir, share_dir); } uint rs_flags = 0; /* activate hot loading in DEV mode */ rs_flags |= BIT_CHECK(params->flags, ENG_FLAG_DEV) ? RS_FLAG_HOTLOADING : 0; if (!BIT_CHECK(params->flags, ENG_FLAG_DISABLEBGLOAD)) { rs_flags |= RS_FLAG_PREPARE_BGLOAD; } /* task manager */ uint thread_cnt = maxui(g_eng->hwinfo.cpu_core_cnt - 1, 1); r = tsk_initmgr(thread_cnt, 0, tmp_sz, 0); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init task-mgr"); return RET_FAIL; } struct allocator* tmp_alloc = tsk_get_tmpalloc(0); A_SAVE(tmp_alloc); /* resource manager (with only 1 thread for multi-thread loading) */ r = rs_initmgr(rs_flags, 1); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init res-mgr"); return RET_FAIL; } rs_set_dataalloc(&g_eng->lsr_alloc); /* graphics renderer */ r = gfx_init(¶ms->gfx); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init gfx"); return RET_FAIL; } /* debug HUD */ r = hud_init(BIT_CHECK(params->flags, ENG_FLAG_CONSOLE)); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init debug-hud"); return RET_FAIL; } /* Physics */ if (!BIT_CHECK(params->flags, ENG_FLAG_DISABLEPHX)) { r = phx_init(params); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init physics"); return RET_FAIL; } } /* component manager */ r = cmp_initmgr(); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init cmp-mgr"); return RET_FAIL; } cmp_set_globalalloc(&g_eng->data_alloc, tsk_get_tmpalloc(0)); /* world manager */ r = wld_initmgr(); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init world-mgr"); return RET_FAIL; } /* scene manager */ r = scn_initmgr(); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init scene-mgr"); return RET_FAIL; } /* init lua */ r = sct_init(¶ms->sct, BIT_CHECK(params->flags, ENG_FLAG_DEV) ? TRUE : FALSE); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init script engine"); return RET_FAIL; } /* web-server */ #if defined(_PROFILE_) r = prf_initmgr(); if (IS_FAIL(r)) { log_print(LOG_WARNING, "profiler manager init failed: service will not be available"); prf_releasemgr(); } #endif /* lod-scheme */ r = lod_initmgr(); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: could not init lod-scheme"); return RET_FAIL; } /* init basic resources */ r = rs_init_resources(); if (IS_FAIL(r)) { err_print(__FILE__, __LINE__, "engine init failed: coult not init res-mgr resources"); return RET_FAIL; } /* switch back to normal data allocator */ rs_set_dataalloc(&g_eng->data_alloc); /* enable background-loading if res-mgr is prepared for (see above rs_initmgr) */ if (gfx_check_feature(GFX_FEATURE_THREADED_CREATES)) rs_add_flags(RS_FLAG_BGLOADING); log_print(LOG_TEXT, "init ok: ready."); /* init world vars */ eng_world_regvars(); /* engine specific console commnads */ con_register_cmd("showfps", eng_console_showfps, NULL, "showfps [1*/0]"); con_register_cmd("showft", eng_console_showft, NULL, "showft [1*/0]"); con_register_cmd("showgraph", eng_console_showgraph, NULL, "showgraph [ft][fps][drawcalls]"); con_register_cmd("lockfps", eng_console_lockfps, NULL, "lockfps [fps]"); /* execute console commands - should be the final stage if initialization */ if (BIT_CHECK(params->flags, ENG_FLAG_CONSOLE)) { for (uint i = 0; i < params->console_cmds_cnt; i++) { con_exec(params->console_cmds + i*128); } } A_LOAD(tmp_alloc); return RET_OK; }