int main() { signal (SIGALRM, signalhandler); signal (SIGUSR1, reset); nval.it_interval.tv_sec = 1; nval.it_interval.tv_usec = 0; nval.it_value.tv_sec = 1; nval.it_value.tv_usec = 0; sc_regInit(); termInit(); ax = 0x0; ip = 0x0; enum Keys key = K_UNKNOWN; displayBorders(); displayUI(); f_key = 0; f_ign = 0; while (key != K_Q) { readKey (&key); if (key == K_T) { sc_regSet(IR, 0); alarm(0); f_key = 0; cu(); } if (!f_key) { if (key == K_R ) { sc_regSet(IR, 1); sc_regSet(IF, 0); } sc_regGet(IR, &f_key); if (f_key) { timerStart(); } if (key == K_F5 ) user_input_ax(); if (key == K_F6 ) user_input_ip(); if (key == K_RIGHT) if (mem_ptr < 99) ++mem_ptr; if (key == K_LEFT ) if (mem_ptr > 0) --mem_ptr; if (key == K_UP ) if (mem_ptr - 10 >= 0) mem_ptr -= 10; if (key == K_DOWN ) if (mem_ptr + 10 < 100) mem_ptr += 10; if (key == K_L ) sc_memoryLoad("memory.o"); if (key == K_S ) sc_memorySave("memory.o"); if (key == K_E ) user_input_mem(); if (key == K_I) { displayBorders(); displayUI(); sc_memoryInit(); sc_regInit(); } displayUI (); } } return 0; }
void HUD_demo::draw(Renderer* renderer) { //HUD_demo guaranteed to have a SimpleActor base, not just Actor. SimpleActor* a = (SimpleActor*)getActor().get(); assert(a); float port_width = renderer->getPortFullWidth(); float port_height = renderer->getPortFullHeight(); //HUD top: renderer->addPainter(Painter::makeRectangle(0, 0, port_width, TOP_BAR_HEIGHT,HUD_COLOR), GUI_DEPTH); //HP bar: int hp_bar_x = port_width - HP_BAR_BORDER - HP_BAR_WIDTH; int hp_bar_y = HP_BAR_BORDER; int hp_bar_height = TOP_BAR_HEIGHT - 2*HP_BAR_BORDER; Painter painter_hp_border; painter_hp_border = Painter::makeRectangle(hp_bar_x, hp_bar_y, HP_BAR_WIDTH, hp_bar_height, C_HP_BAR_BORDER, false); Painter painter_hp_background; painter_hp_background = Painter::makeRectangle(hp_bar_x, hp_bar_y, HP_BAR_WIDTH, hp_bar_height, C_HP_BAR_BACKGROUND, true); Painter painter_hp_fill; painter_hp_fill = Painter::makeRectangle(hp_bar_x, hp_bar_y, HP_BAR_WIDTH, hp_bar_height, C_HP_BAR_BORDER); float hp_prop = std::max((float)0.0,std::min(a->getHP()/a->getMaxHP(),(float)1.0)); float hp_prop_mod = std::max(0.0,std::min(hp_prop*1.4-0.2,1.0)); painter_hp_fill.setWidth(hp_prop*HP_BAR_WIDTH); if (hp_prop_mod>0.5) painter_hp_fill.setColor(blend(C_HP_BAR_WARNING,C_HP_BAR_FULL,2*hp_prop_mod-1)); else if (hp_prop_mod>0.3) painter_hp_fill.setColor(C_HP_BAR_WARNING); else painter_hp_fill.setColor(blend(C_HP_BAR_CRITICAL,C_HP_BAR_WARNING,hp_prop_mod/0.3)); renderer->addPainter(painter_hp_border,GUI_DEPTH-3); renderer->addPainter(painter_hp_fill,GUI_DEPTH-2); renderer->addPainter(painter_hp_background,GUI_DEPTH-1); //HUD bottom: renderer->addPainter(Painter::makeRectangle(0, port_height - BOT_BAR_HEIGHT, port_width,BOT_BAR_HEIGHT, HUD_COLOR),GUI_DEPTH); if (!text_rasters.test) { auto f = renderer->rh->man_fnt->getFont(FontManager::k_DIALOGUE,96); text_rasters.test = renderer->glib->makeRasterFromText("Test", f.get(), TEXT_COLOR, true); } if (text_rasters.test) renderer->addPainter(Painter::makeRaster(text_rasters.test,16, port_height - BOT_BAR_HEIGHT + 4), GUI_DEPTH - 1); //misc. ui: if (ui_state.ui_active) { displayUI(renderer); } }