Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5184064a26 | ||
|
|
6a43363539 | ||
|
|
b9195fbbad | ||
|
|
f715ad2176 |
@@ -107,4 +107,3 @@ yarn.lock
|
|||||||
/assets/test
|
/assets/test
|
||||||
/tools_old
|
/tools_old
|
||||||
/assets/test.png
|
/assets/test.png
|
||||||
/assets/audio/boa.mp3
|
|
||||||
+15
-40
@@ -8,22 +8,16 @@ cmake_minimum_required(VERSION 3.13)
|
|||||||
|
|
||||||
set(CMAKE_C_STANDARD 11)
|
set(CMAKE_C_STANDARD 11)
|
||||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
set(CMAKE_MODULE_PATH
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
|
||||||
${CMAKE_MODULE_PATH}
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules
|
|
||||||
)
|
|
||||||
cmake_policy(SET CMP0079 NEW)
|
cmake_policy(SET CMP0079 NEW)
|
||||||
# set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
|
# set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
|
||||||
|
|
||||||
option(DUSK_BUILD_TESTS "Enable tests" OFF)
|
option(DUSK_BUILD_TESTS "Enable tests" OFF)
|
||||||
option(DUSK_NETWORK "Enable network support" ON)
|
|
||||||
|
|
||||||
set(DUSK_GAME_NAME "Dusk" CACHE STRING "Game display name")
|
set(DUSK_GAME_NAME "Dusk" CACHE STRING "Game display name")
|
||||||
set(DUSK_GAME_AUTHOR "YourWishes" CACHE STRING "Game author / coder")
|
set(DUSK_GAME_AUTHOR "YourWishes" CACHE STRING "Game author / coder")
|
||||||
set(DUSK_GAME_SHORT_DESCRIPTION "Dusk game" CACHE STRING "One-line description")
|
set(DUSK_GAME_SHORT_DESCRIPTION "Dusk game" CACHE STRING "One-line description")
|
||||||
set(DUSK_GAME_LONG_DESCRIPTION
|
set(DUSK_GAME_LONG_DESCRIPTION "No description yet." CACHE STRING "Full description")
|
||||||
"No description yet." CACHE STRING "Full description"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Prep cache
|
# Prep cache
|
||||||
set(DUSK_CACHE_TARGET "dusk-target")
|
set(DUSK_CACHE_TARGET "dusk-target")
|
||||||
@@ -37,19 +31,13 @@ set(DUSK_TEMP_DIR "${DUSK_BUILD_DIR}/temp")
|
|||||||
set(DUSK_TOOLS_DIR "${DUSK_ROOT_DIR}/tools")
|
set(DUSK_TOOLS_DIR "${DUSK_ROOT_DIR}/tools")
|
||||||
set(DUSK_DATA_DIR "${DUSK_ROOT_DIR}/data")
|
set(DUSK_DATA_DIR "${DUSK_ROOT_DIR}/data")
|
||||||
set(DUSK_ASSETS_DIR "${DUSK_ROOT_DIR}/assets")
|
set(DUSK_ASSETS_DIR "${DUSK_ROOT_DIR}/assets")
|
||||||
set(DUSK_BUILT_ASSETS_DIR "${DUSK_BUILD_DIR}/built_assets"
|
set(DUSK_BUILT_ASSETS_DIR "${DUSK_BUILD_DIR}/built_assets" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
||||||
CACHE INTERNAL ${DUSK_CACHE_TARGET}
|
|
||||||
)
|
|
||||||
set(DUSK_GENERATED_HEADERS_DIR "${DUSK_BUILD_DIR}/generated")
|
set(DUSK_GENERATED_HEADERS_DIR "${DUSK_BUILD_DIR}/generated")
|
||||||
set(DUSK_BUILD_BINARY ${DUSK_BUILD_DIR}/Dusk
|
set(DUSK_BUILD_BINARY ${DUSK_BUILD_DIR}/Dusk CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
||||||
CACHE INTERNAL ${DUSK_CACHE_TARGET}
|
|
||||||
)
|
|
||||||
set(DUSK_ASSETS "" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
set(DUSK_ASSETS "" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
||||||
set(DUSK_LIBRARY_TARGET_NAME "DuskCore" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
set(DUSK_LIBRARY_TARGET_NAME "DuskCore" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
||||||
set(DUSK_BINARY_TARGET_NAME "Dusk" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
set(DUSK_BINARY_TARGET_NAME "Dusk" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
||||||
set(DUSK_ASSETS_ZIP "${DUSK_BUILD_DIR}/dusk.dsk"
|
set(DUSK_ASSETS_ZIP "${DUSK_BUILD_DIR}/dusk.dsk" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
||||||
CACHE INTERNAL ${DUSK_CACHE_TARGET}
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT DEFINED DUSK_TARGET_SYSTEM)
|
if(NOT DEFINED DUSK_TARGET_SYSTEM)
|
||||||
set(DUSK_TARGET_SYSTEM "linux")
|
set(DUSK_TARGET_SYSTEM "linux")
|
||||||
@@ -84,9 +72,7 @@ if(DUSK_BUILD_TESTS)
|
|||||||
${DUSK_LIBRARY_TARGET_NAME}
|
${DUSK_LIBRARY_TARGET_NAME}
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
set(DUSK_LIBRARY_TARGET_NAME "${DUSK_BINARY_TARGET_NAME}"
|
set(DUSK_LIBRARY_TARGET_NAME "${DUSK_BINARY_TARGET_NAME}" CACHE INTERNAL ${DUSK_CACHE_TARGET})
|
||||||
CACHE INTERNAL ${DUSK_CACHE_TARGET}
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED DUSK_VERSION)
|
if(NOT DEFINED DUSK_VERSION)
|
||||||
@@ -104,12 +90,6 @@ target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
|
|||||||
DUSK_VERSION="${DUSK_VERSION}"
|
DUSK_VERSION="${DUSK_VERSION}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if(DUSK_NETWORK)
|
|
||||||
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
|
|
||||||
DUSK_NETWORK
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Toolchains
|
# Toolchains
|
||||||
include(cmake/targets/${DUSK_TARGET_SYSTEM}.cmake)
|
include(cmake/targets/${DUSK_TARGET_SYSTEM}.cmake)
|
||||||
|
|
||||||
@@ -135,21 +115,16 @@ if(DUSK_BUILD_TESTS)
|
|||||||
add_subdirectory(test)
|
add_subdirectory(test)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Build assets. Runs unconditionally on every build (rather than being
|
# Build assets
|
||||||
# gated behind a custom_command's file-level DEPENDS list) because
|
file(GLOB_RECURSE DUSK_ASSET_FILES CONFIGURE_DEPENDS "${DUSK_ASSETS_DIR}/*")
|
||||||
# CONFIGURE_DEPENDS globs only pick up added/removed files on the next
|
add_custom_command(
|
||||||
# CMake configure, so that approach could miss/lag a rebuild behind an
|
OUTPUT "${DUSK_ASSETS_ZIP}"
|
||||||
# asset edit. tools.asset.pack itself decides whether anything actually
|
|
||||||
# changed (see its manifest check) and no-ops quickly when nothing did,
|
|
||||||
# so this stays cheap on a build where assets are untouched.
|
|
||||||
add_custom_target(DUSK_ASSETS_BUILT ALL
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${DUSK_ASSETS_DIR}"
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${DUSK_ASSETS_DIR}"
|
||||||
COMMAND ${Python3_EXECUTABLE} -m tools.asset.pack
|
COMMAND ${CMAKE_COMMAND} -E rm -f "${DUSK_ASSETS_ZIP}"
|
||||||
--input "${DUSK_ASSETS_DIR}"
|
COMMAND ${CMAKE_COMMAND} -E tar "cf" "${DUSK_ASSETS_ZIP}" --format=zip -- .
|
||||||
--output "${DUSK_ASSETS_ZIP}"
|
WORKING_DIRECTORY "${DUSK_ASSETS_DIR}"
|
||||||
WORKING_DIRECTORY "${DUSK_ROOT_DIR}"
|
DEPENDS ${DUSK_ASSET_FILES}
|
||||||
BYPRODUCTS "${DUSK_ASSETS_ZIP}"
|
|
||||||
COMMENT "Packing assets into dusk.dsk"
|
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
add_custom_target(DUSK_ASSETS_BUILT DEPENDS "${DUSK_ASSETS_ZIP}")
|
||||||
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} DUSK_ASSETS_BUILT)
|
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} DUSK_ASSETS_BUILT)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# Dusk
|
# Documentation
|
||||||
RPG Game Project, small and able to run on a PSP.
|
- [Scripting](docs/SCRIPTING.md) — writing gameplay logic in JavaScript.
|
||||||
|
- [UI](docs/UI.md) — building buttons/menus/etc from engine/game C code.
|
||||||
|
|
||||||
# Building
|
# Building
|
||||||
Each build target has different requirements. You can take a look at the git
|
Each build target has different requirements. You can take a look at the git
|
||||||
@@ -9,18 +10,15 @@ following packages, depending on your system;
|
|||||||
|
|
||||||
Fedora;
|
Fedora;
|
||||||
```
|
```
|
||||||
sudo dnf install git make gcc cmake python python-polib python3-pillow python3-dotenv python3-numpy python-qt5 python3-pyopengl SDL2-devel zlib-devel libzip-devel bzip2-devel openssl-devel lzma-sdk-devel xz xz-devel lua-devel libmad-devel
|
sudo dnf install git make gcc cmake python python-polib python3-pillow python3-dotenv python3-numpy python-qt5 python3-pyopengl SDL2-devel zlib-devel libzip-devel bzip2-devel openssl-devel lzma-sdk-devel xz xz-devel lua-devel
|
||||||
```
|
```
|
||||||
`libmad-devel` (used for MP3 decoding) is GPL-licensed and ships in the
|
|
||||||
[RPM Fusion](https://rpmfusion.org/) free repository rather than Fedora's
|
|
||||||
base repos - make sure RPM Fusion is enabled first.
|
|
||||||
|
|
||||||
Ubuntu;
|
Ubuntu;
|
||||||
```
|
```
|
||||||
sudo apt-get install git build-essential gcc python python-polib python3-pillow python3-dotenv python3-numpy python3-pyqt5 python3-opengl libmad0-dev
|
sudo apt-get install git build-essential gcc python python-polib python3-pillow python3-dotenv python3-numpy python3-pyqt5 python3-opengl
|
||||||
```
|
```
|
||||||
|
|
||||||
Arch Linux;
|
Arch Linux;
|
||||||
```
|
```
|
||||||
sudo pacman -S git base-devel gcc python python-polib python-pillow python-dotenv python-numpy python-pyqt5 python-opengl libmad
|
sudo pacman -S git base-devel gcc python python-polib python-pillow python-dotenv python-numpy python-pyqt5 python-opengl
|
||||||
```
|
```
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,68 +0,0 @@
|
|||||||
{
|
|
||||||
"items": [
|
|
||||||
// First thing, try and find a save device, used for settings and what not.
|
|
||||||
{
|
|
||||||
"type": "MODAL",
|
|
||||||
"title": "initial.checking_save.title",
|
|
||||||
"message": "initial.checking_save.message"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "WAIT",
|
|
||||||
"seconds": 0.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "SAVE_DEVICE_CHECK",
|
|
||||||
"successMarker": "CONTINUE",
|
|
||||||
"failureMarker": "SAVE_DEVICE_NOT_FOUND"
|
|
||||||
},
|
|
||||||
|
|
||||||
// No save device found
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "SAVE_DEVICE_NOT_FOUND"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_CLOSE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_OPTIONS_MARKERS",
|
|
||||||
"title": "initial.no_device.title",
|
|
||||||
"message": "initial.no_device.message",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"text": "initial.no_device.retry",
|
|
||||||
"marker": "SAVE_DEVICE_RETRY"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "initial.no_device.continue",
|
|
||||||
"marker": "CONTINUE"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// Save device not found, user to retry, just close modal and loop
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "SAVE_DEVICE_RETRY"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_CLOSE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "RESTART"
|
|
||||||
},
|
|
||||||
|
|
||||||
// Save device found (or continuing without one)
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "CONTINUE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_CLOSE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "CUTSCENE",
|
|
||||||
"name": "main_menu"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,140 +0,0 @@
|
|||||||
{
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "MAIN_MENU_IDLE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "UI_SHOW",
|
|
||||||
"name": "main_menu"
|
|
||||||
},
|
|
||||||
|
|
||||||
// Options button goes here - no options screen yet, so this is just
|
|
||||||
// an alias landing right back on the idle loop below.
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "OPTIONS"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "IDLE"
|
|
||||||
},
|
|
||||||
|
|
||||||
// New Game button goes here.
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "NEW_GAME"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL",
|
|
||||||
"title": "main_menu.checking_save.title",
|
|
||||||
"message": "main_menu.checking_save.message"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "WAIT",
|
|
||||||
"seconds": 0.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "SAVE_DEVICE_CHECK",
|
|
||||||
"successMarker": "SAVE_DEVICE_FOUND",
|
|
||||||
"failureMarker": "SAVE_DEVICE_NOT_FOUND"
|
|
||||||
},
|
|
||||||
|
|
||||||
// Save device not found
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "SAVE_DEVICE_NOT_FOUND"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_CLOSE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_OPTIONS_MARKERS",
|
|
||||||
"title": "main_menu.no_device.title",
|
|
||||||
"message": "main_menu.no_device.message",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"text": "main_menu.no_device.retry",
|
|
||||||
"marker": "NEW_GAME"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "main_menu.no_device.continue",
|
|
||||||
"marker": "SAVE_DEVICE_FOUND"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// Save data failed to load (e.g. corrupt/unreadable) - only option is
|
|
||||||
// to retry, no "continue without saving" here since we already know a
|
|
||||||
// device is present.
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "LOAD_ERROR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_OPTIONS_MARKERS",
|
|
||||||
"title": "main_menu.save_load_error.title",
|
|
||||||
"message": "main_menu.save_load_error.message",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"text": "main_menu.save_load_error.retry",
|
|
||||||
"marker": "NEW_GAME"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
// Quit Game button goes here. Cancelling jumps back to
|
|
||||||
// MAIN_MENU_IDLE; confirming falls through to QUIT_GAME, which
|
|
||||||
// ends the process directly.
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "QUIT"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_OPTIONS_MARKERS",
|
|
||||||
"title": "main_menu.quit_confirm",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"text": "ui.confirm.confirm",
|
|
||||||
"marker": "QUIT_CONFIRMED"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "ui.confirm.cancel",
|
|
||||||
"marker": "MAIN_MENU_IDLE"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "QUIT_CONFIRMED"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "QUIT_GAME"
|
|
||||||
},
|
|
||||||
|
|
||||||
// main menu just listens for cutscene ending to show the select save modal
|
|
||||||
// so we have that here.
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "SAVE_DEVICE_FOUND"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "MODAL_CLOSE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "SAVE_LOAD_ALL_SLOTS",
|
|
||||||
"successMarker": "LOADED",
|
|
||||||
"failureMarker": "LOAD_ERROR"
|
|
||||||
},
|
|
||||||
|
|
||||||
// Must be the very last item - falling off the end here is what
|
|
||||||
// completes the cutscene and fires uiMainMenuOpenSelectSave (see
|
|
||||||
// cutsceneSystemSetOnComplete in ui/screen/mainmenu/uimainmenu.c).
|
|
||||||
// Placing this anywhere earlier would fall through into whatever
|
|
||||||
// comes next instead (e.g. the QUIT block, if placed just before it).
|
|
||||||
{
|
|
||||||
"type": "MARKER",
|
|
||||||
"name": "LOADED"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
var Actions;
|
||||||
|
var camera, cameraPosition;
|
||||||
|
var cube, cubePosition, cubeRenderable, cubeMesh;
|
||||||
|
var ground, groundPosition, groundRenderable;
|
||||||
|
|
||||||
|
// init() is called via scriptManagerCallGlobal(), which pumps the asset
|
||||||
|
// system + job queue until any promise it returns settles - so it's safe
|
||||||
|
// to await include() here even though this runs before the main loop.
|
||||||
|
async function init() {
|
||||||
|
Actions = await include("input.js");
|
||||||
|
|
||||||
|
camera = new Entity();
|
||||||
|
cameraPosition = camera.add(POSITION);
|
||||||
|
camera.add(CAMERA);
|
||||||
|
cameraPosition.position = new Vec3(3, 3, -6);
|
||||||
|
cameraPosition.lookAt(new Vec3(0, 0, 0));
|
||||||
|
|
||||||
|
cube = new Entity();
|
||||||
|
cubePosition = cube.add(POSITION);
|
||||||
|
cubeRenderable = cube.add(RENDERABLE);
|
||||||
|
cubeMesh = Mesh.createCube();
|
||||||
|
cubeRenderable.mesh = cubeMesh;
|
||||||
|
cubeRenderable.color = Color.red();
|
||||||
|
|
||||||
|
ground = new Entity();
|
||||||
|
groundPosition = ground.add(POSITION);
|
||||||
|
groundRenderable = ground.add(RENDERABLE);
|
||||||
|
groundRenderable.mesh = Mesh.createCube();
|
||||||
|
groundRenderable.color = Color.dark_gray();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Runs every frame (including dynamic/interpolation frames) - use for
|
||||||
|
// smooth, purely presentational animation.
|
||||||
|
function update() {
|
||||||
|
cubePosition.rotation.y += TIME.delta * 1.5;
|
||||||
|
cubePosition.rotation.x += TIME.delta * 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Runs once per fixed timestep only - use for gameplay logic that should
|
||||||
|
// be deterministic and independent of display refresh rate.
|
||||||
|
function fixedUpdate() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function deinit() {
|
||||||
|
cube.dispose();
|
||||||
|
camera.dispose();
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
// Binds physical buttons to abstract actions, then exports the action
|
||||||
|
// constants so other scripts don't need to know raw INPUT_ACTION_* names.
|
||||||
|
Input.bind("w", INPUT_ACTION_UP);
|
||||||
|
Input.bind("s", INPUT_ACTION_DOWN);
|
||||||
|
Input.bind("a", INPUT_ACTION_LEFT);
|
||||||
|
Input.bind("d", INPUT_ACTION_RIGHT);
|
||||||
|
Input.bind("space", INPUT_ACTION_ACCEPT);
|
||||||
|
Input.bind("escape", INPUT_ACTION_RAGEQUIT);
|
||||||
|
|
||||||
|
if(typeof INPUT_GAMEPAD !== "undefined") {
|
||||||
|
Input.bind("gamepad_up", INPUT_ACTION_UP);
|
||||||
|
Input.bind("gamepad_down", INPUT_ACTION_DOWN);
|
||||||
|
Input.bind("gamepad_left", INPUT_ACTION_LEFT);
|
||||||
|
Input.bind("gamepad_right", INPUT_ACTION_RIGHT);
|
||||||
|
Input.bind("gamepad_a", INPUT_ACTION_ACCEPT);
|
||||||
|
Input.bind("gamepad_start", INPUT_ACTION_RAGEQUIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
module = {
|
||||||
|
UP: INPUT_ACTION_UP,
|
||||||
|
DOWN: INPUT_ACTION_DOWN,
|
||||||
|
LEFT: INPUT_ACTION_LEFT,
|
||||||
|
RIGHT: INPUT_ACTION_RIGHT,
|
||||||
|
ACCEPT: INPUT_ACTION_ACCEPT,
|
||||||
|
CANCEL: INPUT_ACTION_CANCEL,
|
||||||
|
RAGEQUIT: INPUT_ACTION_RAGEQUIT
|
||||||
|
};
|
||||||
+2
-270
@@ -1,270 +1,2 @@
|
|||||||
msgid ""
|
msgid "test.string"
|
||||||
msgstr ""
|
msgstr "This is a test string"
|
||||||
"Project-Id-Version: ExampleApp 1.0\n"
|
|
||||||
"Language: en\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : (n<7 ? 2 : 3));\n"
|
|
||||||
|
|
||||||
# Initial Scene
|
|
||||||
msgid "initial.checking_save.title"
|
|
||||||
msgstr "Checking for save data"
|
|
||||||
|
|
||||||
msgid "initial.checking_save.message"
|
|
||||||
msgstr "Please wait..."
|
|
||||||
|
|
||||||
msgid "initial.no_device.title"
|
|
||||||
msgstr "No Save Device Found"
|
|
||||||
|
|
||||||
msgid "initial.no_device.message"
|
|
||||||
msgstr "Could not find a save device, ensure it is connected and try again. You can continue, but progress will not be saved."
|
|
||||||
|
|
||||||
msgid "initial.no_device.retry"
|
|
||||||
msgstr "Try again"
|
|
||||||
|
|
||||||
msgid "initial.no_device.continue"
|
|
||||||
msgstr "Continue without saving"
|
|
||||||
|
|
||||||
|
|
||||||
# Main Menu Scene
|
|
||||||
msgid "main_menu.start_game"
|
|
||||||
msgstr "Start Game"
|
|
||||||
|
|
||||||
msgid "main_menu.options"
|
|
||||||
msgstr "Options"
|
|
||||||
|
|
||||||
msgid "main_menu.quit"
|
|
||||||
msgstr "Quit Game"
|
|
||||||
|
|
||||||
msgid "main_menu.quit_confirm"
|
|
||||||
msgstr "Are you sure you want to quit?"
|
|
||||||
|
|
||||||
msgid "main_menu.checking_save.title"
|
|
||||||
msgstr "Checking for save data"
|
|
||||||
|
|
||||||
msgid "main_menu.checking_save.message"
|
|
||||||
msgstr "Please wait..."
|
|
||||||
|
|
||||||
msgid "main_menu.no_device.title"
|
|
||||||
msgstr "No Save Device Found"
|
|
||||||
|
|
||||||
msgid "main_menu.no_device.message"
|
|
||||||
msgstr "Could not find a save device, ensure it is connected and try again. You can continue, but progress will not be saved."
|
|
||||||
|
|
||||||
msgid "main_menu.no_device.retry"
|
|
||||||
msgstr "Try again"
|
|
||||||
|
|
||||||
msgid "main_menu.no_device.continue"
|
|
||||||
msgstr "Continue without saving"
|
|
||||||
|
|
||||||
msgid "main_menu.save_load_error.title"
|
|
||||||
msgstr "Error"
|
|
||||||
|
|
||||||
msgid "main_menu.save_load_error.message"
|
|
||||||
msgstr "Failed to load save data. Please try again."
|
|
||||||
|
|
||||||
msgid "main_menu.save_load_error.retry"
|
|
||||||
msgstr "Try Again"
|
|
||||||
|
|
||||||
|
|
||||||
# Select Save Screen
|
|
||||||
msgid "ui.select_save.title"
|
|
||||||
msgstr "Select Save"
|
|
||||||
|
|
||||||
msgid "ui.select_save.empty"
|
|
||||||
msgstr "Empty Slot"
|
|
||||||
|
|
||||||
msgid "ui.select_save.slot_format"
|
|
||||||
msgstr "%s Lv.%d %s"
|
|
||||||
|
|
||||||
msgid "ui.select_save.delete_mode"
|
|
||||||
msgstr "Delete a Save"
|
|
||||||
|
|
||||||
msgid "ui.select_save.delete_confirm"
|
|
||||||
msgstr "Are you sure you want to delete this save?"
|
|
||||||
|
|
||||||
msgid "ui.select_save.name_title"
|
|
||||||
msgstr "Enter game save file name"
|
|
||||||
|
|
||||||
msgid "ui.save_slot.number_format"
|
|
||||||
msgstr "Slot %d"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#: ui/menu.c:10
|
|
||||||
msgid "ui.title"
|
|
||||||
msgstr ""
|
|
||||||
"Welcome"
|
|
||||||
|
|
||||||
msgid "save.linux.mkdirp_failed"
|
|
||||||
msgstr "Failed to create save directory, check the disk is not full or write-protected."
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettings.c
|
|
||||||
msgid "ui.settings.tabs.general"
|
|
||||||
msgstr "General"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettings.c
|
|
||||||
msgid "ui.settings.tabs.input"
|
|
||||||
msgstr "Input"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettings.c
|
|
||||||
msgid "ui.settings.tabs.display"
|
|
||||||
msgstr "Display"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettings.c
|
|
||||||
msgid "ui.settings.tabs.audio"
|
|
||||||
msgstr "Audio"
|
|
||||||
|
|
||||||
msgid "ui.settings.input.deadzone"
|
|
||||||
msgstr "Deadzone"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettingsgeneral.c
|
|
||||||
msgid "ui.settings.general.language"
|
|
||||||
msgstr "Language"
|
|
||||||
|
|
||||||
msgid "ui.settings.general.language_detail"
|
|
||||||
msgstr "Takes effect after restarting the application."
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettings.c
|
|
||||||
msgid "ui.settings.apply"
|
|
||||||
msgstr "Apply"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/uiconfirm.c
|
|
||||||
msgid "ui.confirm.discard_changes"
|
|
||||||
msgstr "Discard unsaved changes?"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.characters"
|
|
||||||
msgstr "Characters"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.items"
|
|
||||||
msgstr "Items"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.settings"
|
|
||||||
msgstr "Settings"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save"
|
|
||||||
msgstr "Save"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save_success"
|
|
||||||
msgstr "Game saved."
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save_cancelled"
|
|
||||||
msgstr "Save cancelled."
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save_unavailable"
|
|
||||||
msgstr "Can't save - no save device found."
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save_temporary"
|
|
||||||
msgstr "This session is temporary - no save device was found, so saving is disabled."
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save_create_confirm"
|
|
||||||
msgstr "No save data found. Create a new save?"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save_failed_format"
|
|
||||||
msgstr "Save failed: %s"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/game/uigamemenu.c
|
|
||||||
msgid "ui.game_menu.save_check_failed_format"
|
|
||||||
msgstr "Can't save: %s"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/initial/uiinitialnocard.c
|
|
||||||
msgid "ui.initial.no_card.message"
|
|
||||||
msgstr "No save device found. You can continue, but\nprogress will not be saved."
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/initial/uiinitialnocard.c
|
|
||||||
msgid "ui.initial.no_card.retry"
|
|
||||||
msgstr "Retry"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/initial/uiinitialnocard.c
|
|
||||||
msgid "ui.initial.no_card.continue"
|
|
||||||
msgstr "Continue Anyway"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/initial/uiinitialcreatesave.c
|
|
||||||
msgid "ui.initial.create_save.message"
|
|
||||||
msgstr "No save data found. Create a new save?"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/initial/uiinitialcreatesave.c
|
|
||||||
msgid "ui.initial.create_save.yes"
|
|
||||||
msgstr "Yes"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/initial/uiinitialcreatesave.c
|
|
||||||
msgid "ui.initial.create_save.no"
|
|
||||||
msgstr "No"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/uiconfirm.c
|
|
||||||
msgid "ui.confirm.confirm"
|
|
||||||
msgstr "Confirm"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/uiconfirm.c
|
|
||||||
msgid "ui.confirm.cancel"
|
|
||||||
msgstr "Cancel"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/battle/uibattlemenu.c
|
|
||||||
msgid "ui.battle.menu.attack"
|
|
||||||
msgstr "Attack"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/battle/uibattlemenu.c
|
|
||||||
msgid "ui.battle.menu.flee"
|
|
||||||
msgstr "Flee"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/battle/uibattlemenu.c
|
|
||||||
msgid "ui.battle.menu.target_format"
|
|
||||||
msgstr "Enemy %u (%u/%u HP)"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/battle/uibattlehud.c
|
|
||||||
msgid "ui.battle.hud.hp_format"
|
|
||||||
msgstr "HP %u/%u"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/battle/uibattlehud.c
|
|
||||||
msgid "ui.battle.hud.mp_format"
|
|
||||||
msgstr "MP %u/%u"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettingsaudio.c
|
|
||||||
msgid "ui.settings.audio.placeholder"
|
|
||||||
msgstr "No audio settings yet"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettingsdisplay.c
|
|
||||||
msgid "ui.settings.display.placeholder"
|
|
||||||
msgstr "No display settings yet"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/settings/uisettingsinput.c
|
|
||||||
msgid "ui.settings.input.placeholder"
|
|
||||||
msgstr "No input settings yet"
|
|
||||||
|
|
||||||
#: src/dusk/ui/frame/backpack/uibackpack.c
|
|
||||||
msgid "ui.backpack.category_format"
|
|
||||||
msgstr "Category %u"
|
|
||||||
|
|
||||||
#: src/dusk/ui/overlay/uiloading.c
|
|
||||||
msgid "ui.loading.text"
|
|
||||||
msgstr "loading"
|
|
||||||
|
|
||||||
#: src/dusk/ui/overlay/uiautosave.c
|
|
||||||
msgid "ui.autosave.saving"
|
|
||||||
msgstr "SAVING"
|
|
||||||
|
|
||||||
msgid "item.potion.name"
|
|
||||||
msgstr "Potion"
|
|
||||||
|
|
||||||
msgid "item.potato.name"
|
|
||||||
msgstr "Potato"
|
|
||||||
|
|
||||||
msgid "item.apple.name"
|
|
||||||
msgstr "Apple"
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_1.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_2.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_3.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_4.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_5.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_6.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_7.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_1_8.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_2_1.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_2_2.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_2_3.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_2_4.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_2_5.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"mesh": "meshes/buildings/house_2_6.dmf",
|
|
||||||
"color": [255, 0, 255, 255]
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user