void drawPause(bool ingame) { ALLEGRO_COLOR bg = al_map_rgba(255,255,255,204); float l = easeOut(pauseTempo); //textos if (ingame) { BLENDALPHA(); al_draw_filled_rectangle(px(0),py(0),px(1),py(1),al_map_rgba_f(0,0,0,.375*l)); BLENDDEFAULT(); drawBox(.5,.5,.4,.5*l,COLOR_HGHL,COLOR_SCND); al_draw_text(data.font_Regular37,COLOR_TEXT,px(.5),py(lerp(.5,.26,l)),ALLEGRO_ALIGN_CENTRE,"pause"); al_draw_text(data.font_Regular52,(selection == -1)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.34,l)),ALLEGRO_ALIGN_CENTRE,"continuar"); al_draw_text(data.font_Regular52,(selection == 3)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.66,l)),ALLEGRO_ALIGN_CENTRE,"sair ao menu"); } else { drawBitmapTinted(data.bitmap_parallax1,al_map_rgb_f(1,1,.8),.5-sinf(animTempo)*.03,.5-cosf(animTempo)*.03,game.idealProp*1.1,1.1,0,0,0); l = easeOut((scene.tempo > 0)?(scene.tempo):(1+scene.tempo)); drawBox(.5,.5,.4,.5*l,COLOR_HGHL,COLOR_SCND); al_draw_text(data.font_Regular52,COLOR_TEXT,px(.5),py(lerp(.5,.27,l)),ALLEGRO_ALIGN_CENTRE,"configurações"); al_draw_text(data.font_Regular52,(selection == 3)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.66,l)),ALLEGRO_ALIGN_CENTRE,"voltar"); } BLENDALPHA(); if (selection > (ingame?-1:0)) { drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.5,lerp(.5,.2,l)-fabs(sinf(animTempo*16))*.007,1./18,1./18,4,2,4,0,0,0); } if (selection < 3) { drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.5,lerp(.5,.8,l)+fabs(sinf(animTempo*16))*.007,1./18,1./18,4,2,5,0,0,0); } if (selection < 0 || selection > 1) { drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.725+fabs(sinf(animTempo*16))*.007,.5,1./18,1./18,4,2,0,0,0,0); } else { drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.275-fabs(sinf(animTempo*16))*.007,.5,1./18,1./18,4,2,6,0,0,0); drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.725+fabs(sinf(animTempo*16))*.007,.5,1./18,1./18,4,2,7,0,0,0); } BLENDDEFAULT(); //sliders drawSlider(lerp(.5,.42,l),game.volumeBgm,selection == 0,"volume bgm"); drawSlider(lerp(.5,.5,l),game.volumeSfx,selection == 1,"volume sfx"); //toggle al_draw_text(data.font_Regular52,(selection == 2)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.58,l)),ALLEGRO_ALIGN_CENTRE,game.showPopups?"desligar tutorial":"ligar tutorial"); //tela de confirmação if (confirmTempo > 0) { float m = easeOut(confirmTempo); BLENDALPHA(); al_draw_filled_rectangle(px(0),py(0),px(1),py(1),al_map_rgba_f(0,0,0,.375*m)); BLENDDEFAULT(); drawBox(.5,.5,.5,.2*m,COLOR_HGHL,COLOR_SCND); al_draw_text(data.font_Regular37,COLOR_TEXT,px(.5),py(lerp(.5,.415,m)),ALLEGRO_ALIGN_CENTRE,"tem certeza de que deseja sair?"); al_draw_text(data.font_Regular52,(selection2 == 0)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.46,m)),ALLEGRO_ALIGN_CENTRE,"sim"); al_draw_text(data.font_Regular52,(selection2 == 1)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.52,m)),ALLEGRO_ALIGN_CENTRE,"nem"); } }
void menu_draw() { al_clear_to_color(al_map_rgb(255,255,255)); drawBitmap(data.bitmap_parallax1,.5+sinf(animTempo)*.03,.5+cosf(animTempo)*.03,game.idealProp*1.1,1.1,0,0,0); drawBitmap(data.bitmap_logo,.5,.2,game.idealProp,.27,0,0,0); float l = easeOut((scene.tempo > 0)?(scene.tempo):(1+scene.tempo)); drawBox(.5,.625,.3,.2*l,COLOR_HGHL,COLOR_SCND); al_draw_text(data.font_Regular52,(selection == 0)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.625,.55,l)),ALLEGRO_ALIGN_CENTRE,"jogar"); al_draw_text(data.font_Regular52,(selection == 1)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.625,.6,l)),ALLEGRO_ALIGN_CENTRE,"configurações"); al_draw_text(data.font_Regular52,(selection == 2)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.625,.65,l)),ALLEGRO_ALIGN_CENTRE,"sair"); BLENDALPHA(); al_draw_text(data.font_Regular37,al_map_rgba(255,255,255,110+sinf(animTempo*8)*30),px(.005),py(.95),ALLEGRO_ALIGN_LEFT,"github.com/bencz/BCC_PI2_chernobyl"); if (selection > 0) { drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.5,lerp(.625,.475,l)-fabs(sinf(animTempo*16))*.007,1./18,1./18,4,2,4,0,0,0); } if (selection < 2) { drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.5,lerp(.625,.775,l)+fabs(sinf(animTempo*16))*.007,1./18,1./18,4,2,5,0,0,0); } drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.675+fabs(sinf(animTempo*16))*.007,.625,1./18,1./18,4,2,0,0,0,0); BLENDDEFAULT(); }
void level_draw() { al_clear_to_color(al_map_rgb(255,255,255)); float weight; if (game.height <= 180) { weight = 1; } else { weight = round(game.height/180.0); } //inversa do tamanho do mapa, pra usar como porcentagem double scaleX = 1.0/mapWidth; double scaleY = 1.0/mapHeight; int t; for (int y = 0; y < mapHeight; y++) { for (int x = 0; x < mapWidth; x++) { t = tilemap[y*mapWidth+x]; if (t == 0) { al_draw_filled_rectangle(px(x*scaleX),py(y*scaleY),px((x+1)*scaleX),py((y+1)*scaleY),al_map_rgb(51,51,51)); } else if (t == 1) { al_draw_filled_rectangle(px(x*scaleX),py(y*scaleY),px((x+1)*scaleX),py((y+1)*scaleY),al_map_rgb(204,51,51)); } else if (t == 2) { al_draw_filled_rectangle(px(x*scaleX),py(y*scaleY),px((x+1)*scaleX),py((y+1)*scaleY),al_map_rgb(51,204,51)); } } } //posição do ponto 0 do gráfico double offsetX = scaleX*(baseX+1); double offsetY = scaleY*(baseY+1+lerp(zeroHeight,zeroHeightPrev,easeIn(zeroHeightTempo))); //desenha os eixos BLENDALPHA(); ALLEGRO_COLOR axisColor = al_map_rgba(255,255,255,51); al_draw_line(px(offsetX),py(0),px(offsetX),py(1),axisColor,weight); double gridPos; int gridOffset; if (functionDir > 0) { al_draw_line(px(offsetX),py(offsetY),px(1),py(offsetY),axisColor,weight); gridOffset = 1; while (1) { gridPos = gridOffset*scaleX+offsetX; if (gridPos > 1) break; gridPos = px(gridPos); al_draw_line(gridPos,py(offsetY-scaleY*.125),gridPos,py(offsetY+scaleY*.125),axisColor,weight); gridOffset++; } } else { al_draw_line(px(0),py(offsetY),px(offsetX),py(offsetY),axisColor,weight); gridOffset = floor(-offsetX/scaleX); while (1) { gridPos = gridOffset*scaleX+offsetX; if (gridOffset >= 0 || gridPos > 1) break; gridPos = px(gridPos); al_draw_line(gridPos,py(offsetY-scaleY*.125),gridPos,py(offsetY+scaleY*.125),axisColor,weight); gridOffset++; } } gridOffset = floor(-offsetY/scaleY); while (1) { if (gridOffset == 0) { gridOffset++; continue; } gridPos = gridOffset*scaleY+offsetY; if (gridPos > 1) break; gridPos = py(gridPos); al_draw_line(px(offsetX-scaleX*.125),gridPos,px(offsetX+scaleX*.125),gridPos,axisColor,weight); gridOffset++; } BLENDDEFAULT(); //plota a função if (weightTempo > 0 && cacheCount > 0) { float t = easeIn(plotTempo); float w = easeOut(weightTempo); ALLEGRO_COLOR plotColor = al_map_rgba(255,255,255,w*255); w = ceil(w*weight); double x,xa; BLENDALPHA(); if (functionDir > 0) { for (x = dottedTempo*.25-.125; x < functionEnd; x += .25) { xa = (x < 0)?0:x; al_draw_line( dx(offsetX+xa*scaleX),dy(offsetY-getValueOnCacheLerp(xa,t)*scaleY), dx(offsetX+(x+.125)*scaleX),dy(offsetY-getValueOnCacheLerp(x+.125,t)*scaleY), plotColor,w ); } } else { for (x = -dottedTempo*.25+.125; x > functionStart; x -= .25) { xa = (x > 0)?0:x; al_draw_line( dx(offsetX+xa*scaleX),dy(offsetY-getValueOnCacheLerp(xa,t)*scaleY), dx(offsetX+(x-.125)*scaleX),dy(offsetY-getValueOnCacheLerp(x-.125,t)*scaleY), plotColor,w ); } } BLENDDEFAULT(); } //textbox float textboxHeight = textboxPos?.8:0; BLENDALPHA(); if (input.captureText) { al_draw_filled_rectangle(px(0),py(textboxHeight),px(1),py(.2+textboxHeight),al_map_rgba(255,255,255,204)); } else { al_draw_filled_rectangle(px(0),py(textboxHeight),px(1),py(.2+textboxHeight),al_map_rgba(255,255,255,153)); } BLENDDEFAULT(); int textboxOffsetX = px(.04); int textboxOffsetY = py(.03+textboxHeight); int selOffset; for (int a = 0; 1; a++) { if (input.captureText) { if (input.captureText && a == input.caretPos && input.caretBlink < .5f) { al_draw_line( textboxOffsetX, textboxOffsetY, textboxOffsetX, textboxOffsetY+al_get_font_line_height(data.font_UbuntuB), al_map_rgb(255,255,255),1 ); } if (input.selectionStart != -1 && input.selectionEnd == a) { BLENDALPHA(); al_draw_filled_rectangle( selOffset, textboxOffsetY, textboxOffsetX, textboxOffsetY+al_get_font_line_height(data.font_UbuntuB), al_map_rgba(51,51,51,51) ); BLENDDEFAULT(); } } if (input.text[a] == '\0') break; if (input.selectionStart == a) { selOffset = textboxOffsetX; } textboxChar[0] = input.text[a]; al_draw_text(data.font_UbuntuB,al_map_rgb(51,51,51),textboxOffsetX,textboxOffsetY,ALLEGRO_ALIGN_LEFT,textboxChar); textboxOffsetX += al_get_text_width(data.font_UbuntuB,textboxChar); } if (errorMsgShow) { al_draw_filled_triangle( px(.0135),py(.1797+textboxHeight), px(.0415),py(.1797+textboxHeight), px(.0275),py(.125+textboxHeight), al_map_rgb(255,204,15) ); al_draw_text(data.font_UbuntuR,al_map_rgb(51,51,51),px(.0275),py(.127+textboxHeight),ALLEGRO_ALIGN_CENTRE,"!"); al_draw_text(data.font_UbuntuR,al_map_rgb(51,51,51),px(.05),py(.125+textboxHeight),ALLEGRO_ALIGN_LEFT,MensagemDoErro[errorMsg]); } if (input.captureText) { al_draw_text(data.font_UbuntuB,al_map_rgb(51,51,51),px(.01),textboxOffsetY,ALLEGRO_ALIGN_LEFT,">"); al_draw_text(data.font_UbuntuR,al_map_rgb(51,51,51),px(.99),py(.125+textboxHeight),ALLEGRO_ALIGN_RIGHT,"tab: inverter - enter: fechar"); } else { al_draw_text(data.font_UbuntuB,al_map_rgb(102,102,102),px(.01),textboxOffsetY,ALLEGRO_ALIGN_LEFT,">"); al_draw_text(data.font_UbuntuR,al_map_rgb(51,51,51),px(.99),py(.125+textboxHeight),ALLEGRO_ALIGN_RIGHT,"backspace: voltar - tab: inverter - enter: abrir"); } }