git repos / saland

commit 8269a20a

Poul Sander · 2026-01-17 20:30
8269a20a7e86e43cd00189498544a98af38a9377 patch · browse files
parent 54545ffe42234a98b961394ca4294f5a2a7bdc9c

Add option to spawn an item at mouse cursor even if a spell does not exist.

Changed files

M src/saland/Game.cpp before
M src/saland/GameConsoleCommand.cpp before
M src/saland/globals.hpp before
diff --git a/src/saland/Game.cpp b/src/saland/Game.cpp index 6f6d060..b3ecab9 100644 --- a/src/saland/Game.cpp +++ b/src/saland/Game.cpp
@@ -888,6 +888,11 @@ void Game::Update() {
data->gameRegion.world.init_physics(data->gameRegion.physicsBox);
globalData.pendingSpawnLake = false;
}
+ if (!globalData.pendingSpawnItem.empty()) {
+ ItemDef itemDef = getItem(globalData.pendingSpawnItem);
+ data->gameRegion.SpawnItem(itemDef, static_cast<float>(data->world_mouse_x), static_cast<float>(data->world_mouse_y));
+ globalData.pendingSpawnItem.clear();
+ }
if (data->consoleActive && data->console && !data->console->IsActive()) {
data->consoleActive = false;
}
diff --git a/src/saland/GameConsoleCommand.cpp b/src/saland/GameConsoleCommand.cpp index c899559..5df09f5 100644 --- a/src/saland/GameConsoleCommand.cpp +++ b/src/saland/GameConsoleCommand.cpp
@@ -261,6 +261,24 @@ struct ConsoleCommandSpawnLake : public ConsoleCommand {
}
};
+struct ConsoleCommandSpawnItem : public ConsoleCommand {
+ virtual std::string getCommand() const override {
+ return "spawn_item";
+ }
+
+ virtual std::string run(const std::vector<std::string>& args) override {
+ if (args.size() < 2) {
+ throw std::runtime_error("Must be called like: spawn_item ITEM_NAME");
+ }
+ globalData.pendingSpawnItem = args[1];
+ return "Item '" + args[1] + "' will spawn at mouse position";
+ }
+
+ virtual std::string helpMessage() const override {
+ return "Spawns an item at the current mouse position. Usage: spawn_item ITEM_NAME";
+ }
+};
+
static ConsoleCommandGiveItem cc_give_item;
static ConsoleCommandItem cc_item;
static ConsoleCommandQuit cc_quit;
@@ -268,6 +286,7 @@ static ConsoleCommandConfig cc_config;
static DrawOverlayConsoleCommand docc;
static ConsoleCommandSpawn cc_spawn;
static ConsoleCommandSpawnLake cc_spawn_lake;
+static ConsoleCommandSpawnItem cc_spawn_item;
void GameConsoleCommandRegister() {
RegisterCommand(&cc_give_item);
@@ -277,4 +296,5 @@ void GameConsoleCommandRegister() {
RegisterCommand(&docc);
RegisterCommand(&cc_spawn);
RegisterCommand(&cc_spawn_lake);
+ RegisterCommand(&cc_spawn_item);
}
\ No newline at end of file
diff --git a/src/saland/globals.hpp b/src/saland/globals.hpp index 75cc468..557f731 100644 --- a/src/saland/globals.hpp +++ b/src/saland/globals.hpp
@@ -71,6 +71,7 @@ struct GlobalData {
SpawnCommand pendingSpawnCommand;
bool pendingSpawnLake = false;
+ std::string pendingSpawnItem; // Item name to spawn at mouse position
};
extern GlobalData globalData;