aboutsummaryrefslogtreecommitdiff
path: root/src/inventory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/inventory.c')
-rw-r--r--src/inventory.c149
1 files changed, 149 insertions, 0 deletions
diff --git a/src/inventory.c b/src/inventory.c
new file mode 100644
index 0000000..ae6845d
--- /dev/null
+++ b/src/inventory.c
@@ -0,0 +1,149 @@
+#include "inventory.h"
+#include "PHL.h"
+#include "game.h"
+#include "text.h"
+
+int cursorX = 0;
+int cursorY = 0;
+
+void inventory()
+{
+ char tempDark = roomDarkness;
+ roomDarkness = 0;
+
+ char loop = 1;
+ PHL_PlaySound(sounds[sndPi04], CHN_SOUND);
+ while (PHL_MainLoop() && loop == 1)
+ {
+ PHL_StartDrawing();
+ PHL_ScanInput();
+
+ if (inventoryStep() == 1) {
+ loop = 0;
+ }
+
+ inventoryDraw();
+
+ PHL_EndDrawing();
+ }
+
+ roomDarkness = tempDark;
+}
+
+int inventoryStep()
+{
+ secretCountdown();
+
+ //Input
+ char playsnd = 0;
+
+ if (btnRight.pressed - btnLeft.pressed != 0) {
+ cursorX += btnRight.pressed - btnLeft.pressed;
+ playsnd = 1;
+ }
+ if (btnDown.pressed - btnUp.pressed != 0) {
+ cursorY += btnDown.pressed - btnUp.pressed;
+ playsnd = 1;
+ }
+
+ if (playsnd == 1) {
+ PHL_PlaySound(sounds[sndPi01], CHN_SOUND);
+ }
+
+ //Limit cursor
+ if (cursorX < 0) { cursorX = 6; }
+ if (cursorX > 6) { cursorX = 0; }
+ if (cursorY < 0) { cursorY = 3; }
+ if (cursorY > 3) { cursorY = 0; }
+
+ if (btnStart.pressed == 1 || btnDecline.pressed == 1)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+void inventoryDraw()
+{
+ //Black background
+ PHL_DrawRect(0, 0, 640, 480, PHL_NewRGB(0, 0, 0));
+
+ //Labels
+ PHL_DrawTextBold("SUB WEAPON", 16, 16, YELLOW);
+ PHL_DrawTextBold("ITEM", 16, 96, YELLOW);
+ PHL_DrawTextBold("KEY", 16, 320, YELLOW);
+
+ //Blue rectangles
+ int i, a, cx, cy;
+ //Weapons
+ for (i = 0; i < 5; i++) {
+ PHL_DrawRect(18 + (48 * i), 34, 44, 44, PHL_NewRGB(255, 255, 255));
+ PHL_DrawRect(20 + (48 * i), 36, 40, 40, PHL_NewRGB(119, 166, 219));
+ if (hasWeapon[i] == 1) {
+ cx = (i + 1) * 40;
+ }else{
+ cx = 0;
+ }
+ PHL_DrawSurfacePart(20 + (48 * i), 36, cx, 0, 40, 40, images[imgItems]);
+ }
+ //Items
+ int count = 0;
+ int imageOrder[28] = { 13, 17, 16, 15, 8, 10, 9,
+ 18, 4, 6, 5, 7, 3, 11,
+ 14, 12, 1, 2, 22, 26, 27,
+ 21, 25, 28, 23, 20, 19, 24 };
+
+ for (i = 0; i < 4; i++) {
+ for (a = 0; a < 7; a++) {
+ PHL_DrawRect(18 + (48 * a), 114 + (48 * i), 44, 44, PHL_NewRGB(255, 255, 255));
+ PHL_DrawRect(20 + (48 * a), 116 + (48 * i), 40, 40, PHL_NewRGB(119, 166, 219));
+
+ if (hasItem[count] == 0) {
+ cx = 0;
+ cy = 0;
+ }else{
+ cy = 0;
+ cx = (imageOrder[count] + 6) * 40;
+ while (cx >= 640) {
+ cy += 40;
+ cx -= 640;
+ }
+ }
+
+ PHL_DrawSurfacePart(20 + (48 * a), 116 + (48 * i), cx, cy, 40, 40, images[imgItems]);
+ count++;
+ }
+ }
+ //Keys
+ for (i = 0; i < 8; i++) {
+ PHL_DrawRect(18 + (48 * i), 338, 44, 44, PHL_NewRGB(255, 255, 255));
+ PHL_DrawRect(20 + (48 * i), 340, 40, 40, PHL_NewRGB(119, 166, 219));
+ if (hasKey[i] == 1) {
+ cx = 120 + (i * 40);
+ cy = 80;
+ }else{
+ cx = 0;
+ cy = 0;
+ }
+ PHL_DrawSurfacePart(20 + (48 * i), 340, cx, cy, 40, 40, images[imgItems]);
+ }
+
+ //Text box
+ PHL_DrawRect(16, 400, 606, 46, PHL_NewRGB(255, 255, 255));
+ PHL_DrawRect(18, 402, 602, 42, PHL_NewRGB(0, 0, 255));
+
+ //Text
+ if (hasItem[cursorX + (cursorY * 7)] == 1) {
+ int drawX = 32, drawY = 402;
+
+ //Draw item name
+ drawX = drawText(itemName[cursorX + (cursorY * 7) + 5], drawX, drawY);
+ //Draw item description
+ drawX = drawCharacter(6, 0, drawX, drawY);
+ drawText(itemDescription[cursorX + (cursorY * 7)], drawX, drawY);
+ }
+
+ //Cursor
+ PHL_DrawSurfacePart(16 + (cursorX * 48), 112 + (cursorY * 48), 0, 96, 48, 48, images[imgHud]);
+} \ No newline at end of file