void StartButtonDraw(int force, XEvent *evp) { int tempsum, j, i = 0; StartAndLaunchButtonItem *tempPtr = First_Start_Button; StartAndLaunchButtonItem *tempPtr2 = First_Start_Button; if (!First_Start_Button) { return; } while(tempPtr != NULL) { if(tempPtr->buttonItem->needsupdate || force) { tempsum = 0; j=0; tempPtr2 = First_Start_Button; while((tempPtr2 != NULL) && (j<i)) { tempsum+=tempPtr2->width; tempPtr2 = tempPtr2->tail; j++; } if (!(tempPtr->isStartButton)) ButtonDraw( tempPtr->buttonItem, tempsum+StartButtonRightMargin, 0, tempPtr->width, First_Start_Button->height, evp); else ButtonDraw( tempPtr->buttonItem, tempsum, 0, tempPtr->width, First_Start_Button->height, evp); } tempPtr = tempPtr->tail; i++; } }
void LabelDraw (Control * label, SDL_Surface * screen) { //just call button draw ButtonDraw(label, screen); }
void StartButtonDraw(int force) { if (StartButton->needsupdate || force) ButtonDraw(StartButton, 0, 0, StartButtonWidth, StartButtonHeight); }
void CreditsDraw(SDL_Surface* screen) { ImageDraw(screen, &c_background); TextDraw(&t, screen, "Programmed by: Nenad Palinkasevic... level over 9000."); ButtonDraw(&back, screen); }
void Draw2D() { DrawLetterH(); ButtonDraw(&MyButton); }
// draws everything (output) void cSteam::draw() { if (game.state == GAME_MENU) { // Menu Menu window is always drawn... WindowDraw(bmp_screen, 16,360,120,100, "Main Menu"); // Main Menu / main if (iMainState == STATE_MAIN_MENU) { // Draw menu items and react upon them DrawMenuItems(36, 390, 0, true); } if (iMainState == STATE_MAIN_OPTIONS) { // Draw main options buttons, but do not use them DrawMenuItems(36, 390, 0, false); // draw options window WindowDraw(bmp_screen, 150, 60, 400,400, "Options"); DrawMenuItems(170, 90, 1, true); // devide bar (vertically) line(bmp_screen, 240, 90, 240, 420, makecol(40,46,34)); line(bmp_screen, 241, 90, 241, 420, makecol(136,145,128)); } // Start a new game if (iMainState == STATE_MAIN_NEWGAME) { iMainState = STATE_NONE; iSubState = STATE_NONE; game.state = GAME_GAME; } // Start editor if (iMainState == STATE_MAIN_EDITOR) { iMainState = STATE_EDITOR; iSubState = STATE_NONE; game.state = GAME_EDITOR; } // get out the game here if (iMainState == STATE_MAIN_EXIT) game.playing = false; } // In the game if (game.state == GAME_GAME) { if (iMainState == STATE_INGAME_OPTIONS) { WindowDraw(bmp_screen, 160,120,320,240, "In-game options"); DrawMenuItems(180, 150, 2, true); } if (iMainState == STATE_MAIN_MENU) game.state = GAME_MENU; } // In the editor if (game.state == GAME_EDITOR) { if (iMainState == STATE_MAIN_MENU) game.state = GAME_MENU; // Editor with options WindowDraw(bmp_screen, 0, 300, 160, 180, "Editor"); // Minimap window WindowDraw(bmp_screen, 0, 0, 160, 140, "Minimap"); if (iMainState == STATE_EDITOR) { DrawMenuItems(20, 330, 3, true); // depending on sub-state: if (iSubState == STATE_EDITOR_SUB_TEXTURES) { WindowDraw(bmp_screen, 0, 141, 160, 158, "Textures"); bool bBlock; // draw a window of the current texture + 2 buttons (next/prev) bool bNext = ButtonDraw(bmp_screen, 126, 274, 19, 16, ">>"); bool bPrev = ButtonDraw(bmp_screen, 16, 274, 19, 16, "<<"); bool bUp = ButtonDraw(bmp_screen, 140, 187, 12, 20, "+"); bool bDown = ButtonDraw(bmp_screen, 140, 227, 12, 40, "-"); // Blocked or not? if (game.bBlockTextures) bBlock = ButtonDraw(bmp_screen, 140, 167, 12, 20, "U"); else bBlock = ButtonDraw(bmp_screen, 140, 167, 12, 20, "B"); if (bBlock) { if (game.bBlockTextures) game.bBlockTextures=false; else game.bBlockTextures=true; } // ---- // BUTTON: Switch from GROUP to SINGLE and back bool bGroupPressed = false; if (game.bShowGroupTextures == false) bGroupPressed = ButtonDraw(bmp_screen, 46, 274, 68, 16, "< GROUP >"); else bGroupPressed = ButtonDraw(bmp_screen, 46, 274, 68, 16, "< SINGLE >"); if (bGroupPressed) { if (game.bShowGroupTextures) game.bShowGroupTextures = false; else game.bShowGroupTextures = true; } // ---- // next if (bNext) { if (game.bShowGroupTextures) game.iGroupNumber++; else game.iSingleNumber++; } // go back if (bPrev) { if (game.bShowGroupTextures) game.iGroupNumber--; else game.iSingleNumber--; if (game.iGroupNumber < 0) game.iGroupNumber = 0; if (game.iSingleNumber < 0) game.iSingleNumber = 0; } // Upper and lower the brightness if (bUp) { game.iBrightness+=10; if (game.iBrightness > 255) game.iBrightness = 255; } if (bDown) { game.iBrightness -=10; if (game.iBrightness < 10) game.iBrightness = 10; } // draw something black in the window rectfill(bmp_screen, 10, 165, 130, 260, makecol(0,0,0)); set_clip(bmp_screen, 10, 165, 130, 260); set_trans_blender(255, 255, 255, game.iBrightness); // clip the entire texture group / or single texture! if (game.bShowGroupTextures) { // draw the entire thingy int dx=0; int dy=0; for (int i=0; i < 64; i++) { if (game.GROUP_Textures[game.iGroupNumber].iTextures[i] > -1) { // now create tile at the correct spot at the map: draw_trans_sprite(bmp_screen, game.DATA_Textures[game.GROUP_Textures[game.iGroupNumber].iTextures[i]].bmp, 11+(dx*32), 166+(dy*32)); dx++; if (dx >= game.GROUP_Textures[game.iGroupNumber].iWidth) { dx=0; dy++; } } } } else { // its a 32x32 square if (game.DATA_Textures[game.iSingleNumber].bmp != NULL) draw_trans_sprite(bmp_screen, game.DATA_Textures[game.iSingleNumber].bmp, 60, 180); } set_clip(bmp_screen, 0, 0, game.screen_x, game.screen_y); // When the mouse is on the editing field, and a mouse button is pressed // add the tiles (group or single) if (mouse_x > 160) { if (game.MOUSE_PRESSED_LEFT()) { // calculate x and y int x=(mouse_x-160)/32; int y=mouse_y/32; x+=(map.lScrollX/32); y+=(map.lScrollY/32); if (game.bShowGroupTextures) map.create_tile_group(x,y,game.iGroupNumber, game.iBrightness, game.bBlockTextures); else map.create_tile(x,y,game.iSingleNumber, game.iBrightness, game.bBlockTextures); } else { int ddx, ddy; ddx=mouse_x/32; ddy=mouse_y/32; ddx*=32; ddy*=32; // Increase (because editor = 160 (=5x32) + 5 pixels = 165) ddx+=5; // Make sure scrolling is taken into account to! ddx-= (map.lScrollX)-((int)(map.lScrollX/32)*32); ddy-= (map.lScrollY)-((int)(map.lScrollY/32)*32); /* ddx+= (map.lScrollX-(map.lScrollX/32)); ddy+= (map.lScrollY-(map.lScrollY/32));*/ if (game.bShowGroupTextures) { int dx=0; int dy=0; if (game.GROUP_Textures[game.iGroupNumber].iWidth > -1) { rectfill(bmp_screen, ddx+2, ddy+2, ddx+2+game.GROUP_Textures[game.iGroupNumber].iWidth*32, ddy+2+game.GROUP_Textures[game.iGroupNumber].iHeight*32, makecol(0,0,0)); } for (int i=0; i < 64; i++) { if (game.GROUP_Textures[game.iGroupNumber].iTextures[i] > -1) { // now create tile at the correct spot at the map: draw_trans_sprite(bmp_screen, game.DATA_Textures[game.GROUP_Textures[game.iGroupNumber].iTextures[i]].bmp, ddx+(dx*32), ddy+(dy*32)); dx++; if (dx >= game.GROUP_Textures[game.iGroupNumber].iWidth) { dx=0; dy++; } } } } else { if (game.DATA_Textures[game.iSingleNumber].bmp != NULL) { rectfill(bmp_screen, ddx+2, ddy+2, ddx+34, ddy+34, makecol(0,0,0)); draw_trans_sprite(bmp_screen, game.DATA_Textures[game.iSingleNumber].bmp, ddx, ddy); } } } } } // substate if (iSubState == STATE_EDITOR_SUB_LIGHT) { WindowDraw(bmp_screen, 0, 141, 160, 158, "Light/Shadows"); // draw a window of the current texture + 2 buttons (next/prev) bool bNext = ButtonDraw(bmp_screen, 126, 274, 19, 16, ">>"); bool bPrev = ButtonDraw(bmp_screen, 16, 274, 19, 16, "<<"); bool bUp = ButtonDraw(bmp_screen, 140, 167, 12, 40, "+"); bool bDown = ButtonDraw(bmp_screen, 140, 227, 12, 40, "-"); // next if (bNext) if (shadows[game.iShadowNumber].type != DAT_END) game.iShadowNumber++; // go back if (bPrev || shadows[game.iShadowNumber].type != DAT_BITMAP) game.iShadowNumber--; if (game.iShadowNumber < 0) game.iShadowNumber = 0; // Upper and lower the brightness if (bUp) { game.iBrightness+=10; if (game.iBrightness > 255) game.iBrightness = 255; } if (bDown) { game.iBrightness -=10; if (game.iBrightness < 10) game.iBrightness = 10; } // draw something black in the window rectfill(bmp_screen, 10, 165, 130, 260, makecol(192,192,192)); set_clip(bmp_screen, 10, 165, 130, 260); // fill in set_trans_blender(255, 255, 255, game.iBrightness); draw_trans_sprite(bmp_screen, (BITMAP *)shadows[game.iShadowNumber].dat, 60, 180); // set clip back set_clip(bmp_screen, 0, 0 , game.screen_x, game.screen_y); if (mouse_x > 160) { if (game.MOUSE_PRESSED_LEFT()) { // calculate x and y int x=(mouse_x-160)/32; int y=mouse_y/32; x+=(map.lScrollX/32); y+=(map.lScrollY/32); map.shadow_map[x][y] = game.iShadowNumber; } else { int ddx, ddy; ddx=mouse_x/32; ddy=mouse_y/32; ddx*=32; ddy*=32; // Increase (because editor = 160 (=5x32) + 5 pixels = 165) ddx+=5; // Make sure scrolling is taken into account to! ddx-= (map.lScrollX)-((int)(map.lScrollX/32)*32); ddy-= (map.lScrollY)-((int)(map.lScrollY/32)*32); rectfill(bmp_screen, ddx+2, ddy+2, ddx+34, ddy+34, makecol(0,0,0)); draw_trans_sprite(bmp_screen, (BITMAP *)shadows[game.iShadowNumber].dat, ddx, ddy); } } } } } }
void MainMenu(){ Button configuration={5,220," Configure "}; Button chart={5,270," Chats "}; Label temperatureLabel={10,10,"Temperature[C]:"}; Label humidityLabel={10,50,"Humidity[%]:"}; Label pressureLabel={10,90,"Pressure[hPa]:"}; Label externalTemperatureLabel={10,130,"Ext Temperature[C]:"}; float data[]={1,10,15,1,4,3,4,5}; ButtonDraw(&configuration); ButtonDraw(&chart); LabelDraw(&temperatureLabel); LabelDraw(&humidityLabel); LabelDraw(&pressureLabel); LabelDraw(&externalTemperatureLabel); IOE_TP_Config(); TP_STATE state; while(1){ state=*IOE_TP_GetState(); if (state.TouchDetected == 128 ) { int s=state.TouchDetected; if(ButtonCheckIfPressed(state.X,state.Y,&chart)==CLICKED){ state.TouchDetected=0; results.changed=1; ChartsMenu(); results.changed=1; } state.TouchDetected=0; } if(results.changed){ LCD_SetColors(0x0000,0xffff); LCD_DrawFullRect(0,0,240,320); ButtonDraw(&configuration); ButtonDraw(&chart); if(results.temperatureAndHumidity.ERROR_CODE==0){ LabelDraw(&temperatureLabel); LabelDraw(&humidityLabel); DrawFloat(150,30,(float)results.temperatureAndHumidity.temperature,2); DrawFloat(150,70,(float)results.temperatureAndHumidity.humidity,2); } else{ Label tmp=temperatureLabel; tmp.string="DHT_11 Error"; LabelDraw(&tmp); } if(results.externalTemperature.ERROR_CODE==0){ LabelDraw(&externalTemperatureLabel); DrawFloat(150,150,(float)results.externalTemperature.temperature,2); } else{ Label tmp=externalTemperatureLabel; tmp.string="DS18B20 Error"; LabelDraw(&tmp); } if(results.pressure.ERROR_CODE==0){ LabelDraw(&pressureLabel); DrawFloat(150,110,(float)results.pressure.pressure,2); } else{ Label tmp=pressureLabel; tmp.string="LPS331 Error"; LabelDraw(&tmp); } results.changed=0; } delayMSC(100); } }