Roguelike AoC – part 26
In the twenty-sixth lesson of a roguelike game tutorial (the last one) we started with inventory. Unfortunately there’s no more lessons – the author dropped the project, however it still does not allow me to skip it. Last march of the BareMetalDev Advent of Code 😉
New folder structure
Yup, the files were moved and new ones created. However, it’s a trivial task and what is more – due to the CMake plus CLion being used I don’t need to do a thing in the project config.
Where’s my stuff? Items I mean
Adding Item struct was pretty straightforward – as usual I’ve made some changes. Location is used instead of Position – also not as a pointer but as a value. I’m not so convinced by using a union in this struct, and the name is too long. My structure is below.
typedef struct Item { char name[32]; ItemType type; Location location; union { Weapon *weapon; } object; } Item;
Printing them out
In the original lesson the author modified a main loop to listen for key i being pressed to show the inventory. I have already designed specific function for this called handleInput so what I had to do is to add a logic there:
// show inventory case 'i': case 'I': printInventory(*level->user); playerDraw(*level->user); break;
I had to add playerDraw function here in order for the cursor to be moved back to the place where player is. Could do that in a low-level way (just calling curses method) but that’s what wrappers are for. However, usually inventory is being shown in a separate window, but here we’re keeping it simple.
Code
Here is the direct link to the GitHub repo.
Leave a Reply
You must be logged in to post a comment.