示例#1
0
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;
}
示例#2
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);
	}
}