Compare commits
152 Commits
v1.08
...
0388adfed8
| Author | SHA1 | Date | |
|---|---|---|---|
| 0388adfed8 | |||
| 342177a751 | |||
| fdea094e26 | |||
| 2eadd7d8df | |||
| 51330db998 | |||
| df4965a84b | |||
| 8f49e442de | |||
| 9676e5bc2f | |||
| 545d471654 | |||
| 9db902c024 | |||
| 7fe2523221 | |||
| d5ff840445 | |||
| fb5fee02e9 | |||
| 9a4b3b04a5 | |||
| e811cf0a1d | |||
| e4a08d2ec7 | |||
| 7c102e42cc | |||
| 78c5333144 | |||
| c3415fd106 | |||
| 428fe664bd | |||
| 0f8de0d8b5 | |||
| 2ee2d5c45d | |||
| b8cde79107 | |||
| 0667e2105b | |||
| f438e8946b | |||
| 68c97610fb | |||
| 7746b679b4 | |||
| 73008992e0 | |||
| d4acb38c05 | |||
| 7aae9fb5e6 | |||
| a63066bd68 | |||
| 0de6117ca0 | |||
| a43967c279 | |||
| 15ecc10d8b | |||
| 0a5996f220 | |||
| 64ee2d1e45 | |||
| 40dcbabfe8 | |||
| a14f6fcf6f | |||
| 7b3f82aa34 | |||
| 3a36bf6530 | |||
| 195d812d2a | |||
| fdb85ac393 | |||
| d4e3995d71 | |||
| b885aa8c9e | |||
| 9cf0891a04 | |||
| 09ac952404 | |||
| 529bfb5e3a | |||
| ce88596d35 | |||
| 6c3e231d51 | |||
| ae5c511988 | |||
| 9eaf3bc134 | |||
| ff309168ef | |||
| c5c312fc51 | |||
| 34d34a5d91 | |||
| d339fb13b0 | |||
| d0e06e30c9 | |||
| 982db7f75b | |||
| 68e03ac1b0 | |||
| 537150365b | |||
| 12e27a1062 | |||
| 72efa0dc46 | |||
| f2bfc970bc | |||
| 60c926a9c9 | |||
| 10debde847 | |||
| 5cc163dd14 | |||
| 241732752a | |||
| 5a8747cc4b | |||
| 70a50f5117 | |||
| d41b0cb31c | |||
| 33038e8509 | |||
| 57481a1e97 | |||
| 05f91b2a94 | |||
| c4033e3663 | |||
| b940d627d6 | |||
| b320030547 | |||
| d7e0178602 | |||
| c9e75ad5c8 | |||
| 8f1d1df5d6 | |||
| db3a0d7263 | |||
| 636b91ae6f | |||
| 4b820ad6b7 | |||
| a4db80e116 | |||
| 2ebb285a27 | |||
| d05f18ce2d | |||
| 0d74a8a29f | |||
| cdf0b0a694 | |||
| 82f0992116 | |||
| b1ba5e67dc | |||
| 193dac708f | |||
| cd96be80f9 | |||
| aca2be98af | |||
| 360ebfd2e6 | |||
| 5c371e7517 | |||
| 31cded15cc | |||
| 3562b139c3 | |||
| c2040d3ded | |||
| b34f4dda42 | |||
| 4e525642a0 | |||
| c7db6aeaa3 | |||
| 5ff04daf20 | |||
| 5bb2b5e7c4 | |||
| 7a685c0cc8 | |||
| 07e83fc811 | |||
| 3167251eae | |||
| 4efbb61fbc | |||
| 3992fc08bf | |||
| 366fe404ca | |||
| 217781c621 | |||
| 212b2b481c | |||
| 59e766f5c3 | |||
| 2e11fec2cb | |||
| 0d7ab830c9 | |||
| 0cec9f8556 | |||
| c6474cb2da | |||
| e6fd4225a2 | |||
| 85ab5ea03f | |||
| 2457517f2b | |||
| 64880a427e | |||
| a8e5517a77 | |||
| a07a08adb7 | |||
| 32c31a8cb6 | |||
| c9da5135b2 | |||
| 817140825a | |||
| e6f101ece6 | |||
| 48971cd5d1 | |||
| 5bb5be9c33 | |||
| 2ee0c70319 | |||
| 3ba4293e8a | |||
| 8ae686a70b | |||
| 2ac425483b | |||
| fc01676df2 | |||
| e361d295c1 | |||
| f6098a479b | |||
| 7a0bc5c9ae | |||
| 5f68c6256f | |||
| debcc3409e | |||
| c86a6496b3 | |||
| 6bb877b510 | |||
| ec73c5fa30 | |||
| 4dd6c94730 | |||
| e1d6aff724 | |||
| bcb2e96069 | |||
| e23f6b5ed9 | |||
| 9cb57e2ff2 | |||
| cc0f050c50 | |||
| d75a733985 | |||
| 33d91dab55 | |||
| bd6807d655 | |||
| c6d15bb96f | |||
| e20cc3b4bb | |||
| 0baf7e5e2c | |||
| d9d4818d8a |
21
.clang-format
Normal file
@@ -0,0 +1,21 @@
|
||||
BasedOnStyle: Google
|
||||
IndentWidth: 4
|
||||
IndentAccessModifiers: true
|
||||
ColumnLimit: 0 # Sin límite de longitud de línea
|
||||
BreakBeforeBraces: Attach # Llaves en la misma línea
|
||||
AllowShortIfStatementsOnASingleLine: true
|
||||
AllowShortBlocksOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AlignOperands: DontAlign
|
||||
AlignAfterOpenBracket: DontAlign
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
ContinuationIndentWidth: 4
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
Cpp11BracedListStyle: true
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
AllowAllConstructorInitializersOnNextLine: false
|
||||
PackConstructorInitializers: Never
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
83
.clang-tidy
Normal file
@@ -0,0 +1,83 @@
|
||||
Checks: >
|
||||
readability-*,
|
||||
modernize-*,
|
||||
performance-*,
|
||||
bugprone-unchecked-optional-access,
|
||||
bugprone-sizeof-expression,
|
||||
bugprone-suspicious-missing-comma,
|
||||
bugprone-suspicious-index,
|
||||
bugprone-undefined-memory-manipulation,
|
||||
bugprone-use-after-move,
|
||||
bugprone-out-of-bound-access,
|
||||
-readability-identifier-length,
|
||||
-readability-magic-numbers,
|
||||
-bugprone-narrowing-conversions,
|
||||
-performance-enum-size,
|
||||
-performance-inefficient-string-concatenation,
|
||||
-bugprone-integer-division,
|
||||
-bugprone-easily-swappable-parameters,
|
||||
|
||||
WarningsAsErrors: '*'
|
||||
# Solo incluir archivos de tu código fuente
|
||||
HeaderFilterRegex: '^source/(sections|ui)/.*'
|
||||
FormatStyle: file
|
||||
|
||||
CheckOptions:
|
||||
# Variables locales en snake_case
|
||||
- { key: readability-identifier-naming.VariableCase, value: lower_case }
|
||||
|
||||
# Miembros privados en snake_case con sufijo _
|
||||
- { key: readability-identifier-naming.PrivateMemberCase, value: lower_case }
|
||||
- { key: readability-identifier-naming.PrivateMemberSuffix, value: _ }
|
||||
|
||||
# Miembros protegidos en snake_case con sufijo _
|
||||
- { key: readability-identifier-naming.ProtectedMemberCase, value: lower_case }
|
||||
- { key: readability-identifier-naming.ProtectedMemberSuffix, value: _ }
|
||||
|
||||
# Miembros públicos en snake_case (sin sufijo)
|
||||
- { key: readability-identifier-naming.PublicMemberCase, value: lower_case }
|
||||
|
||||
# Namespaces en CamelCase
|
||||
- { key: readability-identifier-naming.NamespaceCase, value: CamelCase }
|
||||
|
||||
# Variables estáticas privadas como miembros privados
|
||||
- { key: readability-identifier-naming.StaticVariableCase, value: lower_case }
|
||||
- { key: readability-identifier-naming.StaticVariableSuffix, value: _ }
|
||||
|
||||
# Constantes estáticas sin sufijo
|
||||
- { key: readability-identifier-naming.StaticConstantCase, value: UPPER_CASE }
|
||||
|
||||
# Constantes globales en UPPER_CASE
|
||||
- { key: readability-identifier-naming.GlobalConstantCase, value: UPPER_CASE }
|
||||
|
||||
# Variables constexpr globales en UPPER_CASE
|
||||
- { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE }
|
||||
|
||||
# Constantes locales en UPPER_CASE
|
||||
- { key: readability-identifier-naming.LocalConstantCase, value: UPPER_CASE }
|
||||
|
||||
# Constexpr miembros en UPPER_CASE (sin sufijo)
|
||||
- { key: readability-identifier-naming.ConstexprMemberCase, value: UPPER_CASE }
|
||||
|
||||
# Constexpr miembros privados/protegidos con sufijo _
|
||||
- { key: readability-identifier-naming.ConstexprMethodCase, value: UPPER_CASE }
|
||||
|
||||
# Clases, structs y enums en CamelCase
|
||||
- { key: readability-identifier-naming.ClassCase, value: CamelCase }
|
||||
- { key: readability-identifier-naming.StructCase, value: CamelCase }
|
||||
- { key: readability-identifier-naming.EnumCase, value: CamelCase }
|
||||
|
||||
# Valores de enums en UPPER_CASE
|
||||
- { key: readability-identifier-naming.EnumConstantCase, value: UPPER_CASE }
|
||||
|
||||
# Métodos en camelBack (sin sufijos)
|
||||
- { key: readability-identifier-naming.MethodCase, value: camelBack }
|
||||
- { key: readability-identifier-naming.PrivateMethodCase, value: camelBack }
|
||||
- { key: readability-identifier-naming.ProtectedMethodCase, value: camelBack }
|
||||
- { key: readability-identifier-naming.PublicMethodCase, value: camelBack }
|
||||
|
||||
# Funciones en camelBack
|
||||
- { key: readability-identifier-naming.FunctionCase, value: camelBack }
|
||||
|
||||
# Parámetros en lower_case
|
||||
- { key: readability-identifier-naming.ParameterCase, value: lower_case }
|
||||
8
.gitignore
vendored
@@ -1,4 +1,4 @@
|
||||
.vscode
|
||||
.vscode/
|
||||
*data/config/config.txt
|
||||
*stats.txt
|
||||
*.DS_Store
|
||||
@@ -11,6 +11,8 @@ thumbs.db
|
||||
*.zip
|
||||
*.app
|
||||
*_debug*
|
||||
sync_jail_engine.sh
|
||||
jaildoctors_dilemma*
|
||||
todo
|
||||
todo
|
||||
build/
|
||||
linux_utils/
|
||||
.claude/
|
||||
156
CMakeLists.txt
Normal file
@@ -0,0 +1,156 @@
|
||||
# CMakeLists.txt
|
||||
|
||||
cmake_minimum_required(VERSION 3.10)
|
||||
project(jaildoctors_dilemma VERSION 1.00)
|
||||
|
||||
# Establecer estándar de C++
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||
|
||||
# Establece la política CMP0072 para indicar cómo se debe seleccionar la implementación de OpenGL.
|
||||
# En este caso, se elige la opción "GLVND", que utiliza bibliotecas modernas y modulares (libOpenGL, libGLX),
|
||||
# en lugar de la biblioteca OpenGL clásica (libGL). Esto mejora la compatibilidad con drivers recientes
|
||||
# y evita ambigüedades cuando se encuentran múltiples implementaciones de OpenGL en el sistema.
|
||||
cmake_policy(SET CMP0072 NEW)
|
||||
set(OpenGL_GL_PREFERENCE GLVND)
|
||||
|
||||
# --- GENERACIÓN DE VERSIÓN AUTOMÁTICA ---
|
||||
find_package(Git QUIET)
|
||||
if(GIT_FOUND)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --short=7 HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_QUIET
|
||||
)
|
||||
else()
|
||||
set(GIT_HASH "unknown")
|
||||
endif()
|
||||
|
||||
# Configurar archivo de versión
|
||||
configure_file(${CMAKE_SOURCE_DIR}/source/version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
|
||||
|
||||
# --- 1. LISTA EXPLÍCITA DE FUENTES ---
|
||||
set(APP_SOURCES
|
||||
# Core - Input
|
||||
source/core/input/global_inputs.cpp
|
||||
source/core/input/input.cpp
|
||||
source/core/input/mouse.cpp
|
||||
|
||||
# Core - Rendering
|
||||
source/core/rendering/gif.cpp
|
||||
source/core/rendering/screen.cpp
|
||||
source/core/rendering/surface.cpp
|
||||
source/core/rendering/surface_animated_sprite.cpp
|
||||
source/core/rendering/surface_moving_sprite.cpp
|
||||
source/core/rendering/surface_sprite.cpp
|
||||
source/core/rendering/text.cpp
|
||||
source/core/rendering/texture.cpp
|
||||
|
||||
# Core - Resources
|
||||
source/core/resources/asset.cpp
|
||||
source/core/resources/resource.cpp
|
||||
|
||||
# Core - System
|
||||
source/core/system/debug.cpp
|
||||
source/core/system/director.cpp
|
||||
|
||||
# Game - Entities
|
||||
source/game/entities/enemy.cpp
|
||||
source/game/entities/item.cpp
|
||||
source/game/entities/player.cpp
|
||||
|
||||
# Game - Configuration
|
||||
source/game/options.cpp
|
||||
|
||||
# Game - Gameplay
|
||||
source/game/gameplay/cheevos.cpp
|
||||
source/game/gameplay/item_tracker.cpp
|
||||
source/game/gameplay/room.cpp
|
||||
source/game/gameplay/room_tracker.cpp
|
||||
source/game/gameplay/scoreboard.cpp
|
||||
source/game/gameplay/stats.cpp
|
||||
|
||||
# Game - Scenes
|
||||
source/game/scenes/credits.cpp
|
||||
source/game/scenes/ending.cpp
|
||||
source/game/scenes/ending2.cpp
|
||||
source/game/scenes/game.cpp
|
||||
source/game/scenes/game_over.cpp
|
||||
source/game/scenes/loading_screen.cpp
|
||||
source/game/scenes/logo.cpp
|
||||
source/game/scenes/title.cpp
|
||||
|
||||
# Game - UI
|
||||
source/game/ui/notifier.cpp
|
||||
|
||||
# Utils
|
||||
source/utils/delta_timer.cpp
|
||||
source/utils/global_events.cpp
|
||||
source/utils/utils.cpp
|
||||
|
||||
# Main
|
||||
source/main.cpp
|
||||
)
|
||||
|
||||
# Fuentes de librerías de terceros
|
||||
set(EXTERNAL_SOURCES
|
||||
source/external/jail_audio.cpp
|
||||
)
|
||||
|
||||
# Fuentes del sistema de renderizado
|
||||
set(RENDERING_SOURCES
|
||||
source/core/rendering/opengl/opengl_shader.cpp
|
||||
)
|
||||
|
||||
# Configuración de SDL3
|
||||
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
|
||||
message(STATUS "SDL3 encontrado: ${SDL3_INCLUDE_DIRS}")
|
||||
|
||||
# --- 2. AÑADIR EJECUTABLE ---
|
||||
add_executable(${PROJECT_NAME} ${APP_SOURCES} ${EXTERNAL_SOURCES} ${RENDERING_SOURCES})
|
||||
|
||||
# --- 3. DIRECTORIOS DE INCLUSIÓN ---
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||
"${CMAKE_SOURCE_DIR}/source"
|
||||
"${CMAKE_BINARY_DIR}"
|
||||
)
|
||||
|
||||
# Enlazar la librería SDL3
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3)
|
||||
|
||||
|
||||
# --- 4. CONFIGURACIÓN PLATAFORMAS Y COMPILADOR ---
|
||||
# Configuración de flags de compilación
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE -Wall)
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:RELEASE>:-Os -ffunction-sections -fdata-sections>)
|
||||
|
||||
# Definir _DEBUG en modo Debug
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<CONFIG:DEBUG>:_DEBUG>)
|
||||
|
||||
# Configuración específica para cada plataforma
|
||||
if(WIN32)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE WINDOWS_BUILD)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ws2_32 mingw32 opengl32)
|
||||
elseif(APPLE)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE MACOS_BUILD)
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE -Wno-deprecated)
|
||||
set(CMAKE_OSX_ARCHITECTURES "arm64")
|
||||
elseif(UNIX AND NOT APPLE)
|
||||
target_compile_definitions(${PROJECT_NAME} PRIVATE LINUX_BUILD)
|
||||
endif()
|
||||
|
||||
# Configuración común para OpenGL
|
||||
if(NOT WIN32)
|
||||
find_package(OpenGL REQUIRED)
|
||||
if(OPENGL_FOUND)
|
||||
message(STATUS "OpenGL encontrado: ${OPENGL_LIBRARIES}")
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENGL_LIBRARIES})
|
||||
else()
|
||||
message(FATAL_ERROR "OpenGL no encontrado")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Especificar la ubicación del ejecutable
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||
27
Makefile
@@ -1,8 +1,8 @@
|
||||
executable = jaildoctors_dilemma
|
||||
source = source/*.cpp source/jail_engine/*.cpp
|
||||
source = source/*.cpp
|
||||
appName = JailDoctor's Dilemma
|
||||
releaseFolder = jdd_release
|
||||
version = v1.08
|
||||
version = v1.10
|
||||
|
||||
# Release names
|
||||
windowsRelease = $(executable)-$(version)-win32-x64.zip
|
||||
@@ -10,14 +10,17 @@ macosIntelRelease = $(executable)-$(version)-macos-intel.dmg
|
||||
macosAppleSiliconRelease = $(executable)-$(version)-macos-apple-silicon.dmg
|
||||
linuxRelease = $(executable)-$(version)-linux.tar.gz
|
||||
|
||||
# Specify the C++ standard
|
||||
cpp_standard = c++20
|
||||
|
||||
windows:
|
||||
@echo off
|
||||
g++ $(source) -std=c++11 -Wall -Os -lmingw32 -lws2_32 -lSDL2main -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows -o "$(executable).exe"
|
||||
g++ $(source) -std=$(cpp_standard) -Wall -Os -lmingw32 -lws2_32 -lSDL2main -lSDL2 -lopengl32 -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows -o "$(executable).exe"
|
||||
strip -s -R .comment -R .gnu.version "$(executable).exe" --strip-unneeded
|
||||
|
||||
windows_debug:
|
||||
@echo off
|
||||
g++ $(source) -D DEBUG -std=c++11 -Wall -Os -lmingw32 -lws2_32 -lSDL2main -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows -o "$(executable)_debug.exe"
|
||||
g++ $(source) -D DEBUG -std=$(cpp_standard) -Wall -Os -lmingw32 -lws2_32 -lSDL2main -lSDL2 -lopengl32 -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows -o "$(executable)_debug.exe"
|
||||
strip -s -R .comment -R .gnu.version "$(executable)_debug.exe" --strip-unneeded
|
||||
|
||||
windows_release:
|
||||
@@ -38,7 +41,7 @@ windows_release:
|
||||
powershell Copy-Item "release\*.dll" -Destination "$(releaseFolder)"
|
||||
|
||||
# Build
|
||||
g++ $(source) -std=c++11 -Wall -Os -lmingw32 -lws2_32 -lSDL2main -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows -o "$(releaseFolder)/$(executable).exe"
|
||||
g++ $(source) -std=$(cpp_standard) -Wall -Os -lmingw32 -lws2_32 -lSDL2main -lSDL2 -lopengl32 -ffunction-sections -fdata-sections -Wl,--gc-sections -static-libstdc++ -Wl,-subsystem,windows -o "$(releaseFolder)/$(executable).exe"
|
||||
strip -s -R .comment -R .gnu.version "$(releaseFolder)/$(executable).exe" --strip-unneeded
|
||||
|
||||
# Create ZIP
|
||||
@@ -49,10 +52,10 @@ windows_release:
|
||||
powershell if (Test-Path "$(releaseFolder)") {Remove-Item "$(releaseFolder)" -Recurse -Force}
|
||||
|
||||
macos:
|
||||
clang++ $(source) -std=c++11 -Wall -Os -lSDL2 -ffunction-sections -fdata-sections -o "$(executable)"
|
||||
clang++ $(source) -std=$(cpp_standard) -Wall -Os -lSDL2 -framework OpenGL -Wno-deprecated -ffunction-sections -fdata-sections -o "$(executable)"
|
||||
|
||||
macos_debug:
|
||||
clang++ $(source) -D DEBUG -std=c++11 -Wall -Os -lSDL2 -ffunction-sections -fdata-sections -o "$(executable)_debug"
|
||||
clang++ $(source) -D DEBUG -std=$(cpp_standard) -Wall -Os -lSDL2 -framework OpenGL -Wno-deprecated -ffunction-sections -fdata-sections -o "$(executable)_debug"
|
||||
|
||||
macos_release:
|
||||
# Remove data and possible data from previous builds
|
||||
@@ -87,7 +90,7 @@ macos_release:
|
||||
ln -s /Applications "$(releaseFolder)"/Applications
|
||||
|
||||
# Build INTEL
|
||||
clang++ $(source) -D MACOS_BUNDLE -std=c++11 -Wall -Os -framework SDL2 -F ./Frameworks -ffunction-sections -fdata-sections -o "$(releaseFolder)/$(appName).app/Contents/MacOS/$(executable)" -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.12
|
||||
clang++ $(source) -D MACOS_BUNDLE -std=$(cpp_standard) -Wall -Os -framework SDL2 -F ./Frameworks -framework OpenGL -Wno-deprecated -ffunction-sections -fdata-sections -o "$(releaseFolder)/$(appName).app/Contents/MacOS/$(executable)" -rpath @executable_path/../Frameworks/ -target x86_64-apple-macos10.15
|
||||
|
||||
# Build INTEL DMG
|
||||
hdiutil create tmp.dmg -ov -volname "$(appName)" -fs HFS+ -srcfolder "$(releaseFolder)"
|
||||
@@ -95,7 +98,7 @@ macos_release:
|
||||
rm -f tmp.dmg
|
||||
|
||||
# Build APPLE SILICON
|
||||
clang++ $(source) -D MACOS_BUNDLE -std=c++11 -Wall -Os -framework SDL2 -F ./Frameworks -ffunction-sections -fdata-sections -o "$(releaseFolder)/$(appName).app/Contents/MacOS/$(executable)" -rpath @executable_path/../Frameworks/ -target arm64-apple-macos11
|
||||
clang++ $(source) -D MACOS_BUNDLE -std=$(cpp_standard) -Wall -Os -framework SDL2 -F ./Frameworks -framework OpenGL -Wno-deprecated -ffunction-sections -fdata-sections -o "$(releaseFolder)/$(appName).app/Contents/MacOS/$(executable)" -rpath @executable_path/../Frameworks/ -target arm64-apple-macos11
|
||||
|
||||
# Build APPLE SILICON DMG
|
||||
hdiutil create tmp.dmg -ov -volname "$(appName)" -fs HFS+ -srcfolder "$(releaseFolder)"
|
||||
@@ -107,11 +110,11 @@ macos_release:
|
||||
rm -rdf "$(releaseFolder)"
|
||||
|
||||
linux:
|
||||
g++ $(source) -std=c++11 -Wall -Os -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -o "$(executable)"
|
||||
g++ $(source) -std=$(cpp_standard) -Wall -Os -lSDL2 -lGL -ffunction-sections -fdata-sections -Wl,--gc-sections -o "$(executable)"
|
||||
strip -s -R .comment -R .gnu.version "$(executable)" --strip-unneeded
|
||||
|
||||
linux_debug:
|
||||
g++ $(source) -D DEBUG -std=c++11 -Wall -Os -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -o "$(executable)_debug"
|
||||
g++ $(source) -D DEBUG -std=$(cpp_standard) -Wall -Os -lSDL2 -lGL -ffunction-sections -fdata-sections -Wl,--gc-sections -o "$(executable)_debug"
|
||||
strip -s -R .comment -R .gnu.version "$(executable)_debug" --strip-unneeded
|
||||
|
||||
linux_release:
|
||||
@@ -131,7 +134,7 @@ linux_release:
|
||||
rm -f "$(releaseFolder)/data/room/standard.tsx"
|
||||
|
||||
# Build
|
||||
g++ $(source) -std=c++11 -Wall -Os -lSDL2 -ffunction-sections -fdata-sections -Wl,--gc-sections -o "$(releaseFolder)/$(executable)"
|
||||
g++ $(source) -std=$(cpp_standard) -Wall -Os -lSDL2 -lGL -ffunction-sections -fdata-sections -Wl,--gc-sections -o "$(releaseFolder)/$(executable)"
|
||||
strip -s -R .comment -R .gnu.version "$(releaseFolder)/$(executable)" --strip-unneeded
|
||||
|
||||
# Pack files
|
||||
|
||||
102
README.md
@@ -1,89 +1,69 @@
|
||||
# JailDoctor's Dilemma
|
||||
|
||||
JailDoc es un Jailer. A los Jailers les gusta empezar proyectos. A nadie le gusta terminarlos. Los Jailers viven en la Jail. A la Jail va uno a empezar proyectos. A la Jail va uno a enseñar sus proyectos. A la Jail va uno a aprender como empezar nuevos proyectos. A la Jail va uno a ayudar a sus compañeros a que empiecen nuevos proyectos.
|
||||
<img src="https://php.sustancia.synology.me/images/jdd/jaildoctors_dilemma_cover_web.png" width="300" align="left" style="margin-right: 20px; margin-bottom: 10px;" alt="JailDoctor's Dilemma Cover">
|
||||
|
||||
|
||||
JailDoc és un Jailer. Als Jailers els agrada començar projectes. A ningú li agrada acabar-los. Els Jailers viuen a la Jail. A la Jail s'hi va a començar projectes. A la Jail s'hi va a ensenyar els projectes. A la Jail s'hi va a aprendre com començar nous projectes. A la Jail s'hi va a ajudar els companys a començar nous projectes.
|
||||
|
||||

|
||||
JailDoc és un Jailer destacat entre els Jailers. Té més projectes començats que ningú i és qui més ajuda als altres a iniciar els seus.
|
||||
|
||||
|
||||
Però un dia, va passar una cosa inesperada. Algú va acabar un projecte. Algú va alliberar el *Puzzle Jail Facker*. Un autèntic desaprensiu.
|
||||
|
||||
JailDoc es un Jailer destacado entre los Jailers. Tiene más proyectos empezados que nadie y es el que más ayuda a que los demas empiecen los suyos.
|
||||
Això va fer que JailDoc prenguera una decisió: acabaria i lliuraria un dels seus projectes. Però, quin? *JailBattle*? *Sigmasuá*? *Calculín Doom*? Quin dilema! Finalment, es va arromangar i va decidir acabar i lliurar **tots** els seus projectes inacabats. Ho aconseguirà?
|
||||
|
||||
|
||||
<br clear="left">
|
||||
|
||||
Un día, ocurrió algo. Alguien terminó un proyecto. Alguien liberó el *Puzzle Jail Facker*. Algún desaprensivo.
|
||||
---
|
||||
|
||||
|
||||
## Jugabilitat
|
||||
|
||||
Esto hizo que JailDoc decidiera terminar y entregar uno de sus proyectos, pero, ¿cual? ¿JailBattle? ¿Sigmasuá? ¿Calculín Doom? Menudo dilema. JailDoc se arremangó y decidió finalizar y entregar todos sus proyectos inacabados. ¿Lo logrará?
|
||||
Ajuda a JailDoc a recuperar les peces dels seus projectes, que estan escampades per qualsevol racó de l'Univers Jailer. Hi ha més de **150 peces** repartides en **60 pantalles**. Algunes són senzilles, però en altres hauràs de calcular molt bé els teus moviments si no vols acabar com un *arounder* més.
|
||||
|
||||
|
||||

|
||||
|
||||
## Jugabilidad
|
||||
Quan hages recuperat la major part de les peces, dirigeix-te a la Jail per mostrar als Jailers com es finalitza un projecte. Però compte! Bry no et deixarà entrar així com així. Només aquells que han creat un *Fire Effect* o un *Facedor de Tornejos* són dignes d'aquesta fita.
|
||||
|
||||
Ayuda a JailDoc a recuperar las partes de su proyecto que estan desperdigadas por cualquier lugar del Universo Jailer. Hay mas de **150 piezas** desperdigadas por **60 pantallas**. Algunas son un paseo, pero en otras tendras que calcular muy bien tus movimientos si no quieres acabar como un arounder del montón.
|
||||
---
|
||||
|
||||
|
||||
## Controls
|
||||
|
||||

|
||||
El joc permet tant l'ús del teclat com d'un comandament. Les tecles per a jugar són les següents:
|
||||
|
||||
|
||||
- **Cursors**: Per moure's a l'esquerra o dreta i per saltar. Es poden modificar les tecles en el fitxer de configuració, triant entre aquestes opcions:
|
||||
- O, P per moure's i Q per saltar.
|
||||
- A, D per moure's i W per saltar.
|
||||
|
||||
Cuando consigas recuperar gran parte de las piezas desperdigadas, dirigete a la Jail a mostrar a los Jailers como se termina un proyecto. Ten en cuenta que Bry no te dejará entrar. Solo aquellos que han realizado un *Fire Effect* o un *Facedor de Tornejos* son dignos de tal privilegio.
|
||||
- **Tecla M**: Activa o desactiva la música.
|
||||
- **Tecla P**: Pausa el joc.
|
||||
- **Tecla ESC**: Ix del joc si estàs jugant. Tanca el programa en qualsevol altra circumstància.
|
||||
- **Tecla F1**: Disminueix la mida de la finestra.
|
||||
- **Tecla F2**: Augmenta la mida de la finestra.
|
||||
- **Tecla F3**: Alterna entre el mode de pantalla completa i el mode finestra.
|
||||
- **Tecla F4**: Activa o desactiva els shaders.
|
||||
- **Tecla F5**: Estableix la següent paleta de colors.
|
||||
- **Tecla F6**: Estableix la paleta de colors prèvia.
|
||||
- **Tecla F7**: Activa o desactiva el escalat exacte.
|
||||
- **Tecla B**: Activa o desactiva el marge de colors.
|
||||
|
||||
|
||||

|
||||
|
||||
## Controles
|
||||
---
|
||||
|
||||
El juego permite tanto el uso del teclado como de un mando de control. Las teclas para manejar el juego son las siguientes:
|
||||
## Dades del programa
|
||||
|
||||
|
||||
El programa guarda automàticament la configuració del mode de vídeo i les estadístiques del joc a la teua carpeta personal del sistema. La ubicació d'aquesta carpeta depén del sistema operatiu que utilitzes:
|
||||
|
||||
- **Cursores**: Para mover a izquierda o derecha a JailDoc y para saltar. En el fichero de configuración se pueden cambiar las teclas por otras opciones prefijadas: O, P para moverse y Q para saltar o A, D para moverse y W para saltar.
|
||||
- **Windows**: `C:\Users\<nom_d'usuari>\AppData\Roaming\jailgames\jaildoctors_dilemma`
|
||||
- **MacOS**: `~/Library/Application Support/jailgames/jaildoctors_dilemma`
|
||||
- **Linux**: `~/.jailgames/jaildoctors_dilemma`
|
||||
|
||||
- **Tecla M**: Activa o desactiva la música
|
||||
Dins de la carpeta es troba el fitxer de configuració `config.txt`, on es pot modificar la configuració per connectar-se al servei en línia, i els fitxers `stats.csv` i `stats_buffer.csv`, que contenen informació sobre les estadístiques del joc.
|
||||
|
||||
- **Tecla P**: Pone en pausa el juego
|
||||
---
|
||||
|
||||
- **Tecla ESC**: Sale del juego si estas jugando. Sale del programa en cualquier otra circunstancia
|
||||
## Agraïments
|
||||
|
||||
- **Tecla F1**: Disminuye el tamaño de la ventana
|
||||
Gràcies, com sempre, a tots els Jailers per motivar-me a crear aquest joc i per ajudar-me en els moments de dubte en escriure el codi. I, com sempre, un agraïment especial a JailDoc per la seua unitat de *Jail_Audio* i per qualsevol altre codi, ajuda o ensenyament que haja necessitat per a completar el programa.
|
||||
|
||||
- **Tecla F2**: Aumenta el tamaño de la ventana
|
||||
Si no he perdut el compte, aquest és el quart joc que aconseguisc crear.
|
||||
|
||||
- **Tecla F3**: Cambia entre el modo de pantalla completa y el de ventana
|
||||
|
||||
- **Tecla F5**: Cambia la paleta de colores del juego
|
||||
|
||||
- **Tecla B**: Activa o desactiva el borde de colores de la pantalla cuando el programa se ejecuta en modo de ventana
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
## Datos del programa
|
||||
El programa guarda automáticamente la configuración del modo de video y las estadísticas de juego en tu carpeta personal del sistema. Esta carpeta tiene una ubicación distinta en función del sistema operativo que utilices.
|
||||
|
||||
En **Windows** se encuentra en:
|
||||
`C:\Users\<nombre_de_usuario>\AppData\Roaming\jailgames\jaildoctors_dilemma`
|
||||
|
||||
En **MacOS** se encuentra en:
|
||||
`~/Library/Application Support/jailgames/jaildoctors_dilemma`
|
||||
|
||||
En **Linux** se encuentra en:
|
||||
`~/./jailgames/jaildoctors_dilemma`
|
||||
|
||||
En la carpeta está el fichero de configuración `config.txt` donde se puede modificar la configuración para conectarse al servicio online y los ficheros `stats.csv` y `stats_buffer.csv` con información de las estadisticas de juego.
|
||||
|
||||
## Agradecimientos
|
||||
|
||||
Agradecimientos como siempre a todos los Jailers por motivarme a hacer el juego y ayudarme en los momentos de duda a la hora de escribir el código. Y, como siempre, en especial a JailDoc por su unidad de Jail_Audio y cualquier otro código/ayuda/enseñanzas que haya necesitado para terminar el programa.
|
||||
|
||||
|
||||
|
||||
Si no me he descontado, este es el cuarto juego que consigo crear.
|
||||
|
||||
|
||||
|
||||
*13 de noviembre de 2022, JailDesigner*
|
||||
*13 de novembre de 2022, JailDesigner*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
frameWidth=8
|
||||
frameHeight=8
|
||||
frame_width=8
|
||||
frame_height=8
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/credits/shine.gif
Normal file
|
After Width: | Height: | Size: 107 B |
|
Before Width: | Height: | Size: 148 B |
BIN
data/ending/ending1.gif
Normal file
|
After Width: | Height: | Size: 1014 B |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
BIN
data/ending/ending2.gif
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
BIN
data/ending/ending3.gif
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
BIN
data/ending/ending4.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
BIN
data/ending/ending5.gif
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
@@ -1,5 +1,5 @@
|
||||
frameWidth=8
|
||||
frameHeight=16
|
||||
frame_width=8
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/abad.gif
Normal file
|
After Width: | Height: | Size: 130 B |
|
Before Width: | Height: | Size: 267 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/abad_bell.gif
Normal file
|
After Width: | Height: | Size: 384 B |
|
Before Width: | Height: | Size: 555 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=8
|
||||
frameHeight=8
|
||||
frame_width=8
|
||||
frame_height=8
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/amstrad_cs.gif
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/arounders_door.gif
Normal file
|
After Width: | Height: | Size: 198 B |
|
Before Width: | Height: | Size: 250 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/arounders_machine.gif
Normal file
|
After Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 234 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=9
|
||||
frameHeight=7
|
||||
frame_width=9
|
||||
frame_height=7
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/bat.gif
Normal file
|
After Width: | Height: | Size: 86 B |
|
Before Width: | Height: | Size: 134 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=8
|
||||
frameHeight=16
|
||||
frame_width=8
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/batman.gif
Normal file
|
After Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 241 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/batman_bell.gif
Normal file
|
After Width: | Height: | Size: 267 B |
|
Before Width: | Height: | Size: 415 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/batman_fire.gif
Normal file
|
After Width: | Height: | Size: 213 B |
|
Before Width: | Height: | Size: 343 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/bell.gif
Normal file
|
After Width: | Height: | Size: 412 B |
|
Before Width: | Height: | Size: 509 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=8
|
||||
frame_width=16
|
||||
frame_height=8
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/bin.gif
Normal file
|
After Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 174 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/bird.gif
Normal file
|
After Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 306 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=24
|
||||
frameHeight=32
|
||||
frame_width=24
|
||||
frame_height=32
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/breakout.gif
Normal file
|
After Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 180 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=10
|
||||
frameHeight=16
|
||||
frame_width=10
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/bry.gif
Normal file
|
After Width: | Height: | Size: 208 B |
|
Before Width: | Height: | Size: 253 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=8
|
||||
frameHeight=16
|
||||
frame_width=8
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/chip.gif
Normal file
|
After Width: | Height: | Size: 146 B |
|
Before Width: | Height: | Size: 208 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/code.gif
Normal file
|
After Width: | Height: | Size: 198 B |
|
Before Width: | Height: | Size: 319 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=8
|
||||
frameHeight=16
|
||||
frame_width=8
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/congo.gif
Normal file
|
After Width: | Height: | Size: 145 B |
|
Before Width: | Height: | Size: 231 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/crosshair.gif
Normal file
|
After Width: | Height: | Size: 213 B |
|
Before Width: | Height: | Size: 288 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/demon.gif
Normal file
|
After Width: | Height: | Size: 213 B |
|
Before Width: | Height: | Size: 329 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/dimallas.gif
Normal file
|
After Width: | Height: | Size: 212 B |
|
Before Width: | Height: | Size: 298 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=22
|
||||
frameHeight=16
|
||||
frame_width=22
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/dong.gif
Normal file
|
After Width: | Height: | Size: 355 B |
|
Before Width: | Height: | Size: 630 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/elsa.gif
Normal file
|
After Width: | Height: | Size: 236 B |
|
Before Width: | Height: | Size: 310 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/floppy.gif
Normal file
|
After Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 271 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=7
|
||||
frameHeight=7
|
||||
frame_width=7
|
||||
frame_height=7
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/flying_arounder.gif
Normal file
|
After Width: | Height: | Size: 73 B |
|
Before Width: | Height: | Size: 122 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||
BIN
data/enemies/guitar.gif
Normal file
|
After Width: | Height: | Size: 220 B |
|
Before Width: | Height: | Size: 306 B |
@@ -1,5 +1,5 @@
|
||||
frameWidth=16
|
||||
frameHeight=16
|
||||
frame_width=16
|
||||
frame_height=16
|
||||
|
||||
[animation]
|
||||
name=default
|
||||
|
||||