20220723 - Correction des bugs dans la destruction des blocs, on peut maintenant bouger les blocs dans l'inventaire.

This commit is contained in:
mibi88 2022-07-23 14:50:50 +02:00
parent 6b51915814
commit 283b3e6248
9 changed files with 104 additions and 2 deletions

View File

@ -54,6 +54,9 @@ set(ASSETS_fx
assets-fx/tools/selectcross.png
assets-fx/ui_icons/invnormal.png
assets-fx/ui_icons/invselected.png
assets-fx/ui_icons/craftselect.png
assets-fx/ui_icons/arrow1.png
assets-fx/ui_icons/arrow2.png
assets-fx/tiles/overlays/block_break1.png
assets-fx/tiles/overlays/block_break2.png
assets-fx/tiles/overlays/block_break3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

View File

@ -4,3 +4,12 @@ invnormal.png:
invselected.png:
type: bopti-image
name: invselected
craftselect.png:
type: bopti-image
name: craftselection
arrow1.png:
type: bopti-image
name: arrow_1
arrow2.png:
type: bopti-image
name: arrow_2

Binary file not shown.

View File

@ -218,6 +218,9 @@ void drawdetailinv(){
if(i == player.invselect){
dtext(60, pos, C_BLACK, SELECTED);
}
if(i == player.invmoving){
dtext(66, pos, C_BLACK, MOVING);
}
}
}
int main(void) {
@ -294,11 +297,15 @@ int main(void) {
player.destroytime = 3;
player.select_tx = 0;
player.select_ty = 0;
player.invselect = 0;
player.invmoving = 0;
for(i=0;i!=INVENTORY_SIZE;i++){
player.inventoryitems[i] = 0;
player.inventorynum[i] = 0;
}
}else if(game == 3){
player.select_tx = ((player.x+player.selx)>>3);
player.select_ty = ((player.y+player.sely)>>3);
clearevents();
if(keydown(KEY_RIGHT) && (collisiononmap(player.x, player.y, terrain, 67, 35) == 0 && collisiononmap(player.x, player.y, terrain, 67, 25) == 0)){
player.x++;
@ -368,6 +375,11 @@ int main(void) {
}else if (keydown(KEY_6) && player.selx<16){
player.selx++;
}
if(((player.x+player.selx)>>3)!=player.select_tx||((player.y+player.sely)>>3)!=player.select_ty){
player.overlayframe = 0;
player.overlaytimer = 0;
player.wasdestroyingbefore = 0;
}
pos = ((player.y+player.sely)>>3)*WORLD_WIDTH+((player.x+player.selx)>>3);
if(pos<=WORLD_WIDTH*WORLD_HEIGHT && pos>=0){
clearevents();
@ -404,8 +416,6 @@ int main(void) {
player.wasdestroyingbefore = 0;
}
}
player.select_tx = ((player.x+player.selx)>>3);
player.select_ty = ((player.y+player.sely)>>3);
clearevents();
if (keydown(KEY_0)){
if(player.invselect<INVENTORY_SIZE-1){
@ -444,6 +454,84 @@ int main(void) {
while(keydown(KEY_EXE)){
clearevents();
}
}else if(keydown(KEY_1)){
game = 5;
clearevents();
while(keydown(KEY_1)){
clearevents();
}
}
clearevents();
if(keydown(KEY_SHIFT)){
player.invmoving = player.invselect;
clearevents();
while(keydown(KEY_SHIFT)){
clearevents();
}
}
clearevents();
if(keydown(KEY_ALPHA)){
if(player.inventorynum[player.invselect] != 64 && (player.inventoryitems[player.invselect] == player.inventoryitems[player.invmoving] || player.inventoryitems[player.invselect] == 0)){
if(player.inventoryitems[player.invselect] == 0){
player.inventoryitems[player.invselect] = player.inventoryitems[player.invmoving];
}
while(player.inventorynum[player.invselect] != 64 && player.inventorynum[player.invmoving] != 0){
player.inventorynum[player.invselect]++;
player.inventorynum[player.invmoving]--;
}
if(player.inventorynum[player.invmoving] == 0){
player.inventoryitems[player.invmoving] = 0;
}
}
clearevents();
while(keydown(KEY_ALPHA)){
clearevents();
}
}
clearevents();
if(keydown(KEY_X2)){
if(player.inventorynum[player.invselect] != 64 && (player.inventoryitems[player.invselect] == player.inventoryitems[player.invmoving] || player.inventoryitems[player.invselect] == 0)){
if(player.inventoryitems[player.invselect] == 0){
player.inventoryitems[player.invselect] = player.inventoryitems[player.invmoving];
}
if(player.inventorynum[player.invselect] != 64 && player.inventorynum[player.invmoving] != 0){
player.inventorynum[player.invselect]++;
player.inventorynum[player.invmoving]--;
}
if(player.inventorynum[player.invmoving] == 0){
player.inventoryitems[player.invmoving] = 0;
}
}
clearevents();
while(keydown(KEY_X2)){
clearevents();
}
}
clearevents();
if (keydown(KEY_0)){
if(player.invselect<INVENTORY_SIZE-1){
player.invselect++;
}else{
player.invselect = 0;
}
dclear(C_WHITE);
drawdetailinv();
dupdate();
clearevents();
while(keydown(KEY_0)){
clearevents();
}
}
}else if(game == 5){
dclear(C_WHITE);
dupdate();
clearevents();
if(keydown(KEY_EXE)){
game = 4;
clearevents();
while(keydown(KEY_EXE)){
clearevents();
}
}
clearevents();
if (keydown(KEY_0)){

View File

@ -2,4 +2,5 @@
# define WORLDSEL_EMPTY "--- VIDE ---" // Empty slot in the game selection menu.
# define WORLDGEN_INFO "Generation ..." // Text when waiting for world generation.
# define SELECTED "<" // Selected block info.
# define MOVING "M" // Moving block info.
# define INV_INFO "INVENTAIRE & CRAFTING"

View File

@ -13,6 +13,7 @@ struct Player{
int inventoryitems[INVENTORY_SIZE];
int inventorynum[INVENTORY_SIZE];
int invselect;
int invmoving;
int overlayframe;
int overlaytimer;
int select_tx;