Cleaned some tools up
Some checks failed
Build Dusk / run-tests (push) Failing after 2m13s
Build Dusk / build-linux (push) Successful in 2m4s
Build Dusk / build-psp (push) Failing after 1m47s

This commit is contained in:
2026-01-27 08:40:13 -06:00
parent 81b08b2eba
commit fb93453482
17 changed files with 61 additions and 143 deletions

View File

@@ -15,8 +15,6 @@ add_subdirectory(locale)
add_asset(SCRIPT init.lua)
# Subdirs
add_subdirectory(input)
add_subdirectory(item)
add_subdirectory(entity)
add_subdirectory(map)
add_subdirectory(ui)

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2026 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
dusk_input_csv(${CMAKE_CURRENT_LIST_DIR}/input.csv)

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2026 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
dusk_item_csv(${CMAKE_CURRENT_LIST_DIR}/items.csv)

View File

@@ -26,3 +26,12 @@ elseif(DUSK_TARGET_SYSTEM STREQUAL "psp")
INPUT_GAMEPAD=1
)
endif()
# CSV
dusk_run_python(
dusk_input_csv_defs
tools.input.csv
--csv ${CMAKE_CURRENT_SOURCE_DIR}/input.csv
--output ${DUSK_GENERATED_HEADERS_DIR}/input/inputactiondefs.h
)
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} dusk_input_csv_defs)

View File

@@ -7,12 +7,7 @@
#pragma once
#include "time/time.h"
#ifndef INPUT_CSV_GENERATED
#error "Input CSV has not been generated. Run dusk_input_csv in CMake."
#endif
#include "input/inputactiontype.h"
// #include "input/inputactionname.h"
#include "input/inputactiondefs.h"
typedef struct {
inputaction_t action;

View File

@@ -9,3 +9,11 @@ target_sources(${DUSK_LIBRARY_TARGET_NAME}
inventory.c
backpack.c
)
dusk_run_python(
dusk_item_csv_defs
tools.item.csv
--csv ${CMAKE_CURRENT_SOURCE_DIR}/item.csv
--output ${DUSK_GENERATED_HEADERS_DIR}/item/item.h
)
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} dusk_item_csv_defs)

View File

@@ -45,16 +45,10 @@ int moduleInputBind(lua_State *L) {
}
void moduleInput(scriptcontext_t *context) {
char_t buffer[128];
assertNotNull(context, "Script context cannot be NULL");
// Set input information
for(inputaction_t act = INPUT_ACTION_NULL + 1; act < INPUT_ACTION_COUNT; act++) {
const char_t *actId = INPUT_ACTION_IDS[act];
assertStrLenMax(actId, 64, "Input action name too long for buffer");
snprintf(buffer, sizeof(buffer), "INPUT_ACTION_%s = %d\n", actId, act);
scriptContextExec(context, buffer);
}
// Setup enums.
scriptContextExec(context, INPUT_ACTION_SCRIPT);
// Input values.
scriptContextExec(context,

View File

@@ -238,16 +238,10 @@ int moduleInventorySort(lua_State *L) {
}
void moduleItem(scriptcontext_t *context) {
char_t buffer[128];
assertNotNull(context, "Script context cannot be NULL");
// Set item information
for(itemid_t itemId = ITEM_ID_NULL + 1; itemId < ITEM_ID_COUNT; itemId++) {
const char_t *itemName = ITEMS[itemId].name;
assertStrLenMax(itemName, 64, "Item name too long for buffer");
snprintf(buffer, sizeof(buffer), "ITEM_ID_%s = %d\n", itemName, itemId);
scriptContextExec(context, buffer);
}
scriptContextExec(context, ITEM_SCRIPT);
// Bind BACKPACK const pointer
scriptContextRegPointer(context, "BACKPACK", (void *)&BACKPACK);

View File

@@ -5,8 +5,6 @@
add_subdirectory(run_python)
add_subdirectory(env_to_h)
add_subdirectory(item)
add_subdirectory(input)
# Function that adds an asset to be compiled
function(add_asset ASSET_TYPE ASSET_PATH)

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2026 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
add_subdirectory(csv)

View File

@@ -1,37 +0,0 @@
# Copyright (c) 2026 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
function(dusk_input_csv CSV_FILE)
# dusk_csv_to_enum(
# ${CSV_FILE}
# input/inputactiontype.h
# inputaction_t
# INPUT_ACTION_
# id
# )
# dusk_csv_to_array(
# ${CSV_FILE}
# input/inputactionname.h
# INPUT_ACTION_NAMES
# input/inputactiontype.h
# INPUT_ACTION_
# id
# id
# )
dusk_run_python(
dusk_input_csv_defs
tools.input.csv
--csv ${CSV_FILE}
--output ${DUSK_GENERATED_HEADERS_DIR}/input/inputactiontype.h
)
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} dusk_input_csv_defs)
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
INPUT_CSV_GENERATED=1
)
endfunction()

View File

@@ -24,17 +24,22 @@ with open(args.csv, newline="", encoding="utf-8") as csvfile:
# For each ID
inputIds = []
inputIdValues = {}
for row in reader:
inputId = row["id"]
if inputId not in inputIds:
inputIds.append(inputId)
# For each ID, create enum entry.
count = 0
outHeader += "typedef enum {\n"
outHeader += " INPUT_ACTION_NULL = 0,\n\n"
outHeader += f" INPUT_ACTION_NULL = {count},\n\n"
count += 1
for inputId in inputIds:
outHeader += f" {csvIdToEnumName(inputId)},\n"
outHeader += f"\n INPUT_ACTION_COUNT\n"
inputIdValues[inputId] = count
outHeader += f" {csvIdToEnumName(inputId)} = {count},\n"
count += 1
outHeader += f"\n INPUT_ACTION_COUNT = {count}\n"
outHeader += "} inputaction_t;\n\n"
# Write IDs to char array.
@@ -43,6 +48,13 @@ with open(args.csv, newline="", encoding="utf-8") as csvfile:
outHeader += f" [{csvIdToEnumName(inputId)}] = \"{inputId}\",\n"
outHeader += f"}};\n\n"
# Lua Script
outHeader += f"static const char_t *INPUT_ACTION_SCRIPT = \n"
for inputId in inputIds:
# Reference the enum
outHeader += f" \"{csvIdToEnumName(inputId)} = {inputIdValues[inputId]}\\n\"\n"
outHeader += f";\n\n"
# Write to output file.
os.makedirs(os.path.dirname(args.output), exist_ok=True)
with open(args.output, "w", encoding="utf-8") as outFile:

View File

@@ -1,6 +0,0 @@
# Copyright (c) 2026 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
add_subdirectory(csv)

View File

@@ -1,46 +0,0 @@
# Copyright (c) 2026 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
function(dusk_item_csv CSV_FILE)
# dusk_csv_to_enum(
# ${CSV_FILE}
# item/itemtype.h
# itemtype_t
# ITEM_TYPE_
# type
# )
# dusk_csv_to_enum(
# ${CSV_FILE}
# item/itemid.h
# itemid_t
# ITEM_ID_
# id
# )
# dusk_csv_to_array(
# ${CSV_FILE}
# item/itemname.h
# ITEM_NAMES
# item/itemid.h
# ITEM_ID_
# id
# id
# )
dusk_run_python(
dusk_item_csv_defs
tools.item.csv
--csv ${CSV_FILE}
--output ${DUSK_GENERATED_HEADERS_DIR}/item/item.h
)
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} dusk_item_csv_defs)
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
ITEM_CSV_GENERATED=1
)
endfunction()

View File

@@ -42,19 +42,28 @@ with open(args.csv, newline="", encoding="utf-8") as csvfile:
outHeader = "#pragma once\n"
outHeader += '#include "dusk.h"\n\n'
itemTypeValues = {}
itemIdValues = {}
count = 0
# Create enum for types and ids, include null and count.
outHeader += "typedef enum {\n"
outHeader += " ITEM_TYPE_NULL = 0,\n"
outHeader += f" ITEM_TYPE_NULL = {count},\n"
count += 1
for itemType in itemTypes:
outHeader += f" {csvIdToEnumName(itemType)},\n"
outHeader += f" ITEM_TYPE_COUNT\n"
itemTypeValues[itemType] = count
outHeader += f" {csvIdToEnumName(itemType)} = {count},\n"
count += 1
outHeader += f" ITEM_TYPE_COUNT = {count}\n"
outHeader += "} itemtype_t;\n\n"
outHeader += "typedef enum {\n"
outHeader += " ITEM_ID_NULL = 0,\n"
outHeader += f" ITEM_ID_NULL = {count},\n"
for itemId in itemIds:
outHeader += f" {csvIdToEnumName(itemId)},\n"
outHeader += f" ITEM_ID_COUNT\n"
itemIdValues[itemId] = count
outHeader += f" {csvIdToEnumName(itemId)} = {count},\n"
count += 1
outHeader += f" ITEM_ID_COUNT = {count}\n"
outHeader += "} itemid_t;\n\n"
# Create struct for item data.
@@ -76,6 +85,14 @@ for itemId in itemIds:
outHeader += f" }},\n"
outHeader += f"}};\n\n"
# Create lua script defining items.
outHeader += f"static const char_t *ITEM_SCRIPT = \n"
for itemId in itemIds:
outHeader += f" \"{csvIdToEnumName(itemId)} = {itemIdValues[itemId]}\\n\"\n"
for itemType in itemTypes:
outHeader += f" \"{csvIdToEnumName(itemType)} = {itemTypeValues[itemType]}\\n\"\n"
outHeader += f";\n\n"
# Write to output file.
os.makedirs(os.path.dirname(args.output), exist_ok=True)
with open(args.output, "w", encoding="utf-8") as outFile: