diff --git a/CMakeLists.txt b/CMakeLists.txt index f8c7b19..91a77e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,9 +26,10 @@ set(ASSETS_fx assets-fx/player/skin1/player3.png assets-fx/tools/pickaxe.png assets-fx/tools/selectcross.png + assets-fx/ui_icons/invnormal.png + assets-fx/ui_icons/invselected.png # ... ) - fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) @@ -38,4 +39,4 @@ target_link_libraries(myaddin Gint::Gint) if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G) generate_g1a(TARGET myaddin OUTPUT "Builder.g1a" NAME "Builder" ICON assets-fx/icon.png) -endif() +endif() \ No newline at end of file diff --git a/README.md b/README.md index 3907b7b..b077a97 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ # Builder -A little game like Minecraft or Terraria. \ No newline at end of file +A little game like Minecraft or Terraria. + +# Build an install + +Install gint if you have not already installed it. + +```$ fxsdk build-fx +$ bash clear.sh``` + +Copy `Builder.g1a` that is in `./latest-build/` to the main folder of your calculator. \ No newline at end of file diff --git a/assets-fx/ui_icons/fxconv-metadata.txt b/assets-fx/ui_icons/fxconv-metadata.txt new file mode 100644 index 0000000..56c5a25 --- /dev/null +++ b/assets-fx/ui_icons/fxconv-metadata.txt @@ -0,0 +1,6 @@ +invnormal.png: + type: bopti-image + name: invnormal +invselected.png: + type: bopti-image + name: invselected diff --git a/assets-fx/ui_icons/invnormal.png b/assets-fx/ui_icons/invnormal.png new file mode 100644 index 0000000..5922bbe Binary files /dev/null and b/assets-fx/ui_icons/invnormal.png differ diff --git a/assets-fx/ui_icons/invselected.png b/assets-fx/ui_icons/invselected.png new file mode 100644 index 0000000..b48d876 Binary files /dev/null and b/assets-fx/ui_icons/invselected.png differ diff --git a/clear.sh b/clear.sh new file mode 100644 index 0000000..8a54006 --- /dev/null +++ b/clear.sh @@ -0,0 +1,3 @@ +rm ./build-fx ./latest-build --recursive --force +mkdir latest-build +mv Builder.g1a latest-build/Builder.g1a \ No newline at end of file diff --git a/latest-build/Builder.g1a b/latest-build/Builder.g1a new file mode 100644 index 0000000..d4f4d52 Binary files /dev/null and b/latest-build/Builder.g1a differ diff --git a/src/main.c b/src/main.c index 9fe3c43..effcb50 100644 --- a/src/main.c +++ b/src/main.c @@ -22,6 +22,8 @@ extern bopti_image_t skin1_player_left2; extern bopti_image_t skin1_player_right1; extern bopti_image_t skin1_player_right2; extern bopti_image_t select_tool; +extern bopti_image_t invnormal; +extern bopti_image_t invselected; # include "player.h" @@ -140,6 +142,51 @@ int collisiononmap(int x, int y, unsigned short int * terrain, int testx, int te return 0; } Player player; +void drawinventory(){ + int i; + for(i=0;i!=5;i++){ + if(i == player.invselect){ + dimage(26+i*15, 49, &invselected); + }else{ + dimage(26+i*15, 49, &invnormal); + } + switch(player.inventoryitems[i]){ + case 1: + dimage(26+i*15+3, 52, &soil_tile); break; + case 2: + dimage(26+i*15+3, 52, &stone_tile); break; + case 3: + dimage(26+i*15+3, 52, &coal_tile); break; + case 4: + dimage(26+i*15+3, 52, &steel_tile); break; + case 5: + dimage(26+i*15+3, 52, &wood_tile); break; + } + } +} +void drawdetailinv(){ + int i; + for(i=0;i!=INVENTORY_SIZE;i++){ + pos = i*8; + switch(player.inventoryitems[i]){ + case 1: + dimage(5, pos, &soil_tile); break; + case 2: + dimage(5, pos, &stone_tile); break; + case 3: + dimage(5, pos, &coal_tile); break; + case 4: + dimage(5, pos, &steel_tile); break; + case 5: + dimage(5, pos, &wood_tile); break; + } + itoa(player.inventorynum[i], tmp_char); + dtext(20, pos, C_BLACK, tmp_char); + if(i == player.invselect){ + dtext(60, pos, C_BLACK, SELECTED); + } + } +} int main(void) { dclear(C_WHITE); dimage(16, TITLE_IMAGE_MARGIN, &title_img); @@ -309,6 +356,10 @@ int main(void) { }else{ player.invselect = 0; } + clearevents(); + while(keydown(KEY_0)){ + clearevents(); + } } clearevents(); if(keydown(KEY_MENU)){ @@ -317,35 +368,36 @@ int main(void) { // dtext(1, 1, C_BLACK, "test"); mappartdisplaying(player.x, player.y, terrain, player.orient+player.animation); dimage(player.selx + 56, player.sely + 20, &select_tool); + drawinventory(); dupdate(); sleep_ms(20); }else if(game == 4){ dclear(C_WHITE); - for(i=0;i!=INVENTORY_SIZE;i++){ - pos = i*8; - switch(player.inventoryitems[i]){ - case 1: - dimage(5, pos, &soil_tile); break; - case 2: - dimage(5, pos, &stone_tile); break; - case 3: - dimage(5, pos, &coal_tile); break; - case 4: - dimage(5, pos, &steel_tile); break; - case 5: - dimage(5, pos, &wood_tile); break; - } - itoa(player.inventorynum[i], tmp_char); - dtext(20, pos, C_BLACK, tmp_char); - if(i == player.invselect){ - dtext(60, pos, C_BLACK, SELECTED); - } - } + drawdetailinv(); + dupdate(); clearevents(); if(keydown(KEY_EXE)){ game = 3; + clearevents(); + while(keydown(KEY_EXE)){ + clearevents(); + } + } + clearevents(); + if (keydown(KEY_0)){ + if(player.invselect