mirror of
https://github.com/p2r3/bareiron.git
synced 2025-10-02 07:35:08 +02:00
104 lines
2.3 KiB
C
104 lines
2.3 KiB
C
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "globals.h"
|
|
#include "registries.h"
|
|
#include "crafting.h"
|
|
|
|
void getCraftingOutput (PlayerData *player, uint8_t *count, uint16_t *item) {
|
|
|
|
uint8_t i, filled = 0, first = 10;
|
|
for (i = 0; i < 9; i ++) {
|
|
if (player->craft_items[i]) {
|
|
filled ++;
|
|
if (first == 10) first = i;
|
|
}
|
|
}
|
|
|
|
uint8_t first_col = first % 3, first_row = first / 3;
|
|
|
|
switch (filled) {
|
|
|
|
case 0:
|
|
*item = 0;
|
|
*count = 0;
|
|
return;
|
|
|
|
case 1:
|
|
switch (player->craft_items[first]) {
|
|
case I_oak_log:
|
|
*item = I_oak_planks;
|
|
*count = 4;
|
|
return;
|
|
case I_oak_planks:
|
|
*item = I_oak_button;
|
|
*count = 1;
|
|
return;
|
|
|
|
default: break;
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
switch (player->craft_items[first]) {
|
|
case I_oak_planks:
|
|
if (first_col != 2 && player->craft_items[first + 1] == I_oak_planks) {
|
|
*item = I_oak_pressure_plate;
|
|
*count = 1;
|
|
return;
|
|
} else if (first_row != 2 && player->craft_items[first + 3] == I_oak_planks) {
|
|
*item = I_stick;
|
|
*count = 4;
|
|
return;
|
|
}
|
|
break;
|
|
|
|
default: break;
|
|
}
|
|
|
|
case 4:
|
|
switch (player->craft_items[first]) {
|
|
case I_oak_planks:
|
|
if (
|
|
first_col != 2 && first_row != 2 &&
|
|
player->craft_items[first + 1] == I_oak_planks &&
|
|
player->craft_items[first + 3] == I_oak_planks &&
|
|
player->craft_items[first + 4] == I_oak_planks
|
|
) {
|
|
*item = I_crafting_table;
|
|
*count = 1;
|
|
return;
|
|
}
|
|
break;
|
|
|
|
default: break;
|
|
}
|
|
|
|
case 5:
|
|
switch (player->craft_items[first]) {
|
|
case I_oak_planks:
|
|
if (
|
|
first == 0 &&
|
|
player->craft_items[first + 1] == I_oak_planks &&
|
|
player->craft_items[first + 2] == I_oak_planks &&
|
|
player->craft_items[first + 4] == I_stick &&
|
|
player->craft_items[first + 7] == I_stick
|
|
) {
|
|
*item = I_wooden_pickaxe;
|
|
*count = 1;
|
|
return;
|
|
}
|
|
break;
|
|
|
|
default: break;
|
|
}
|
|
|
|
default: break;
|
|
|
|
}
|
|
|
|
*count = 0;
|
|
*item = 0;
|
|
|
|
}
|