From a8c03863553a0dddb2196ae99a8ea6acaa0167c2 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 18 May 2026 16:39:59 +0200 Subject: [PATCH] Revert "skins: SkinManager + hot-swap (F7), classic/nes a data/skins/" This reverts commit ebfcad6f226aaee74ac814520d8aa52a5673976d. --- CLAUDE.md | 9 +- data/{skins/classic => }/gfx/balloon1.ani | 0 data/{skins/classic => }/gfx/balloon1.png | Bin data/{skins/classic => }/gfx/balloon2.ani | 0 data/{skins/classic => }/gfx/balloon2.png | Bin data/{skins/classic => }/gfx/balloon3.ani | 0 data/{skins/classic => }/gfx/balloon3.png | Bin data/{skins/classic => }/gfx/balloon4.ani | 0 data/{skins/classic => }/gfx/balloon4.png | Bin data/{skins/classic => }/gfx/bullet.png | Bin .../classic => }/gfx/game_buildings.png | Bin data/{skins/classic => }/gfx/game_clouds.png | Bin data/{skins/classic => }/gfx/game_grass.png | Bin .../classic => }/gfx/game_power_meter.png | Bin .../classic => }/gfx/game_sky_colors.png | Bin data/{skins/classic => }/gfx/game_text.png | Bin data/{skins/classic => }/gfx/intro.png | Bin data/{skins/classic => }/gfx/item_clock.ani | 0 data/{skins/classic => }/gfx/item_clock.png | Bin data/{skins/classic => }/gfx/item_coffee.ani | 0 data/{skins/classic => }/gfx/item_coffee.png | Bin .../classic => }/gfx/item_coffee_machine.ani | 0 .../classic => }/gfx/item_coffee_machine.png | Bin .../classic => }/gfx/item_points1_disk.ani | 0 .../classic => }/gfx/item_points1_disk.png | Bin .../classic => }/gfx/item_points2_gavina.ani | 0 .../classic => }/gfx/item_points2_gavina.png | Bin .../classic => }/gfx/item_points3_pacmar.ani | 0 .../classic => }/gfx/item_points3_pacmar.png | Bin data/{skins/classic => }/gfx/logo.png | Bin .../classic => }/gfx/menu_game_over.png | Bin .../classic => }/gfx/menu_game_over_end.png | Bin .../classic => }/gfx/player_arounder_body.png | Bin .../gfx/player_arounder_death.png | Bin .../classic => }/gfx/player_arounder_fire.png | Bin .../classic => }/gfx/player_arounder_head.png | Bin .../classic => }/gfx/player_arounder_legs.png | Bin .../classic => }/gfx/player_bal1_body.png | Bin .../classic => }/gfx/player_bal1_death.png | Bin .../classic => }/gfx/player_bal1_fire.png | Bin .../classic => }/gfx/player_bal1_head.png | Bin .../classic => }/gfx/player_bal1_legs.png | Bin data/{skins/classic => }/gfx/player_body.ani | 0 data/{skins/classic => }/gfx/player_death.ani | 0 data/{skins/classic => }/gfx/player_fire.ani | 0 data/{skins/classic => }/gfx/player_head.ani | 0 data/{skins/classic => }/gfx/player_legs.ani | 0 .../{skins/classic => }/gfx/title_bg_tile.png | Bin data/{skins/classic => }/gfx/title_coffee.png | Bin data/{skins/classic => }/gfx/title_crisis.png | Bin data/{skins/classic => }/gfx/title_dust.ani | 0 data/{skins/classic => }/gfx/title_dust.png | Bin .../classic => }/gfx/title_gradient.png | Bin data/lang/ba_BA.txt | 5 +- data/lang/en_UK.txt | 5 +- data/lang/es_ES.txt | 5 +- data/skins/classic/skin.yaml | 4 - data/skins/nes/gfx/balloon1.ani | 37 ---- data/skins/nes/gfx/balloon1.png | Bin 761 -> 0 bytes data/skins/nes/gfx/balloon2.ani | 37 ---- data/skins/nes/gfx/balloon2.png | Bin 1447 -> 0 bytes data/skins/nes/gfx/balloon3.ani | 37 ---- data/skins/nes/gfx/balloon3.png | Bin 2242 -> 0 bytes data/skins/nes/gfx/balloon4.ani | 44 ----- data/skins/nes/gfx/balloon4.png | Bin 4925 -> 0 bytes data/skins/nes/gfx/bullet.png | Bin 507 -> 0 bytes data/skins/nes/gfx/game_buildings.png | Bin 4397 -> 0 bytes data/skins/nes/gfx/game_clouds.png | Bin 734 -> 0 bytes data/skins/nes/gfx/game_grass.png | Bin 479 -> 0 bytes data/skins/nes/gfx/game_power_meter.png | Bin 380 -> 0 bytes data/skins/nes/gfx/game_sky_colors.png | Bin 1604 -> 0 bytes data/skins/nes/gfx/game_text.png | Bin 447 -> 0 bytes data/skins/nes/gfx/intro.png | Bin 13183 -> 0 bytes data/skins/nes/gfx/item_clock.ani | 9 - data/skins/nes/gfx/item_clock.png | Bin 334 -> 0 bytes data/skins/nes/gfx/item_coffee.ani | 9 - data/skins/nes/gfx/item_coffee.png | Bin 462 -> 0 bytes data/skins/nes/gfx/item_coffee_machine.ani | 9 - data/skins/nes/gfx/item_coffee_machine.png | Bin 553 -> 0 bytes data/skins/nes/gfx/item_points1_disk.ani | 9 - data/skins/nes/gfx/item_points1_disk.png | Bin 263 -> 0 bytes data/skins/nes/gfx/item_points2_gavina.ani | 9 - data/skins/nes/gfx/item_points2_gavina.png | Bin 422 -> 0 bytes data/skins/nes/gfx/item_points3_pacmar.ani | 9 - data/skins/nes/gfx/item_points3_pacmar.png | Bin 388 -> 0 bytes data/skins/nes/gfx/logo.png | Bin 2512 -> 0 bytes data/skins/nes/gfx/menu_game_over.png | Bin 3707 -> 0 bytes data/skins/nes/gfx/menu_game_over_end.png | Bin 3844 -> 0 bytes data/skins/nes/gfx/player_arounder_body.png | Bin 4859 -> 0 bytes data/skins/nes/gfx/player_arounder_death.png | Bin 1398 -> 0 bytes data/skins/nes/gfx/player_arounder_fire.png | Bin 887 -> 0 bytes data/skins/nes/gfx/player_arounder_head.png | Bin 1608 -> 0 bytes data/skins/nes/gfx/player_arounder_legs.png | Bin 443 -> 0 bytes data/skins/nes/gfx/player_bal1_body.png | Bin 2101 -> 0 bytes data/skins/nes/gfx/player_bal1_death.png | Bin 754 -> 0 bytes data/skins/nes/gfx/player_bal1_fire.png | Bin 736 -> 0 bytes data/skins/nes/gfx/player_bal1_head.png | Bin 895 -> 0 bytes data/skins/nes/gfx/player_bal1_legs.png | Bin 483 -> 0 bytes data/skins/nes/gfx/player_body.ani | 176 ------------------ data/skins/nes/gfx/player_death.ani | 9 - data/skins/nes/gfx/player_fire.ani | 9 - data/skins/nes/gfx/player_head.ani | 114 ------------ data/skins/nes/gfx/player_legs.ani | 16 -- data/skins/nes/gfx/title_bg_tile.png | Bin 914 -> 0 bytes data/skins/nes/gfx/title_coffee.png | Bin 827 -> 0 bytes data/skins/nes/gfx/title_crisis.png | Bin 869 -> 0 bytes data/skins/nes/gfx/title_dust.ani | 9 - data/skins/nes/gfx/title_dust.png | Bin 212 -> 0 bytes data/skins/nes/gfx/title_gradient.png | Bin 68554 -> 0 bytes data/skins/nes/skin.yaml | 4 - source/core/input/global_inputs.cpp | 16 -- source/core/input/global_inputs.hpp | 10 +- source/core/input/input.h | 13 +- source/core/locale/lang.h | 2 +- source/core/rendering/texture.cpp | 8 - source/core/rendering/texture.h | 7 +- source/core/resources/asset.cpp | 25 --- source/core/resources/asset.h | 9 +- source/core/resources/resource.cpp | 40 ---- source/core/resources/resource.h | 5 - source/core/resources/skin_manager.cpp | 133 ------------- source/core/resources/skin_manager.hpp | 66 ------- source/core/system/director.cpp | 125 ++++++------- source/game/options.cpp | 4 +- source/game/options.hpp | 1 - 125 files changed, 76 insertions(+), 962 deletions(-) rename data/{skins/classic => }/gfx/balloon1.ani (100%) rename data/{skins/classic => }/gfx/balloon1.png (100%) rename data/{skins/classic => }/gfx/balloon2.ani (100%) rename data/{skins/classic => }/gfx/balloon2.png (100%) rename data/{skins/classic => }/gfx/balloon3.ani (100%) rename data/{skins/classic => }/gfx/balloon3.png (100%) rename data/{skins/classic => }/gfx/balloon4.ani (100%) rename data/{skins/classic => }/gfx/balloon4.png (100%) rename data/{skins/classic => }/gfx/bullet.png (100%) rename data/{skins/classic => }/gfx/game_buildings.png (100%) rename data/{skins/classic => }/gfx/game_clouds.png (100%) rename data/{skins/classic => }/gfx/game_grass.png (100%) rename data/{skins/classic => }/gfx/game_power_meter.png (100%) rename data/{skins/classic => }/gfx/game_sky_colors.png (100%) rename data/{skins/classic => }/gfx/game_text.png (100%) rename data/{skins/classic => }/gfx/intro.png (100%) rename data/{skins/classic => }/gfx/item_clock.ani (100%) rename data/{skins/classic => }/gfx/item_clock.png (100%) rename data/{skins/classic => }/gfx/item_coffee.ani (100%) rename data/{skins/classic => }/gfx/item_coffee.png (100%) rename data/{skins/classic => }/gfx/item_coffee_machine.ani (100%) rename data/{skins/classic => }/gfx/item_coffee_machine.png (100%) rename data/{skins/classic => }/gfx/item_points1_disk.ani (100%) rename data/{skins/classic => }/gfx/item_points1_disk.png (100%) rename data/{skins/classic => }/gfx/item_points2_gavina.ani (100%) rename data/{skins/classic => }/gfx/item_points2_gavina.png (100%) rename data/{skins/classic => }/gfx/item_points3_pacmar.ani (100%) rename data/{skins/classic => }/gfx/item_points3_pacmar.png (100%) rename data/{skins/classic => }/gfx/logo.png (100%) rename data/{skins/classic => }/gfx/menu_game_over.png (100%) rename data/{skins/classic => }/gfx/menu_game_over_end.png (100%) rename data/{skins/classic => }/gfx/player_arounder_body.png (100%) rename data/{skins/classic => }/gfx/player_arounder_death.png (100%) rename data/{skins/classic => }/gfx/player_arounder_fire.png (100%) rename data/{skins/classic => }/gfx/player_arounder_head.png (100%) rename data/{skins/classic => }/gfx/player_arounder_legs.png (100%) rename data/{skins/classic => }/gfx/player_bal1_body.png (100%) rename data/{skins/classic => }/gfx/player_bal1_death.png (100%) rename data/{skins/classic => }/gfx/player_bal1_fire.png (100%) rename data/{skins/classic => }/gfx/player_bal1_head.png (100%) rename data/{skins/classic => }/gfx/player_bal1_legs.png (100%) rename data/{skins/classic => }/gfx/player_body.ani (100%) rename data/{skins/classic => }/gfx/player_death.ani (100%) rename data/{skins/classic => }/gfx/player_fire.ani (100%) rename data/{skins/classic => }/gfx/player_head.ani (100%) rename data/{skins/classic => }/gfx/player_legs.ani (100%) rename data/{skins/classic => }/gfx/title_bg_tile.png (100%) rename data/{skins/classic => }/gfx/title_coffee.png (100%) rename data/{skins/classic => }/gfx/title_crisis.png (100%) rename data/{skins/classic => }/gfx/title_dust.ani (100%) rename data/{skins/classic => }/gfx/title_dust.png (100%) rename data/{skins/classic => }/gfx/title_gradient.png (100%) delete mode 100644 data/skins/classic/skin.yaml delete mode 100644 data/skins/nes/gfx/balloon1.ani delete mode 100644 data/skins/nes/gfx/balloon1.png delete mode 100644 data/skins/nes/gfx/balloon2.ani delete mode 100644 data/skins/nes/gfx/balloon2.png delete mode 100644 data/skins/nes/gfx/balloon3.ani delete mode 100644 data/skins/nes/gfx/balloon3.png delete mode 100644 data/skins/nes/gfx/balloon4.ani delete mode 100644 data/skins/nes/gfx/balloon4.png delete mode 100644 data/skins/nes/gfx/bullet.png delete mode 100644 data/skins/nes/gfx/game_buildings.png delete mode 100644 data/skins/nes/gfx/game_clouds.png delete mode 100644 data/skins/nes/gfx/game_grass.png delete mode 100644 data/skins/nes/gfx/game_power_meter.png delete mode 100644 data/skins/nes/gfx/game_sky_colors.png delete mode 100644 data/skins/nes/gfx/game_text.png delete mode 100644 data/skins/nes/gfx/intro.png delete mode 100644 data/skins/nes/gfx/item_clock.ani delete mode 100644 data/skins/nes/gfx/item_clock.png delete mode 100644 data/skins/nes/gfx/item_coffee.ani delete mode 100644 data/skins/nes/gfx/item_coffee.png delete mode 100644 data/skins/nes/gfx/item_coffee_machine.ani delete mode 100644 data/skins/nes/gfx/item_coffee_machine.png delete mode 100644 data/skins/nes/gfx/item_points1_disk.ani delete mode 100644 data/skins/nes/gfx/item_points1_disk.png delete mode 100644 data/skins/nes/gfx/item_points2_gavina.ani delete mode 100644 data/skins/nes/gfx/item_points2_gavina.png delete mode 100644 data/skins/nes/gfx/item_points3_pacmar.ani delete mode 100644 data/skins/nes/gfx/item_points3_pacmar.png delete mode 100644 data/skins/nes/gfx/logo.png delete mode 100644 data/skins/nes/gfx/menu_game_over.png delete mode 100644 data/skins/nes/gfx/menu_game_over_end.png delete mode 100644 data/skins/nes/gfx/player_arounder_body.png delete mode 100644 data/skins/nes/gfx/player_arounder_death.png delete mode 100644 data/skins/nes/gfx/player_arounder_fire.png delete mode 100644 data/skins/nes/gfx/player_arounder_head.png delete mode 100644 data/skins/nes/gfx/player_arounder_legs.png delete mode 100644 data/skins/nes/gfx/player_bal1_body.png delete mode 100644 data/skins/nes/gfx/player_bal1_death.png delete mode 100644 data/skins/nes/gfx/player_bal1_fire.png delete mode 100644 data/skins/nes/gfx/player_bal1_head.png delete mode 100644 data/skins/nes/gfx/player_bal1_legs.png delete mode 100644 data/skins/nes/gfx/player_body.ani delete mode 100644 data/skins/nes/gfx/player_death.ani delete mode 100644 data/skins/nes/gfx/player_fire.ani delete mode 100644 data/skins/nes/gfx/player_head.ani delete mode 100644 data/skins/nes/gfx/player_legs.ani delete mode 100644 data/skins/nes/gfx/title_bg_tile.png delete mode 100644 data/skins/nes/gfx/title_coffee.png delete mode 100644 data/skins/nes/gfx/title_crisis.png delete mode 100644 data/skins/nes/gfx/title_dust.ani delete mode 100644 data/skins/nes/gfx/title_dust.png delete mode 100644 data/skins/nes/gfx/title_gradient.png delete mode 100644 data/skins/nes/skin.yaml delete mode 100644 source/core/resources/skin_manager.cpp delete mode 100644 source/core/resources/skin_manager.hpp diff --git a/CLAUDE.md b/CLAUDE.md index 4ba99eb..00aa4c0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -84,19 +84,14 @@ Pipeline SDL3 GPU portat de `coffee_crisis_arcade_edition`. El canvas 256×192 e - `videoGpuPreferredDriver` (string, buit = auto) - `videoShaderEnabled` (bool) - `videoShaderType` (0=POSTFX, 1=CRTPI) -- **Hotkeys** (provisionals fins que hi hagi menú d'opcions): `F4` activa/desactiva post-procesado · `F5` alterna POSTFX ↔ CRTPI (només si està actiu) · `F6` següent preset (només si està actiu) · `F7` següent skin. No hi ha tecla per a preset anterior. +- **Hotkeys** (provisionals fins que hi hagi menú d'opcions): `F4` activa/desactiva post-procesado · `F5` alterna POSTFX ↔ CRTPI (només si està actiu) · `F6` següent preset (només si està actiu). No hi ha tecla per a preset anterior. - **API** a `Screen`: `setGpuAcceleration`/`toggleGpuAcceleration`/`isGpuAccelerated`, `setShaderEnabled`/`toggleShaderEnabled`/`isShaderEnabled`, `setActiveShader`/`toggleActiveShader`/`getActiveShader`. Presets PostFX/CrtPi i cicle de presets encara **no** estan implementats — arribaran amb la migració a YAML. Per ara, valors per defecte hardcoded. -### Skins - -Els gràfics viuen sota `data/skins//gfx/`. Cada skin té un `skin.yaml` (id, display_name, gfx_dir). `SkinManager` (`core/resources/skin_manager.*`) escaneja manifests al boot, recorda l'skin activa (`Options::settings.skin`) i composa paths per a `Asset::addSkinAware()`. El canvi en calent (F7) és lliure: `Resource::reloadForSkin()` recorre el cache de Texture* i .ani fent `reLoadFromPath`/re-parse, mantenint stable pointer identity perquè els Sprites no s'invaliden. Les skins han de mantenir paritat de basenames i dimensions (recoloreds purs). De moment només es varia el contingut gràfic; logo, fades i altres comportaments són comuns. - ## Data Directory -- `data/skins//gfx/` — PNG spritesheets and `.ani` animation definition files per skin (`classic`, `nes`, ...) -- `data/skins//skin.yaml` — manifest de la skin (id, display_name, gfx_dir) +- `data/gfx/` — PNG spritesheets and `.ani` animation definition files - `data/font/` — bitmap font files - `data/music/` and `data/sound/` — audio assets - `data/lang/` — language files (es_ES, ba_BA, en_UK) diff --git a/data/skins/classic/gfx/balloon1.ani b/data/gfx/balloon1.ani similarity index 100% rename from data/skins/classic/gfx/balloon1.ani rename to data/gfx/balloon1.ani diff --git a/data/skins/classic/gfx/balloon1.png b/data/gfx/balloon1.png similarity index 100% rename from data/skins/classic/gfx/balloon1.png rename to data/gfx/balloon1.png diff --git a/data/skins/classic/gfx/balloon2.ani b/data/gfx/balloon2.ani similarity index 100% rename from data/skins/classic/gfx/balloon2.ani rename to data/gfx/balloon2.ani diff --git a/data/skins/classic/gfx/balloon2.png b/data/gfx/balloon2.png similarity index 100% rename from data/skins/classic/gfx/balloon2.png rename to data/gfx/balloon2.png diff --git a/data/skins/classic/gfx/balloon3.ani b/data/gfx/balloon3.ani similarity index 100% rename from data/skins/classic/gfx/balloon3.ani rename to data/gfx/balloon3.ani diff --git a/data/skins/classic/gfx/balloon3.png b/data/gfx/balloon3.png similarity index 100% rename from data/skins/classic/gfx/balloon3.png rename to data/gfx/balloon3.png diff --git a/data/skins/classic/gfx/balloon4.ani b/data/gfx/balloon4.ani similarity index 100% rename from data/skins/classic/gfx/balloon4.ani rename to data/gfx/balloon4.ani diff --git a/data/skins/classic/gfx/balloon4.png b/data/gfx/balloon4.png similarity index 100% rename from data/skins/classic/gfx/balloon4.png rename to data/gfx/balloon4.png diff --git a/data/skins/classic/gfx/bullet.png b/data/gfx/bullet.png similarity index 100% rename from data/skins/classic/gfx/bullet.png rename to data/gfx/bullet.png diff --git a/data/skins/classic/gfx/game_buildings.png b/data/gfx/game_buildings.png similarity index 100% rename from data/skins/classic/gfx/game_buildings.png rename to data/gfx/game_buildings.png diff --git a/data/skins/classic/gfx/game_clouds.png b/data/gfx/game_clouds.png similarity index 100% rename from data/skins/classic/gfx/game_clouds.png rename to data/gfx/game_clouds.png diff --git a/data/skins/classic/gfx/game_grass.png b/data/gfx/game_grass.png similarity index 100% rename from data/skins/classic/gfx/game_grass.png rename to data/gfx/game_grass.png diff --git a/data/skins/classic/gfx/game_power_meter.png b/data/gfx/game_power_meter.png similarity index 100% rename from data/skins/classic/gfx/game_power_meter.png rename to data/gfx/game_power_meter.png diff --git a/data/skins/classic/gfx/game_sky_colors.png b/data/gfx/game_sky_colors.png similarity index 100% rename from data/skins/classic/gfx/game_sky_colors.png rename to data/gfx/game_sky_colors.png diff --git a/data/skins/classic/gfx/game_text.png b/data/gfx/game_text.png similarity index 100% rename from data/skins/classic/gfx/game_text.png rename to data/gfx/game_text.png diff --git a/data/skins/classic/gfx/intro.png b/data/gfx/intro.png similarity index 100% rename from data/skins/classic/gfx/intro.png rename to data/gfx/intro.png diff --git a/data/skins/classic/gfx/item_clock.ani b/data/gfx/item_clock.ani similarity index 100% rename from data/skins/classic/gfx/item_clock.ani rename to data/gfx/item_clock.ani diff --git a/data/skins/classic/gfx/item_clock.png b/data/gfx/item_clock.png similarity index 100% rename from data/skins/classic/gfx/item_clock.png rename to data/gfx/item_clock.png diff --git a/data/skins/classic/gfx/item_coffee.ani b/data/gfx/item_coffee.ani similarity index 100% rename from data/skins/classic/gfx/item_coffee.ani rename to data/gfx/item_coffee.ani diff --git a/data/skins/classic/gfx/item_coffee.png b/data/gfx/item_coffee.png similarity index 100% rename from data/skins/classic/gfx/item_coffee.png rename to data/gfx/item_coffee.png diff --git a/data/skins/classic/gfx/item_coffee_machine.ani b/data/gfx/item_coffee_machine.ani similarity index 100% rename from data/skins/classic/gfx/item_coffee_machine.ani rename to data/gfx/item_coffee_machine.ani diff --git a/data/skins/classic/gfx/item_coffee_machine.png b/data/gfx/item_coffee_machine.png similarity index 100% rename from data/skins/classic/gfx/item_coffee_machine.png rename to data/gfx/item_coffee_machine.png diff --git a/data/skins/classic/gfx/item_points1_disk.ani b/data/gfx/item_points1_disk.ani similarity index 100% rename from data/skins/classic/gfx/item_points1_disk.ani rename to data/gfx/item_points1_disk.ani diff --git a/data/skins/classic/gfx/item_points1_disk.png b/data/gfx/item_points1_disk.png similarity index 100% rename from data/skins/classic/gfx/item_points1_disk.png rename to data/gfx/item_points1_disk.png diff --git a/data/skins/classic/gfx/item_points2_gavina.ani b/data/gfx/item_points2_gavina.ani similarity index 100% rename from data/skins/classic/gfx/item_points2_gavina.ani rename to data/gfx/item_points2_gavina.ani diff --git a/data/skins/classic/gfx/item_points2_gavina.png b/data/gfx/item_points2_gavina.png similarity index 100% rename from data/skins/classic/gfx/item_points2_gavina.png rename to data/gfx/item_points2_gavina.png diff --git a/data/skins/classic/gfx/item_points3_pacmar.ani b/data/gfx/item_points3_pacmar.ani similarity index 100% rename from data/skins/classic/gfx/item_points3_pacmar.ani rename to data/gfx/item_points3_pacmar.ani diff --git a/data/skins/classic/gfx/item_points3_pacmar.png b/data/gfx/item_points3_pacmar.png similarity index 100% rename from data/skins/classic/gfx/item_points3_pacmar.png rename to data/gfx/item_points3_pacmar.png diff --git a/data/skins/classic/gfx/logo.png b/data/gfx/logo.png similarity index 100% rename from data/skins/classic/gfx/logo.png rename to data/gfx/logo.png diff --git a/data/skins/classic/gfx/menu_game_over.png b/data/gfx/menu_game_over.png similarity index 100% rename from data/skins/classic/gfx/menu_game_over.png rename to data/gfx/menu_game_over.png diff --git a/data/skins/classic/gfx/menu_game_over_end.png b/data/gfx/menu_game_over_end.png similarity index 100% rename from data/skins/classic/gfx/menu_game_over_end.png rename to data/gfx/menu_game_over_end.png diff --git a/data/skins/classic/gfx/player_arounder_body.png b/data/gfx/player_arounder_body.png similarity index 100% rename from data/skins/classic/gfx/player_arounder_body.png rename to data/gfx/player_arounder_body.png diff --git a/data/skins/classic/gfx/player_arounder_death.png b/data/gfx/player_arounder_death.png similarity index 100% rename from data/skins/classic/gfx/player_arounder_death.png rename to data/gfx/player_arounder_death.png diff --git a/data/skins/classic/gfx/player_arounder_fire.png b/data/gfx/player_arounder_fire.png similarity index 100% rename from data/skins/classic/gfx/player_arounder_fire.png rename to data/gfx/player_arounder_fire.png diff --git a/data/skins/classic/gfx/player_arounder_head.png b/data/gfx/player_arounder_head.png similarity index 100% rename from data/skins/classic/gfx/player_arounder_head.png rename to data/gfx/player_arounder_head.png diff --git a/data/skins/classic/gfx/player_arounder_legs.png b/data/gfx/player_arounder_legs.png similarity index 100% rename from data/skins/classic/gfx/player_arounder_legs.png rename to data/gfx/player_arounder_legs.png diff --git a/data/skins/classic/gfx/player_bal1_body.png b/data/gfx/player_bal1_body.png similarity index 100% rename from data/skins/classic/gfx/player_bal1_body.png rename to data/gfx/player_bal1_body.png diff --git a/data/skins/classic/gfx/player_bal1_death.png b/data/gfx/player_bal1_death.png similarity index 100% rename from data/skins/classic/gfx/player_bal1_death.png rename to data/gfx/player_bal1_death.png diff --git a/data/skins/classic/gfx/player_bal1_fire.png b/data/gfx/player_bal1_fire.png similarity index 100% rename from data/skins/classic/gfx/player_bal1_fire.png rename to data/gfx/player_bal1_fire.png diff --git a/data/skins/classic/gfx/player_bal1_head.png b/data/gfx/player_bal1_head.png similarity index 100% rename from data/skins/classic/gfx/player_bal1_head.png rename to data/gfx/player_bal1_head.png diff --git a/data/skins/classic/gfx/player_bal1_legs.png b/data/gfx/player_bal1_legs.png similarity index 100% rename from data/skins/classic/gfx/player_bal1_legs.png rename to data/gfx/player_bal1_legs.png diff --git a/data/skins/classic/gfx/player_body.ani b/data/gfx/player_body.ani similarity index 100% rename from data/skins/classic/gfx/player_body.ani rename to data/gfx/player_body.ani diff --git a/data/skins/classic/gfx/player_death.ani b/data/gfx/player_death.ani similarity index 100% rename from data/skins/classic/gfx/player_death.ani rename to data/gfx/player_death.ani diff --git a/data/skins/classic/gfx/player_fire.ani b/data/gfx/player_fire.ani similarity index 100% rename from data/skins/classic/gfx/player_fire.ani rename to data/gfx/player_fire.ani diff --git a/data/skins/classic/gfx/player_head.ani b/data/gfx/player_head.ani similarity index 100% rename from data/skins/classic/gfx/player_head.ani rename to data/gfx/player_head.ani diff --git a/data/skins/classic/gfx/player_legs.ani b/data/gfx/player_legs.ani similarity index 100% rename from data/skins/classic/gfx/player_legs.ani rename to data/gfx/player_legs.ani diff --git a/data/skins/classic/gfx/title_bg_tile.png b/data/gfx/title_bg_tile.png similarity index 100% rename from data/skins/classic/gfx/title_bg_tile.png rename to data/gfx/title_bg_tile.png diff --git a/data/skins/classic/gfx/title_coffee.png b/data/gfx/title_coffee.png similarity index 100% rename from data/skins/classic/gfx/title_coffee.png rename to data/gfx/title_coffee.png diff --git a/data/skins/classic/gfx/title_crisis.png b/data/gfx/title_crisis.png similarity index 100% rename from data/skins/classic/gfx/title_crisis.png rename to data/gfx/title_crisis.png diff --git a/data/skins/classic/gfx/title_dust.ani b/data/gfx/title_dust.ani similarity index 100% rename from data/skins/classic/gfx/title_dust.ani rename to data/gfx/title_dust.ani diff --git a/data/skins/classic/gfx/title_dust.png b/data/gfx/title_dust.png similarity index 100% rename from data/skins/classic/gfx/title_dust.png rename to data/gfx/title_dust.png diff --git a/data/skins/classic/gfx/title_gradient.png b/data/gfx/title_gradient.png similarity index 100% rename from data/skins/classic/gfx/title_gradient.png rename to data/gfx/title_gradient.png diff --git a/data/lang/ba_BA.txt b/data/lang/ba_BA.txt index e1280a9..5a1d826 100644 --- a/data/lang/ba_BA.txt +++ b/data/lang/ba_BA.txt @@ -302,7 +302,4 @@ Shader Preset ## 101 - NOTIFICACIO HOTKEY -Torna a premer ESC per a eixir - -## 102 - NOTIFICACIO HOTKEY -Skin \ No newline at end of file +Torna a premer ESC per a eixir \ No newline at end of file diff --git a/data/lang/en_UK.txt b/data/lang/en_UK.txt index 71bafff..de41965 100644 --- a/data/lang/en_UK.txt +++ b/data/lang/en_UK.txt @@ -302,7 +302,4 @@ Shader Preset ## 101 - HOTKEY NOTIFICATION -Press ESC again to quit - -## 102 - HOTKEY NOTIFICATION -Skin \ No newline at end of file +Press ESC again to quit \ No newline at end of file diff --git a/data/lang/es_ES.txt b/data/lang/es_ES.txt index b6a9bdb..bb546ce 100644 --- a/data/lang/es_ES.txt +++ b/data/lang/es_ES.txt @@ -302,7 +302,4 @@ Shader Preset ## 101 - NOTIFICACION HOTKEY -Vuelve a pulsar ESC para salir - -## 102 - NOTIFICACION HOTKEY -Skin \ No newline at end of file +Vuelve a pulsar ESC para salir \ No newline at end of file diff --git a/data/skins/classic/skin.yaml b/data/skins/classic/skin.yaml deleted file mode 100644 index 302a666..0000000 --- a/data/skins/classic/skin.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Coffee Crisis - Classic skin manifest -name: classic -display_name: "Classic" -gfx_dir: gfx diff --git a/data/skins/nes/gfx/balloon1.ani b/data/skins/nes/gfx/balloon1.ani deleted file mode 100644 index 3fbe8c1..0000000 --- a/data/skins/nes/gfx/balloon1.ani +++ /dev/null @@ -1,37 +0,0 @@ -frameWidth=8 -frameHeight=8 - -[animation] -name=orange -speed=10 -loop=0 -frames=0,1,2,3,4,5,6,7,8,9 -[/animation] - -[animation] -name=blue -speed=20 -loop=0 -frames=12,13,14,15,16,17,18,19,20,21 -[/animation] - -[animation] -name=green -speed=10 -loop=0 -frames=24,25,26,27,28,29,30,31,32,33 -[/animation] - -[animation] -name=red -speed=20 -loop=0 -frames=36,37,38,39,40,41,42,43,44,45 -[/animation] - -[animation] -name=pop -speed=5 -loop=-1 -frames=48,49,50,51,52,53,54,55,56,57,58,59 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/balloon1.png b/data/skins/nes/gfx/balloon1.png deleted file mode 100644 index 7f1aef9dfc922c54a98982bf6bc872c32460fb32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 761 zcmbV~`%6=C7{ZH`Knh{Ro*9(dmm&o2)TFK<;se3XTmgBbw8 zf)^dmrzoJt&Ezz-{p0B76i$ixQC!eFLx!(4TYKtOIzDE~xhA;$ps>51AA{Aw(ip5}1FWBou57nr zBy9!>n94?GNh2eY>C#_opU-qItG2!Tg&hePc}=;T@zx03I%OW#@2v@sj?e?~jB&`b zVpl>{EGoGl=(Vb+py%%olZqc^r8*=Am5hp7b%sHM+=lkXK zH2rcB_+vHW7yElvhfIz8guS0+zw0VPU-;vu?Y}&)ke~&XL7g#HFhG1d9B?ArKX|Rw zhVFV0E0fDnCaq~}cHi*rozBS8Rnp$Q#Xh&97h&(*ja9da)FJ9U`Kl+%SPYge(s6mpxYfIBCQyC zKOM?md~4ddFl0!N;jDYDqO>d&YtWCP=#+VHvN$vl|Je(KPCH8_Ctv5xm+q&ZNiYIe zlzn&ihRf=#z$HW9HqFrNNGmNq*$q>-?GgJed4unY^b5ixQ(Eh*VBUCH*x#q+MZ|~q Has|>qfB=m5 diff --git a/data/skins/nes/gfx/balloon2.ani b/data/skins/nes/gfx/balloon2.ani deleted file mode 100644 index bbc4d86..0000000 --- a/data/skins/nes/gfx/balloon2.ani +++ /dev/null @@ -1,37 +0,0 @@ -frameWidth=13 -frameHeight=13 - -[animation] -name=orange -speed=10 -loop=0 -frames=0,1,2,3,4,5,6,7,8,9 -[/animation] - -[animation] -name=blue -speed=20 -loop=0 -frames=12,13,14,15,16,17,18,19,20,21 -[/animation] - -[animation] -name=green -speed=10 -loop=0 -frames=24,25,26,27,28,29,30,31,32,33 -[/animation] - -[animation] -name=red -speed=20 -loop=0 -frames=36,37,38,39,40,41,42,43,44,45 -[/animation] - -[animation] -name=pop -speed=5 -loop=-1 -frames=48,49,50,51,52,53,54,55,56,57,58,59 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/balloon2.png b/data/skins/nes/gfx/balloon2.png deleted file mode 100644 index 8f3356bde3f0e8d46a5c043925db64b20cabb9a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1447 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 diff --git a/data/skins/nes/gfx/bullet.png b/data/skins/nes/gfx/bullet.png deleted file mode 100644 index 88aaf65293988452c46fca9ee2a8bc30dd3ea215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^HbBh9!3-qtGoJkbq!^2X+?^QKos)S9*?YcqA_vqB*RHZ z4LF=NuSP#^Iy60D$N#Hk4nK~6HDeNLi7zcl({{k4 zbw{w;;{5dPuCg9Qz~cAaliZA==!Xaitekd^@|TOIscn=)aG_x zk#pKibP0l+XkK DWRwVk diff --git a/data/skins/nes/gfx/game_buildings.png b/data/skins/nes/gfx/game_buildings.png deleted file mode 100644 index 4427579acae8292cf60b7d12105a5440b112b26b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4397 zcmbVQi8s^>^uOQljG4h0Bg<2^;imyjhx_>LA!i>VYzOkPEa zJfU7$zM+>#WuoxXi=r%(>|rwI=l37{&hMUk?sCpO_k7M>&OPU5vUWPl$*hq906A9| zM{fXR#RNWuup-|)cc85(B*xp>0V-apkFGeStY3VbR`d#SIGp0*VpFd)`-{y%U4zAv z8Pgzp*W$3~!HdO`cB=?*y-Satu`iw}wh9BUV#pUl`%IdvKV)Tru!|v?xyZ4H=4g-< zgQRaI5e#~Pgkvgce_Ta3?XwS(1XW2M3-cMAKKtgGAjx2rB#2&o(SD{lTGCu4(SyhK z_7bl&N%3O|1FGzUegqXuE_O*)P*qh`357z5L{f6YqiF@GRjl{UU9jT+f2d|D_!)rw zgsY>yPeQ?XLHp4`t5r^?LXIfee^cFcW^d`02Yx(>Bup`3NKxKv^Q|#W*|)}*L;ag< zA6<2U*g)f=?_vKJcHWyY9(nB3L=C;EVd979S~{vLwo_zMkgVk*7slP6#CA016%$da zDpw~^C~*ashS!o9O6BnqNjlIMo$QwNz-`;;b1g?^`${aCxm`kAgG(%tpNr<2?fyaU z@4M)~Sge((vZp65dH=C@$?pSeH^fbImJML9%AWp4N7@g~fwfw~AvJL~y7W;f`tFg| zTUKXdy%-~&+$xTcy*JUn_Mg60f2FTaiCr7`Hq`+q?CIe#3cAk`G>kO(2MTBYtvS96 zj%o0!CCczbX{=u|d*%28D5bI}_xyi|c0i|*Z&~WZ%(dy&unIYhP$U%ScMx3YAhq80 zw+n~VFd6=l-mLL6;*nNAkt}yQBOmY2M?(*O$*R3Sd$Xhn-uEs76OaWp zQ4;a|^QXaL6kJpL(8#ir;Sjh!%BQgkz`|&9Ga&?=>>P4&?zh>lKsijBmy$~|Ir-66 zBn=P?>ZVU!8Y;LE)C7XSrm~@()D40fd^_qq=jUHJV)>b|dO(iDB)BAtb+`+JUa?sT zBSl3I1n7b+38V)6(dMc75@sz;Z*3k@Sz%(%tPHzFGOc9VDW9L~bK>6>vp~<2n2F8I z1*T~W1a?)-4kCH(fn%de9&BC8f-Jef=ql~qo+I8XUl%Or& zh#V`OXKcGBl?*j04V^^Zhvg7L$avXiP$-?7hdqims;NHYpwobP|7WYaWh)vo`3#aF zX=K#9e#;SX$6=&UsYnyC5M4xUxXG48%|y1%^6u1e8qiYy3LDe#f+N_E8x2KLooJpCqyf2~WfIJdq$}!p&$u zc=4@Q^R!6QiXW#Gz7wVUW>PBDZTxv3S2SHs6Fm2dd8y#3IdDe7^r+{FJ+s!A03Q0-Vq2%>6@kDu5B z<>5GDRii&uW{w%BI5w^`Z6y%MR^l<%8^4qL4a?PtgrT}^5%e_l_p&q>fiN?0ct`vLBE`-}a zXsTUI_^C?`^^xn{-}w_z!bze2_~=7_{xEjrTxCQic7J(|Woz_CH@t4%vXJb!nUFye_!A)Fd#;?UI zcoqoNP!NNW1UlG;$?-zfcSk23!JAMP5f&&_J(T^0yOU-r+WLgMW%9EAfD;(UlUV*t z!yxIecjJr%(HMcHAZU-0!Ws;Ul2o7;dRAsrF|1W9gxk)hji7ufwlDqlF;6nSk)7(F zZl_@YN=kt-Flq@FtfNoL(?=Aimcm&*_!F~+k=l)Hk#!q7u0DxFog$l-Ziroye&hs` zI(c*M`i$>AYCm63EE&Zbki)+Bdh9z_+gg;MJOIJ(?0S=`vg=S2Tssl4Ue+Q82kgG| z+m{L?D3HT-fyAFPhcY|6|7zLi<)2&Q&M=}LJo`ITYdXpeyjK;7Jj5l1N#dzQrLGwK zH6`@k*|9{I2zsFmK92U9^IqMc3)5}O!Y0mCtK&eiM+JLUD--epZm&$lDLlV6Z(ara zy8^pd)ZklPJqRSt z!|&kS-HdMqL%M7oz6S)1Zv-V!KNLrsolf^3zz8~sJk#9}&gyF-l=Ao%;NRYR_1b=! z*y+`Hx7GSGb%CHUVgnj7rUp@`V$LwD?Uzny+isKLqS!0s7)Nk9nhe6w5N;dtG^1i2 z@jO@%3x54q0at()-g0v~w7p~yv2zU*TXf&=$h?@nAN{FC&$WRFo9Be(pgqtnBabLG zUm^^(x!4idVjE>QFCTwA^v(n980H9{m#+|xdnF9Y8$-ed7r!mENBgn}Z!Z4~j*SMA zx#B&!;O6Fp4`Zfbpu#;5ma88nOC#U`Q_iwz%FWcd*$K+lF_B+)i%i=~l)koJwN%~I z;}VIbpeIBdT|cR~m!Jd0%4$wlqqfA9;4BVvEousSDOj7ZQ zF#Ta588oi>5Haj~;ZE{38hep*MV~hE1zz_P*>rx#>EZ-MK0YJvLwl>2 z>B~2-C=hcAZIjoitP-%(rUHHkvLqZ!-IcZ<&*fi^1f@l3`<>_p@+8YrgPGr6k-MEy zbK~S6wi>5)te&*N_P=`i<}Z0pK``^B_c~(EvLn6)RIr2o@R*jj3U=^Sli;m)Xyg?n zkbu#!yQdF!xve)y{_;fGLDbEIhLs?779;?1OjWfy!1Tl-K|IvFgH%CN@Q z`TG5=({IO0cab%u_(w8=VX1o)bb9(tUz!}w{^pIcV{p{mQElj$`=>r&!JDq9UtYb` zH8`#YV{WA%s3eodeOHf8G;8&h48dgr`zrE<^D2nfknxO;X)}JS{GMthtGVH%AxK-9 zFYmP*I_UW=NfwL7Z3sh+ZiYD-d5QY$8F$@(H$CiowjOmE8#md}d%~`9@>1xLQ&@Pe zwWJk2gYx#7dYn@-y|blv(>4RkgRc`*j>|AJPut8yuKN1O_wqytEa>J{F}5;iyF3+T z;xCvnU3s?9X8>4ET3Db`XqU5Er7W)K(%4-d1MchQ7P%A~X?Bt_wjbd|=c*reU?)=e zM{#eTX6l$5=Zp-~Jr$|^%l5_$=>C`}U7vD2TM8fAJ1Oen9|f0yUyTcfy;U!esTdcz zIQ!ybEELEX!mb56nDno55vkEw(=!E>)69?o9dGsB9>oh%Ov-(W3=_WcI^Uzk+O4KA`GMGjxe|%@*gRPX#{p*B#w_?B5>*h=I zmYq0mgjT;b#(G?4)zP>BYdS{;`H&a&9TfcdEOMv{Aiwg3!CN z3=48t@K{$VqO=G%3Z+6PSK|(ESsJ8u9|eyGouHF9GkIxL8uyyxA&$h+%r>MBZT&R< zi)n`jn)sD$ys!=X${A0Q8hDf_&oqqkpSCh-KYTjXHO{_{dF{3w;ihlNUQRcqK^7lU zN`6(txgIN~aX64xc5r5;7D&Ojx-ZS=2ryz~Ga?S)<>-jT7UQ62>DMyIx6b*qg3khh+GV4z~=oY*3q%jyw| z4=f`+!nwk28R(6F28d8xl$+wbBZUa)FlJUKTTZ@d+-6<*;+$7>&hh#W8`S`*phS6c z2W%OXR{&-|=i5)~}ZIo9j70?`yL93fUT{@UaSU82AH`DC3+#yBb07S>*xQmJby%6-!mq z-pV29#u0_7tkF1Y73BV3SJJlbCU#FN`+e#s(EHJUBy!-U6L)?#Ab^6+Zb7g|hMy1R z#=1CgS<6`mn>JYwB-Y>V(f+($)Ks=UiUwQCgap&zeGsDMWB*!;N8((sjo7a@*ik3b zI)`7r$V%D2lfraW*!Yq}!)xo+vFydTzT2CO5|&1`!c-iUZ%7YL?>PKLd;n#}#++#? zjL5AUzUX||uKeG5q2huWZ2C5mS>2`U(UK?mF2x#h;9?w-FN%JUBkT8+lW z3d^;ziFHq{qdU6PloO`0=^qED{I7=p`34*HUNo^|zfT+*^?rFGbnogB6owjNLq9y) zN@6IUC}jv4kkFYrW@tQ6c#YdLG$nI4N|Afe_e zG{DknEchf;h1*T(Tkg?_zqJ}PboMV@7>(=k7PB|-27?nblC$l&WhDMFc3=5?@}i_r z9bwDdsG0ijfc8mqzqEsjq5f}dcj>8QbhPSoIPiHYKi-+=wqwZ;$*^W$b?tpIFYRMj oaL-+vzxD4pvs>p=l`#o2|M}6nZb2{Ue;*yLPCFed9N2091C9;Uz5oCK diff --git a/data/skins/nes/gfx/game_clouds.png b/data/skins/nes/gfx/game_clouds.png deleted file mode 100644 index 8e45d4d2db3e5f253e8a23183ccfaa9d860c6923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5LOGa$V zMGUiEGo1e1|A#mI*I?M?==eXd>Hnf#{}mWEIVS#2 zT=aj^<^MoeZQ8Wy_3PLF|NmdU(Dx9~p%x`Ue!&btJ~?3PpX8&!Fj(N};uumf=k2U$ zzC#KEt~W*A)Mu)h&d|DXuG#2e(fQ?S)2bIV+XN}K+|XdR+$9+}g}+)$BUPID>GV4_ z9a#%H|H&(`{8 zUqAU-Z)PzjFofjr6?{@pwskQ|sN$Z$62arMj&bd;je7%6H|&r(b4EXR(tFLHXG=Z* zoRJd#%>B5(AmHTOn;U}i;dA(kP^wl`#*Zxe;biF40d08#Ete1b{{~kBi zgg?gDg_N$p7JkXsdf{vr$0z-Zyh<$sP8^CLf^qrX-tN4MChN*m7Ds=#_&)p6MctZd zxBn=l8`-|wd|1xQV{!63-|kDz-~Kc{u;APL-2adL)E3$AwzC$ms9hv%G_h`GZ{F3( zC!R(6@P2wTf$z)5jbT#1q6;!UuRFx>Vn1KyC)vf!_kT^|`~9NKuI5u#rO>mCrhkK4r>ObOix!omvv4FO#l$PcA5YH diff --git a/data/skins/nes/gfx/game_grass.png b/data/skins/nes/gfx/game_grass.png deleted file mode 100644 index 8c036ad2663101261dc640cb04238b191f688fc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5csQ7WSB0(S>gZZNtKQahYK10FJkzA8)y*2<3NW0l?MM$@7g3_aN9BQ zf8wV9yI#*ysJ!iX_;cd_$D95q3M`uB_<2#`|HGU9YcT9`bo?LK^ncN={|XG7920*h zF8V*|@_(SKHf`GU`t|Go|Nk#v=z9q0P>YfvzhDL+pB%9DPx4Wq84EpK978-hpN2*A z9Z=x-y!pHR$0V_-(;vn3NWPxW>eS6S>ynAVd?}$HpBWlX{PRtpbB6gvSoFl?%dfcC za!zt6WHI8vI zhYiF1sD1y|^CUQ`$7asjb$;*DEc<@(u$Mgq?IBeU2@6@a z20DXI0KL%GcA?pXpf6$QSOmN}AOjo-Bk*-VOU9ndQ}TdNq#WI#BUuCDg%o{`G{qbe zvO0Pk)8G<a=&OPUM&aTDj zsS)DQVgQIB<|k(W@VO(;I9R}K&E1ptg{@5)sYzhHJLWZKoL#(NX$rSu)i(h!A(4zP%|G7qc>12F z%cS#E*B?zBa#~_F69*r^M`)^gzHs@09it5Hyp}BmBN9Vtt6%5DXmd$-0dGBvl|_LS zNX$3|vUy%HEC)NE{x7fON@Hzqvrmv&O3zRl+lFLIV(896)>dBGB5y$l)W?zgBx(cS z?G#lgP3!f*4!4i%!7i}RS)8k`y4{>$a2m7s%bMJc`F6vWL=6MG9&E4NHCnu_1$LO2(+ z$$w?8l-|_gsgZ)eb7xk(y8N@Gy$^}_R~xw=OKghzutDrSY)AaeUPPdASW$)a3;nm% z7Nz&rLw?VBBsH&n>p9rp>UdD%ncxXH*YJ*?RnUgU=CtmUy{Mxz8HJWtHsOA z{`)bP`q&3(DRSq-J-)B{%R6svm+;kgj4Yj7h;>x*?e|Qfc;k;{;l5~B#J@XOTI?R0 z`RT``HS5Gkj4az;n3M@Gn}(4kifM0ei(#9gs(eJnvhTIF9*Umz>CoSawMX}#3b#Z7 rQGfgMl+eR9rtjUrkbYJEhqI+ySR6{cf9TSLlJNW|Qqq&HNow;)H{XCQ diff --git a/data/skins/nes/gfx/game_text.png b/data/skins/nes/gfx/game_text.png deleted file mode 100644 index 695b69394aaa3c48689e49d0f2be75c477f4628e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 447 zcmeAS@N?(olHy`uVBq!ia0vp^Ak4|Z3?!%R?w$*z7>k44ofy`glX(f`tO)Q4aRt&q zP+3{IXwf2rz$V8@hZ8S9UiAO7L87DQqRhg_lNS9yZIR31xk{k$v*V)Ai!3r30v9pN zdd+b9bCYKzLsu8W>&puNKToQ3WH?;N@P84*|Jy)=7#;^Q{I4|le|py@0fXC)iT@Kf z{onO^mO|xi$HSi!|3BXJKT%-OB*)K-3jZJ8^k0Kvm!sqVz^4C;cKugi*yNb_J8{wf zNtgcvUA1Y`rq{1u|NsAg`9j}AK!;kC1o;Is0QuyAt$&h_0?lajba4#Pm^gJ3Bi8{1 z9%klezQ6v@@7=a&^Ri~o%!A4ocQ7g>cH0HVuSjuX?>i{b93HDerGrrTeQyJgyUcZ;tX7;);(G%MdQVqBmvv4FO#pv!=SBbk diff --git a/data/skins/nes/gfx/intro.png b/data/skins/nes/gfx/intro.png deleted file mode 100644 index 4d0964b139c3b9b65e149e4ed51b9f2b76a15888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13183 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 YlKzaN*y9!DA2oo^4Fk=}>$ai)2fj+__W%F@ diff --git a/data/skins/nes/gfx/item_clock.ani b/data/skins/nes/gfx/item_clock.ani deleted file mode 100644 index 5967f69..0000000 --- a/data/skins/nes/gfx/item_clock.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=16 -frameHeight=16 - -[animation] -name=default -speed=10 -loop=0 -frames=0,1 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/item_clock.png b/data/skins/nes/gfx/item_clock.png deleted file mode 100644 index 415ef88f79bcab40230d3920ecab27b377560883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmV-U0kQsxP)Px$2uVaiR7i>4lpzwrFc3w5qQLY5;EW1WhSF70&$28nTw(@0JPWUgFdQs1%zbBNc-HeqAYXbjm>CXW@srwTEbNB}COv^QeRT#FkiT`O}4@Z)20fk?jRyjWi9W4kjl z*xYY%1BDx1muQ2G1)0Bz>%07*qoM6N<$f(HDI(EtDd diff --git a/data/skins/nes/gfx/item_coffee.ani b/data/skins/nes/gfx/item_coffee.ani deleted file mode 100644 index 5967f69..0000000 --- a/data/skins/nes/gfx/item_coffee.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=16 -frameHeight=16 - -[animation] -name=default -speed=10 -loop=0 -frames=0,1 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/item_coffee.png b/data/skins/nes/gfx/item_coffee.png deleted file mode 100644 index 4888ee66545e3b28709cd3c3eeb9bc82e6db5e5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)Px$h)G02R7i>4l)p>EKorNn(aa7V-Ndm_IH+T2p-^xsRR4jlF6mxzstQhGN2jbV zEw~g4!Iq2)2VzEXb9_U0IfrubE_r7g#l;61?&aQx@4NTIL(Zy`s>=HSAnm3e=Pv{k z5&OBoo*A4p5=bdoxDW!tA}A>F^TE+@z{@+kMAAqQOaf&>eDh8;9N_K!k&Tar1Bmf7 zQ>!7Kc8qpL5JI5WZt{TH98yXMAt0qhxD1hYQ!i7Xe?+r63(&#AA^?Ca9V-P5;Y_3Yd*#wetSOHu_iB zEa3J$#7kHlD(j#joV}iYuoGEu{A!$kVg)J@u?i}c3ah{>BM~WAC5T9I5Z}D8ZXa-v z>_9}Se{|^F2Yb5*xEW6isbq&Zj#Zg`&}y|j3!qbQO{4y&73g&S!9FMrh~rq9<+L7g z6F|OPx$<4Ht8RA_LWLq71StqEQbZk`RJw>D2rlB_;2>QD zK@gXqog7p|x)g*^aF8Nc5Vw8-R|Q?`5Sk{<&FYY zIeJ1ZTj_yF2j7nx04TPbtpPwSTj_1ie^Ie<-I}x}P;4h#qs*d`SQ!9Vn|LD!-~P-% zvEA%3a;g$n8T*&H@vYFn=ie*lxMG{i3>!D9OP-E(y&<&oq}X7$l#}gK0KjMW!ur^C zf49rE^E67f$XABAT@?-hhnM>RfT`RL(`jY(oNMQ4lx&f&3~@6nT$C+Qws{iy%F3qN zJNCUu@&!b&oM$c($n$V~j7YmaX)LUzqm$Re7=O3t}`4SHJRl8Jl)Cx5AC4;R_x_ rX=O7PJWl7@xUtnaJYuPTUPY`ws(!T}Jq)4s00000NkvXXu0mjfE(HBr diff --git a/data/skins/nes/gfx/item_points1_disk.ani b/data/skins/nes/gfx/item_points1_disk.ani deleted file mode 100644 index 5967f69..0000000 --- a/data/skins/nes/gfx/item_points1_disk.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=16 -frameHeight=16 - -[animation] -name=default -speed=10 -loop=0 -frames=0,1 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/item_points1_disk.png b/data/skins/nes/gfx/item_points1_disk.png deleted file mode 100644 index ac974d211adabb68c4600e4b647217815cdc7bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmV+i0r>ujP)Px#!AV3xR7i>Klrav1KoCXWh>g~A1QU|2_7e8QOL!;GKF!HgWZX)enA5!Bjt(jRw4KNDx;BgSP+x N002ovPDHLkV1oR*YD544 diff --git a/data/skins/nes/gfx/item_points2_gavina.ani b/data/skins/nes/gfx/item_points2_gavina.ani deleted file mode 100644 index 5967f69..0000000 --- a/data/skins/nes/gfx/item_points2_gavina.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=16 -frameHeight=16 - -[animation] -name=default -speed=10 -loop=0 -frames=0,1 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/item_points2_gavina.png b/data/skins/nes/gfx/item_points2_gavina.png deleted file mode 100644 index cbf4529b7f49947e848c9989667b50a380686139..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422 zcmV;X0a^ZuP)Px$U`a$lR7i=;5CpS01<(RoVAB% z;C33`RjZ~NB&IS#wF+ff0sy+MyUXZyf^#cTH2{F`k1$9A3|C^auv1CTKzg1*Y#?Bx z55~I(0Hl?1_P7pFjWjY`AF|`|g;948(qdGD?fPdnrsAYg*Y&>OkRHT>I1?EQasYrl z&v3b1SCL0O=n*J7FZ8TNMNvRX8N+xOrkIoePY;TxxfTfkJ zuLti}xPoG{uv6L61K*rR!qCpsp67E4ktP5L^*B789o7T?PfgS8!2hNF03r(rFnBjU Q+yDRo07*qoM6N<$g7`i_@% diff --git a/data/skins/nes/gfx/item_points3_pacmar.ani b/data/skins/nes/gfx/item_points3_pacmar.ani deleted file mode 100644 index 5967f69..0000000 --- a/data/skins/nes/gfx/item_points3_pacmar.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=16 -frameHeight=16 - -[animation] -name=default -speed=10 -loop=0 -frames=0,1 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/item_points3_pacmar.png b/data/skins/nes/gfx/item_points3_pacmar.png deleted file mode 100644 index f8e5515d046833c8c89da9cee586a8f075c2f8a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 388 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 Z{{hDBwj0RO!D;{i002ovPDHLkV1nD2_pkr} diff --git a/data/skins/nes/gfx/menu_game_over_end.png b/data/skins/nes/gfx/menu_game_over_end.png deleted file mode 100644 index 5e8fe65366ee761c089269860507aec300754c24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3844 zcmV+f5BuPx@zDYzuRCt{2oqKRp)g8yb3%j8}Sd#$qNR(Z`#Xv9-+pJ*3?1JKSYzGmagEN&@ zWI9wkb+9_A4_?)hQHRPOQK#Uv&LoA5GE>K4lx$X^NK(xNCsx^7Z(xixBQ+QT+JvzE z6a?T%>@q%35J28j5I~+&5I~-j_W~G8 zudkUP?*(9Iz~w~pUI6)yt^n%mmN~xX%q-C(M|19PN)=rJkRG!_f#oKKnt*}`au>rf zKrV?O7ybsTFck#mf(V>C2$U^MzXjxi2nr-g=`}EV!r0s00f@l z^W7U%luQCj{Q3!1(gcG+X}hDNLonprT|F=2z9=^PX;+jqH~-{zY2S)+v~6V&`wF7<@Q-iW zkTX-YMh5z&Z8pdw9^j5uA#`+f$UFdTct8vQ0ieCTT{l=XgRM)$jCcdPmqyuvT7-Yc zsu247`_bFm3n1wYfMm_5%gM-_f?2Y%Hjo5`Y5|PZ9w63r41p!rTb7?uXjcy;+jv&| zYz)Abi&{QbkhR63cE$#=u44coiGU}Fciu=w+qbN_$CCT9hV%J+-1m5rPVYP+Cj>xX zg8w}+x}1}1VC)R0p)Al)X5V704*&o3d7R*uvj62 ztP21z7a$se)Ns01)6gQ|8K01<2Gd`d$0H4pN5JajXIPu1hF;Y4k9>f3umrl21bk;+_xgTKD&Mw*C$Ho9`J}4cM z_Ai}o$GBM`V4xTa*1T=%nRv04qZWqHqgv^VDze7+`Fye;9^^QCp2QDksIOaw5%*ll z_`}}}V|3O-@E``y#V=A8w`BYj;RV)?5&$6`5%7$!1y2+_4`Dy$>EgirT;a2^0H#`Gh zi3Uu=Xp#uh%!h}gVgM^h#bp~otsjBsrOXOfD+b6k85<1B7Ub0q0OIkawp}il+9j4T z7RNYp&I1rmeDs0hSh^y}RBvK7J%A&Fz;xjmACP+lvQK{W$VOMP9pt0{Xw+&wPYn6U zm=nOu?jF4C?lF|s<#Hh&kIO_5-@i-M*!d^|w`UCf(YrmLpnmPW0DzZUo2BEMMiwd3 z65|7qM8Gq!+Hsax*D)-*HmI8}UF^1pyJ(CE;Dw@pO2!8u+uofJ!*7Ncn#z;*5LzO* zwx(9xu%WE%w#S(A05bel(k2nZ3ke|vYif0CwVH>B@81R2osS^C^Fc&gn-S_9vb9!b z#RDw8@dm|-4-Ws`)(0^KWqf*{2;mP@^FWBl<3Q^l4P_tSzY7q=IHSF`7{I5}xhKEB zI)w)|j{P10aeR3Ah~h-ujdg}I>EK+S6=)$eZU8n@gCC6>WWv#H_Zd+UwzW26>-P(+ zd0q}4*ed|ns>RpEf3)1Vu`|g(-q#k=;}cJye)A6F84AqX0_{20KCDd7dIri7pdEdq_^A==oG zyr0m6XlpZ`zYs|O{s}HzULs~K2v{_^)Utey;99fj+A$dg{%Z2Sq-{&Yphd#ykT6+f9osTGvX^EnK?Y#;SL>n9M=Aa*$E-$<7;aCrF+hx7{c03XAz4fgR0Py?? zVoYL>n7$OUX&J4_ql7@9phPYbG#zeKyL* zb`P-qs)deIzzwCR#CDh()KLq{LY+ghV`LtGBoaY595%cS@TY=rzslSYb1Foxm?$I9NiU5!}9_FuxHO6L-z`Y!1L=m8!cHzDKqqj97M_~cAE z7ES8|09i9&hV|>$0}z`8HMg%9FYKPXAm=@Rqx%5}>2&L+8Wg@VHvptiHszsu06<@R z)bKU*r{wImhwC+ez>x}=GyN+7`o@noHsIvfv+*+_X32fyJ0FDWu~+e$KlS0>SqTvU zz-b*J{Mlb2+ZO}@Ps5Y)z0KmNCSXRmUfTXD629=TxcpQhh6lv> z!L#*QQ`gha-XCd~wkxRP;<>19UUu5VwSUh1tSg|n=_T3z>C>X&{Y?+6dH~W-;NRB+ zuU8yFD=RCLCUu%2zVkuZ{@!UzW&2aM{N8Y0)5G<${jV8=v*)*-{6e-b2m*Fq(i;@E zj;zfGn9#Iaw!e7sVrjdwvJwCwG->BS8y_H%|2e5US5FA^t5;)ia1a0xNgONN zq92Q#rD{I_%nXZb`v03a&Yln6cb9Bm5CmK21=_kUpe#`s19z`QWo0GY?&RX+ix)2f z0ED~rhj2;lXVdxtL=)Tfn|G*s1KB_j88TK80)XTj1n1n$XSQoT>$x`ZDk22JHwhuI z-wz6fLYR5UrAU`4T<>1t&$t3gRwV!UGk4z!K>T;AR6hgsA*jx-T^ zuy@*0tX{oZaf*Icnn*-6@D)#QGj%IcCciz^D}Mw*z$+J(=?G`rtQCaoy^72Tz?*pR z59{RZX+=ea&`Or;3Fc^f-=R@fzFx19taDeZqS zCecP`(q3qbAa?mwXZORI*vyKevhp!S=6C!M&Gt>ww{-yM?QnC{N#?i)a5C1j&- zG7QY$Bg4R~u>s`@9ssC5cuLx~(&#+AUavv~*ZuC9l=AY#;~1fg3jp4gVMY1U(CNL5 zjkK;a+Pqlw;Dl}f7n7NCaN z^n?Qk4x}ED`>Oz@Ro{T2^5!)YyyGcPDO6|Cmir zu4z6b|B`0)!Bb+#kIvf2LANF$1oh@t`j!03OJ!@={HYWL1siS6GCW(z^DIjG;f zL-G!6+iyfLRx>y_h)5)2xEagD8-bPB?g40sH_)2+A;B~eYGVeOtode*PhSV{y+GDI zz~>)mzb0goZHasDnQkC4)6TPjV6?T_F>YTABjs(UP2A)k6=s#8uN8-M$Nn82_^IKD z@}_Xa{|newTnjLxd}L{u-k5&2yMAd7P$Q0G1xE;gi$6J3tQFYVWq3M}Q#14fXZW9~ zCq!GDf#O-Q=de_KpR-gXl6VI55rynPzb;Y9)K7h0R9h89&!2#zl99|0000P?0r^ zXe`;4t+B)~GYr2|->1IU?~mUfzw0{Jb?*C|``mNR{ds@hpVvL{rp7vK%>2v%0I=!l zYF!1-P5=NAW~2vO2Csu=!4o9ls?KGgW25WH|0T>LdKfR&CQFJy0+48!Qi#PqQ8n-R^Rwnf9udo2?YNpudKeW z?TEsK<`~YemvC_j1!Cf+_G9r++=@(Lh5tx5C%c{J<4M$h*u_9kPebVOO5|at!+X@4 zbj_1Ut5xWdrN@14R=&lQ!HIm zr0apkp4(*%{%~q;c*=HQ5B)&LcV%5>ar^F)8fB{XMWr5RtP=csp*DdWK7BEMIj{U4 zPbt1-8)v2aDk)pJ@L?&Z&2g-%lP9N^ zYn`^+J@H8(PihVPp1-(N*NH`ShqoK*B}qVu)l+5C&djU1G^6~(Jn}u-Z#sAvlR~(J zX#P4JGMZIk?5pLfv=FY55)~Dty0wD9w}xCyNvdgymXnQW{{|%0#L+uGV!6qS7TidO z@`#oilhut^=(`5p1;ft6oZ6uLfvr*}6T4l{*9;1{q+E{K=)6sXGZ#qH`Y|u< zDUv77)ZAM^T`Kj~BE+5rW3|~^c<&RX6Z1q~2xBF^UX`euC9FRP<6*85M=Rno&*hpOg|&wLT;6=w{XjeE+w z=+R~h>)>}Xr*s|^3GcUG)1;<4K+KFSymeSLTC9{5n;jmDi2R)YJH)sWItQH42HoIv$rZ5}R^g|#A%@IjpK7BN+EK)e8ZwRu--nl?5t5Rv z3>K$82KqY`Pn2b&Gtk`i)s;x=cQ)y}eE&_IU+d=HV(oL2?Vu%eZ0lvfjDxa3C{j?! zEF^61h4)09P^)b^ymWzBmZD4h^2_iox!0J9kJqkA!2^93a4wAev7Z$n z)qdAOzy(|D7jiPHRCDNeWo{V8VTgdU-08;xfCR~J^D|2^@a3639l1q%Yk^>AaRa!0 zn_c#$%4Co1ml(l%4n3p7Zep~S-@F&@el4_PHn(uRciwrjqIY(n<{I?&rBGImNn_`Y z2rBz)4=YehZ-~)(5ERpemIQYxTjGLJROT98k2?#SZl=LCLxGj-Fi2ki{Er@Nqk8kG zADZLDe#hMKOkQF!5B#vdbXgM7K(A!Q+0_ z;u_xytY~1D)R!mrKC^Jefaw$&iY3^6ubBwEiD{67SL!R~h|2kUY^Lz13qLTK*>dux6;*)EO z$GmmI{1haTsg)4nh3ot}oR#tBXLqe4NCPJ`Q0WaO8iC)<&+6Ol4;$SDU1fsFavco? z+^v$vm8u;LJ(;%6#-%hOPjv_6lo)W9dVry5_P5jO2z<2f$xysZ4@hV)g6RXU-rs~Z zr>kwcPpOl2RmSyMVBkv#ztV|XPutq0nQ6rNt)1hXT=(E1W%&9Fh+?T@zYudR$4CfP z_?))Z2XNFY2IY#N*x<;R#&G}JZ$c4BNU=0pQ_(X0X~RI`mBBBGA2U;(_S>WWAx0an zFhsA>#asKT2fS4=|9|8S-$u@bCs_*97jJ4dDMD|}l+Xhq{@xRcg!d`!p@;?hjNR4+ zqbSHz@)obm7T68)3}#_(*w7gg?mr+Ils}NyboK`O3}n--jE-Z>Un+`(v0>y>LJsJr zWP;jsEC(7de5#E^3SZ0@s+IY%{x$61f}~6>I1*RC{jJN(A!tng^Yx8;-=YfhRMB!_iGm=NG#lEqzyCk z5Sv_04ymvKHQT^Kuei_aCnZSYHwZp&d&_bMW7b{4@Q6d@5=Mr zQ-iqG9;3OhTx~81dsq3vr~%)@G?BbJ?`|x(Z%GUPfF++tmWvx#j1_>Iur20C@Tw6lD`FoFQ(u_s+p7_i1S^mW za{bEh3N+oL!d#1v(W8nu@0JO%s*E~Z)0oO^sNx6C!M6jH!UG~;xx)QXLf0Kq3#h?z zGhKhm4?GFa!ey@I+CMn;P`zERUi1yE;Enysxe#LX0gaZmgT%yP^eddeySq4L%#v#K zGm#GITIHYlB4LjNjgT6*YsX=zx20bA;|3~Yn`>0#V|adeez~_Lv5)I>I%e>XnLKqb zsl%gQw_Hefrw#}$P|z1ds`G(iw2){%cDL(jKiEZ~XGhwo>QJt`kz{hw=+3)L!iBZ0 zb%qN&5ixeMS>>V=3}eZqB1V*a&5UGF#}em>Ft@fV;u#PCWHwe-RErqBwJtY5Do_cKzt}t&3kl0kkn@_x?D zxAMKd;DBrrB%4)NhC+pVhf%+~Q-=*;;NT~2Dg`X}X%ae%tBk}m5U>7;b+aDWf@QVb zXfcHWsd6X8zSK&Ccvo5~W<)8yi^xqPfPmE)xc4MLFT)9^0xX4qv%XhFG<23;<}oyl zT;789&n<2mw!%f9&Xg)tU*3k|dXUaO6qFG}1>L@1_Woh&iLMVBnnyRgc9BLa950?d zi=}m1>vU@+sXU>Q=RIcF(!^*MHy%axTATLe6+&eNw;Y}@byKW{D8Wl~k25DE`- zhmW+=p{Xikvgw-w7orU3>>!iJmHTQj<|=Ol2q?xM&X*&uE6tTdhF4Q_g#-Tilt|0Ryj)Z8-aAWGWTU#94@(F}NIIX_GKC_D|#+MWFHE zp|zXpkdXo#h4#oXT~B$_#mTAA_>JV<43Ewrzk`wH!=YRop3~0WK?#^Ok3Yz3nD#AH z4c<%)z!ut^t|kU)?cW?3Bu4X$HH0G61LQzh%Si}TJ3m~~R_S26|Ea(%g2D*Qf~8+j zR%Rp+3&kP%i7l&i^_o<^kJnBn>7+n_RTCkme7$A`nHB4tYg9|oMiBUvY^|5JDZ|Bq z;%VFNQi&<#r8M`P0cm@moAs9NexOb{NOvxm9PS(se|9&$4K{Za%GVvK(zu-D9sr1G;>vhUWlo!^{gz+zr&h z`v!Ax6Z3HLdDSw=NC2mYrJx}_%$ri0QdH|NU2C9f9G3@ttN}Uiu2-1I&0(~iobES6 zFeCaIU`7&pBnic^mu5M}!A&Bu6{t~I%ACU&#&u(vG5UUqBp;h;I z)cEVB4<=WnJC2DOKNb6&Ubl=}+`B3rgTw==TP3uCjTlo2Sq?BJx8?GZ78eNj>trXL zCC@fPm{&oQzas{3$k@(}IOJ(&Z^in4M(wa>)26+QvT?MDz0sHWTdBbsT21{6$8q*9E!i+{!^d?o2=_7L3exSZgWOM}a!#skb`$wP+!MT}-l^C8| zZ}Q?^0e8ItU-I#~-oV2C`U}e()x54E@OJmq*zn$zXN%Ua>;*OJYczLIC$)9|$;}rb zQ2x8UFfVDEW>58@+R2q))Ajt1;sUV3bPd(N3hue-i`jn^Iuz&F)&dJ z@?Kkj-s_;(7UZIZvz|USJ32MIVgg(L8nzYK2|zV#J!J=NTBnjX@P^56lm1?CrRShy z%WRGE*g@>zv(qnOUcxLjZ`*T0emp-(#9LgwIt-cc8LlY+8DqTE7b{%DTf&BCVUAj( zBXBi3m})gTq(;*oui?e~O^jwI9CySW6?q@MN6##5&2;+^|JA01jT{UH$6Vy)Mdypr z@{B~7Q`!t`Y0ooEYI7mq*T{1#??sjbJ&y(n3Z7Kx`X@=H}MKZYqJ@ipA_ASdjucGvW>K4ZJeI?QGDIjDk4>go089A zCcCW+xw_@j8}#%LhD`tL`1oUK*mLt92Xms!a6@u|7|}pZ0ZypUy?7_};Jey1kFw|; zrNuim$I1y);-zh8W$yE*ytn(0Z4L!D+l7a>%F0mwUZcxqZRKn32h|&b-846WrF+wUBvbmq_XHB+H+Fa{+qV##%L(oudB-u}6y_ diff --git a/data/skins/nes/gfx/player_arounder_death.png b/data/skins/nes/gfx/player_arounder_death.png deleted file mode 100644 index a2ee38b773b1493ff281021326b5cdccd16718cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1398 zcmV-+1&R8JP)Px)FiAu~RA_u{B=kd z@xSqaD2iC4(ZKw{Ykn>3@%Ik^Ce{aB|jNA)UlP zh8E+G2~iZWAPD$*sZ>fmi*Ph4YRPgH!18`BCY=$&{iRp_ZZW{Y={29YOtyG#Q$Im; z`w*=ZF@)!@-lWcDFC=esAzy?@ynIbGgbJ!;LllH)pp&yMf*|01lM#T0fjIdBZUJA` zF*;^V$EdyB4^2P^6)`Sw$-HQ3vpu6!DxuM67=x#ZeEKenL>5sH1PFovGWo;{&w^AL z$HD0}|F~RN^+TJW`FOap_Nt(YJr7@`jcD@#Ij*?CWQ439Cqg9v;$d_-@K(}L-5^Y) zo9?3r#r?J?20NQFMMKC-pvePl*}h`8VONSMAZjXF8&8aoyZ z!E<;t;GZ7@(3cc+USL~`Md%bMlbVN zmqrCazz1*YTpT=L&*A+-MQMaA@j%XkzKE!Y`BFliP6w_cdj9GSo*dPAMs|3+hr?x` z-~KqtyxUKb#JKc`;8~EIMwLn>{Py!tP8}2E9A1W)irV@TvoJaBl|A6@qqiOz!9PFd zA`mkaTee2?KfK*b^-J}oEJo1H%P&-be)?J}1~i*ZuhZ#d?ietWUo6*{Dg{$PMO2m; z06;qq%35@5weCJ!46qqjTwcTd77O=VycDq#gl$Gp!A3p+<@P_zx-UW(15`0bN4m)v zazCo)sWzf6dm_J3;an8UHKr`akr8YJB}rmkc7SxjjU8Ps0xNB2Bem^jSs=Ix~j>Oi-R&jKPJNV$6|?mRiFuhfEMWw};jMRl9X zDYh&|i~(Y7Qr#nqh(xBVOBt2xQo^+rvM7k{-0W%F+6r>(pc>YhYe5lMkg2KwWGMz_ znFsZ2%vj`gTUE*xRjq>f+Rs$t5C>0t2_XAR83Ii(OG$l`H)89Es2bMw7iWC+_(K9CNc z|I|BeStMCwmo?~I&8Eh`b;#FrZU1fj7k{l;=PxyX1KM7scE7b5eEIP)Px&F-b&0RA_<4d0&rC#r0m` za@flW*2_s<3zH`EQ3J$4S%Kp3&>H8x;t3So zS;h87gv1~3*Up~TT2aX2Eac3W6QtXtdESj~wGA1NGoI+VAAh!~r!#7>vRcN=Yxv&? z_3+nz)3cwRRl>k)mBV~~l{INU8-bXqWB~O*D0+GcDCa1THHe@U^kwQPg;iazNg9uW*j@97D^UqLlxT3}SIc%z}QG+yb}8O(^RlDvU> zlxc}y6zk}a0QI?hI$#S*w@0~Wmmxw~ecd~(mANkGgSRp%v12M{B}d9wHGu1KKC~{6 z)}YbkT^^z+&zW(Mxi>LC>57nU50`Qg8GW0{kT;lCc=$bm&w3!^|O&3=s3OV*z@azwk`2-@5~qkyG@SQA_5 z$u+{#X*``!!UI5EXmrj7*k^Jdsc0{qay5Ln2n2|o$jA-xokk5;D zi9qp_3MV77pEo!fQIpT(^`n|Adx2q4t>#(RL+z7_y)sR%T^86>u5TZp&p+<#_;UaN N002ovPDHLkV1j}Vo-F_X diff --git a/data/skins/nes/gfx/player_arounder_head.png b/data/skins/nes/gfx/player_arounder_head.png deleted file mode 100644 index 211f28743394ab890179735421d4688ef803ff43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1608 zcmYk5dpy%?7{FKjh$YdokZ5&6#iHgCVKTQamdK@;(nYExm*~RAx;V8HQ=$%Ih3GO; zSW8TyP|4gT#T1*w8jan@`R(YB^L{?><$0g?d7k%q-tT)AyW2}g+ejM%f#~>nd-#KM z1lSuEX@H~r($QXUS`hE=lXvRPvtYkKzc@WrvI zUe<>M&xAkd^#Vw4XOcB~d^{7rsuV$=Jsq>fBsl)0?)0P54VW2Y%^@YpJd*wW+9jkO zV@9XikJ`(I=w;D4G{0OmdEXl`Ke$kK^t7q7Q;d>vTPxe0!}xheJbvl`E=+?E+*TqG zPUzo(l@-?u4b5yr-oE$le|x3R@1f(gtMtcc+Fu+{??Y6Vd#X*ZBjLmhbN^$hfXo#H@ldcr52M@D=}S`jwMg zF}Vfstk(O_1gOmXext}O;TfWVG2JnXmIpK|&tZrp;qfQRi7=I<@iFzaO(=bBN~oQC z(v!I86W3S{5YMyqAm7-VU)xISA-kG(fHTPGvvmvzuuN8T^2EMybS=r=MV(%Z1W+^K{C;CNa z_`>70q!8Em=n|2RG*_YG7XLU)Y>EixZU>M z&S@_nYxlRz@I^40(YlUKIl%B{pbYP2;;?Ha04fznHkSbBQgK+96a`V8Nu7{MfWTCq zmiq7NkQXV4+HV`IN=`3U5GSDzlM+RGjbreUr-!aqo^LIoS$Ym{ZlL4V6<4fNSvLqa zOsb1^@oGXTjy%3Wic;x8I6mPWb~Q~rk{MV8FhvR{DX{HqqBY3n&fz^9t?T+|js3!y z1H_4}Gam|8^s-IgNu@CeTT8OzpQN#iISQwc9PXr0uXVp!o{`Y+8yxl&&l3r4x(k@> z%|n?;*Fs0a^mw5Qv)32Sq=1~EMg=QVpLN}QwI*xo-7SK_Z0I$Uxs`xzcLCuE4%@bm z1QK;;A^%IU75VDHLiP;;3eJi%DATPP)t%3=Ll@&>Ek0;|^Jcab`O>K0D=j(9)7@?a z#l<@ahD=;2pEOnbbarHUI0Nw;fx=<%;K) z9~zzX4`*JmroYwPLkQfyU3COhCoVZwc;6{Kw=4X108VOu{=xagsu4ktvC%TB)`fj9 z@#18jjodkKzb{Q{Z;h^*L;qMvp%g5BZ!nnb_u<~EJn~0K=r80q_~B{3(C$$#HbqAY z7eZ}cN|ok}=MuC1oMfjuL9Qu*+|%RqYm!t^RD~K5OhDU0sF>J&L4ua%=Jb&l)jYv~ z@joxzj+&fVzPblR4HY7J@NUh1q2_!gf?Xz|`U+zH5ImrglOa+}LD%OqyO1qM#Qyy; zr8+v&B-`=ZbMjz>eh-FInc}#OhelO z&1%CU<4+OZxHY0qJ<8o9i2nllStDQo diff --git a/data/skins/nes/gfx/player_arounder_legs.png b/data/skins/nes/gfx/player_arounder_legs.png deleted file mode 100644 index cbc353b5fbc711e47e65c543ce2b2a632a393138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 443 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 diff --git a/data/skins/nes/gfx/player_bal1_fire.png b/data/skins/nes/gfx/player_bal1_fire.png deleted file mode 100644 index cf0927c9e4fc21b72b8d8b3bd8b91ffa58437273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^1wgF8!3-q-Zs6$yQjEnx?oJHr&dIz4a#jTRgt!7} zAgHXYT(oGBL12^Pq{E4qA20g<*&xx;b5UmD<4KGDpSH+l@LVNO_}OvM=S3Eo41tRn zX1!)O{kh3AlA)`M;q_&O|DPvSIx-wCWca^`;s0%*K@5)r8U9xq{6D>GlYqf($Hf1M zoBr>5JxihTw&UT?iT@vO`kyGUXp-aSMTP$lZ~Cvnu*=c$e_+%9MZ5khFl=&6{GGVy z|D?M}c9m$kW9!#G`X=(>__BV%na$1XQ5(xz^R}yH4fh^h zd3q~5=9Ti|X_b%NHf9&>nzen|0fCK+TU#W;g|M?(@sS z6<+mx`!~KmrnGV2m*X6w-}ZJKuUWnEN1pok^sUqPDg1dj+gBeJkiJJBVNHG=%xjQkeJ16rJ$XOBK6XFV_ zfuORoa?zqi27yhElMW|de!S@aXM;pX&qbMqk0&kqf7&9K!E=>B;b+H1pBGtVG6XJS znDv_B^yeneNQSO1hS!%B{(qiS>Bw-nkm3I#hX1#L1~EJiWcXic@c;C#O#%kD9TWd2 zZu-CL^(=+T+m44nC;orD>3^cYqDhXQ7Zv_Lyy?FN!!Ae1|A9^a7w!75z_7_N@ps~) z|C28N2fAw0rcJM3zyAOK|MG>thky>XC<*clW&rZZ0bBnhA7x-*a`bd@45^s&c2;iD zW&@sy*i{d#NYa{ zQ_f+dFzdw2`)gcg&DFB8-_)g8rZ(JU3JbmJCkEwOwgyVlp?U~Q|iEXJp z_A6g0aDm3F@7;S&e6~N>eJ=LE0(JT4t`8iZxc&p;b^dWKfmg&k_MFfK+IsHeqUJ*} zi5*GmTu)pZnJOoSE9fuMcvUZOsx_gHrC8B`zgW>?{sX57xw?LibJHC?rnIlQ$Z>A{ zjtT!tj(^%M`rIj_t~WhIujT34^p$7pFVsxD78R_wuQYhU&sz1%+gKJ0&bi-TTfWw< z;-1K^Ck2{|R^(6a%)MaKQTf283yOb53CxM#CuSn2P+r0G^sSrNT*lAdXObCpRQ78~ z%wRurcn149eS`Bi9Dl8se=6R4Yu$&&uYXo8(96n@J8qLPZ_$eV3ZInB|1-vw1WeNS z@A!H3^-7&MmZuNDcO0;(oH$=ypX-V5!rT1YRl9zfO%!L9lDzS(caKNAV#2@N5Z2?C m`JYa9{{bqTtq$~g*2?-FDgQ3KS|uq8$~vB|elF{r5}E*Cz04>8 diff --git a/data/skins/nes/gfx/player_bal1_legs.png b/data/skins/nes/gfx/player_bal1_legs.png deleted file mode 100644 index f1a6a5e3c8fffe4cd59fe34b4069d0899ab7d8d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmeAS@N?(olHy`uVBq!ia0vp^2|#SX!3-pCp6LGzq!^2X+?^QKos)S9gnPb64Cm0S|DGu z0grPvk9GNqDZl6Ec_plAU8J=3_sl>43S_PSEEQ2~5qRXklKJd@FBYXk-v!=tXT5l5 zx60SzygK6y*S6i(n>T2FsM2NNI@@FNTAHoS;J~|XPBUIf!N}&N2WsAlN&Vc+`2OsH zZ4B(w@87GjH27S-1 dqwQvgdPe39gELEiTSS7Q$J5o%Wt~$(695&G`l0{; diff --git a/data/skins/nes/gfx/player_body.ani b/data/skins/nes/gfx/player_body.ani deleted file mode 100644 index dd893e7..0000000 --- a/data/skins/nes/gfx/player_body.ani +++ /dev/null @@ -1,176 +0,0 @@ -frameWidth=24 -frameHeight=24 - -[animation] -name=walk -speed=5 -loop=0 -frames=0,1,2,3 -[/animation] - -[animation] -name=stand -speed=10 -loop=0 -frames=4,5,6,7 -[/animation] - -[animation] -name=walk_1C -speed=5 -loop=0 -frames=8,9,10,11 -[/animation] - -[animation] -name=stand_1C -speed=10 -loop=0 -frames=12,13,14,15 -[/animation] - -[animation] -name=walk_2C -speed=5 -loop=0 -frames=16,17,18,19 -[/animation] - -[animation] -name=stand_2C -speed=10 -loop=0 -frames=20,21,22,23 -[/animation] - - - -[animation] -name=sideshoot -speed=5 -loop=0 -frames=24,25,26,27 -[/animation] - -[animation] -name=centershoot -speed=5 -loop=0 -frames=28,29,30,31 -[/animation] - -[animation] -name=sideshoot_1C -speed=5 -loop=0 -frames=32,33,34,35 -[/animation] - -[animation] -name=centershoot_1C -speed=5 -loop=0 -frames=36,37,38,39 -[/animation] - -[animation] -name=sideshoot_2C -speed=5 -loop=0 -frames=40,41,42,43 -[/animation] - -[animation] -name=centershoot_2C -speed=5 -loop=0 -frames=44,45,46,47 -[/animation] - - - -[animation] -name=walk_pwr -speed=3 -loop=0 -frames=0,1,2,3 -[/animation] - -[animation] -name=stand_pwr -speed=5 -loop=0 -frames=4,5,6,7 -[/animation] - -[animation] -name=walk_1C_pwr -speed=3 -loop=0 -frames=8,9,10,11 -[/animation] - -[animation] -name=stand_1C_pwr -speed=5 -loop=0 -frames=12,13,14,15 -[/animation] - -[animation] -name=walk_2C_pwr -speed=3 -loop=0 -frames=16,17,18,19 -[/animation] - -[animation] -name=stand_2C_pwr -speed=5 -loop=0 -frames=20,21,22,23 -[/animation] - - - -[animation] -name=sideshoot_pwr -speed=2 -loop=0 -frames=24,25,26,27 -[/animation] - -[animation] -name=centershoot_pwr -speed=2 -loop=0 -frames=28,29,30,31 -[/animation] - -[animation] -name=sideshoot_1C_pwr -speed=2 -loop=0 -frames=32,33,34,35 -[/animation] - -[animation] -name=centershoot_1C_pwr -speed=2 -loop=0 -frames=36,37,38,39 -[/animation] - -[animation] -name=sideshoot_2C_pwr -speed=2 -loop=0 -frames=40,41,42,43 -[/animation] - -[animation] -name=centershoot_2C_pwr -speed=2 -loop=0 -frames=44,45,46,47 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/player_death.ani b/data/skins/nes/gfx/player_death.ani deleted file mode 100644 index 2567468..0000000 --- a/data/skins/nes/gfx/player_death.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=24 -frameHeight=24 - -[animation] -name=default -speed=5 -loop=0 -frames=0,1,2,3 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/player_fire.ani b/data/skins/nes/gfx/player_fire.ani deleted file mode 100644 index 8552ba5..0000000 --- a/data/skins/nes/gfx/player_fire.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=28 -frameHeight=32 - -[animation] -name=default -speed=5 -loop=0 -frames=0,1,2,3 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/player_head.ani b/data/skins/nes/gfx/player_head.ani deleted file mode 100644 index 52fc8e0..0000000 --- a/data/skins/nes/gfx/player_head.ani +++ /dev/null @@ -1,114 +0,0 @@ -frameWidth=24 -frameHeight=24 - -[animation] -name=walk -speed=5 -loop=0 -frames=0,1,2,3 -[/animation] - -[animation] -name=stand -speed=10 -loop=0 -frames=4,5,6,7 -[/animation] - -[animation] -name=walk_1C -speed=5 -loop=0 -frames=8,9,10,11 -[/animation] - -[animation] -name=stand_1C -speed=10 -loop=0 -frames=12,13,14,15 -[/animation] - -[animation] -name=walk_pwr -speed=5 -loop=0 -frames=16,17,18,19 -[/animation] - -[animation] -name=stand_pwr -speed=10 -loop=0 -frames=20,21,22,23 -[/animation] - -[animation] -name=walk_1C_pwr -speed=5 -loop=0 -frames=24,25,26,27 -[/animation] - -[animation] -name=stand_1C_pwr -speed=10 -loop=0 -frames=28,29,30,31 -[/animation] - -[animation] -name=sideshoot -speed=5 -loop=0 -frames=16,17,18,19 -[/animation] - -[animation] -name=centershoot -speed=5 -loop=0 -frames=20,21,22,23 -[/animation] - -[animation] -name=sideshoot_1C -speed=5 -loop=0 -frames=24,25,26,27 -[/animation] - -[animation] -name=centershoot_1C -speed=5 -loop=0 -frames=28,29,30,31 -[/animation] - -[animation] -name=sideshoot_pwr -speed=2 -loop=0 -frames=16,17,18,19 -[/animation] - -[animation] -name=centershoot_pwr -speed=2 -loop=0 -frames=20,21,22,23 -[/animation] - -[animation] -name=sideshoot_1C_pwr -speed=2 -loop=0 -frames=24,25,26,27 -[/animation] - -[animation] -name=centershoot_1C_pwr -speed=2 -loop=0 -frames=28,29,30,31 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/player_legs.ani b/data/skins/nes/gfx/player_legs.ani deleted file mode 100644 index 9cd6905..0000000 --- a/data/skins/nes/gfx/player_legs.ani +++ /dev/null @@ -1,16 +0,0 @@ -frameWidth=24 -frameHeight=24 - -[animation] -name=walk -speed=5 -loop=0 -frames=0,1,2,3 -[/animation] - -[animation] -name=stand -speed=10 -loop=0 -frames=4,5,6,7 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/title_bg_tile.png b/data/skins/nes/gfx/title_bg_tile.png deleted file mode 100644 index ea06e48935d334c93d6e317edad837e2058299d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmV;D18w|?P)Px&Oi4sRRCt{2nmcYAF%X7-1%jcitAqVhnbSWPo&;jfN1Y5Z< zEEhqls1gDLNg$v zGBFb&iUPSYqkxnM(aUNE&*{4E@HZ(zQbBVH2wm+7Y4EoHOKm$B!6EV5Bt}^&bCKop z#=8DAr2wt>Q}iJ!fP3DYPbMTY-+gK?R0$gIcU|XQ1K?0WQwoTM57y=o2~{F=clQ+l zaC`eD>V8f%gEsjm6fgu)0W?=@MuAd{UI7#7NGz8Er1s2Aa7g~|!;AoCM%a`Bw1*if z`fx@8K6kgKsOtOi@%vjl`)i*P#3)d*K3^N>6o{?Q_kDk;)VM0MF39t~GYF3MEaF4~rR(#x zu_~ZceV#*epXM-~M2EuH5NgM^rW`4tMt#0E&Tol@Ftk3;nayT^;jzVH5&SOZbJWh? zC~*881^R!Iy}*$Ad~K2)iKQMiSAzDrQ2y@*YrlXGtw*(tUIC&3hLodh^P+65@Dgb=FQW7ME^{J2A7jw!>Inx-ssUrQmOt=RR-pAMOdiWx4a;cFXk@ z7N*DMJlw-#{Dfz|yD9VSXX-x#9?j7xnu2X!+m43|%Kv$%h*W9f=_&!%4LocX-QTzR5b!Lf{$ODZ_e_1F6y+Bx&Q z+}+Lli?%)9_Gmv>^As(`RBMZkVm~|A-SGchY#jcE{kLZwYxpn8J({Qf=1jlv zi$wLOK>N2n!Ul&HyR4XhV)F%m>tv>7y6wAG?2DVldbIA_@?DcJOk}8j{$Hf@aiq4D zO6j>9i6LG-Tb~EiI8CnGX3#u)_Kej{mr_5uip9QpK4ala)2OF%_TT6F|F%rKIr zE_!Cf=C|7my=r#^&1p8swv^0JWIuGPQhB+?o!^IYt_9AxI!8a~aFoK|K>f1Aelr|T zZg!cGJ8AKOS6t5Fhjzui{mkR3m#uK~d7OQw<1AIy!)Pl d>lE9@pRDR77q=VF=t=}7drwzCmvv4FO#ml=szaq!^2X+?^QKos)S9 z4=curh^2D#H5K)#-Hhv6el-+4p;p6w}#Do(uoI> zzkDYJ%}aS;G%0Fc%9GC?KYr|2(DeVvJc;MY`Ux2me#F%BcfL9Mb*K{cvd`l7irQ~lG9Pzqn z-|cVZWw&Q&dK>AauzM!DRyjXPwu#I>Ir(pwU|!cJmo00;Z4H%YzS*-|d)|kusq;1% zH`{pnR9>6>mNR0qtiM55k|&SX#3fuclRVmW{3k_t8{Motcq3C!>E%}a-7CX2yHqn} zdpBrSoj95LE8ncq`iaL3&F`zv>TcmyNHqF={jo-(&U&?UmD*|c?p0qOuT|SzfBaZe zR^5%KSr`6RT)#TwA7}8CpK9IP!feC@9Kv*7R>(9<&g9uP#YT3{V;$M)wcGXI9!Y<9 T^4#ZAPzLdI^>bP0l+XkKX@{`_ diff --git a/data/skins/nes/gfx/title_dust.ani b/data/skins/nes/gfx/title_dust.ani deleted file mode 100644 index 9e655a4..0000000 --- a/data/skins/nes/gfx/title_dust.ani +++ /dev/null @@ -1,9 +0,0 @@ -frameWidth=16 -frameHeight=16 - -[animation] -name=default -speed=8 -loop=-1 -frames=0,1,2,3,4,5,6 -[/animation] \ No newline at end of file diff --git a/data/skins/nes/gfx/title_dust.png b/data/skins/nes/gfx/title_dust.png deleted file mode 100644 index 3d4a9673b208652776b58016b947db043a37ed93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^1wbso!3HGHiToA>QjEnx?oJHr&dIz4a{4@7977^n z-(Gj*b1)ESeW=Knc=9j*(M!4!rW4hK(+u8T{{B{_>%^ZxC6^Gt@L!Bs8`s>fvzxd4 z;@7-OrF&kl{nau1LV4RI{t2I_eF$^Rh)~#ZT63#kSzX=Q*Z-PWn}YW@-b!)*D0aoG zl9QWdx!>!{v9YUnAIi`Xxbv3Dv@%jhUyPe2{U5(bVyJ0i;{(3gTe~DWM4f5sg%7 diff --git a/data/skins/nes/gfx/title_gradient.png b/data/skins/nes/gfx/title_gradient.png deleted file mode 100644 index 046b5aa97f698f46be7e139870b00b931c5e27c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68554 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 diff --git a/data/skins/nes/skin.yaml b/data/skins/nes/skin.yaml deleted file mode 100644 index 4112aaa..0000000 --- a/data/skins/nes/skin.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Coffee Crisis - NES skin manifest -name: nes -display_name: "NES" -gfx_dir: gfx diff --git a/source/core/input/global_inputs.cpp b/source/core/input/global_inputs.cpp index d817f85..d4ebc6c 100644 --- a/source/core/input/global_inputs.cpp +++ b/source/core/input/global_inputs.cpp @@ -5,8 +5,6 @@ #include "core/input/input.h" #include "core/locale/lang.h" #include "core/rendering/screen.h" -#include "core/resources/resource.h" -#include "core/resources/skin_manager.hpp" #include "game/options.hpp" #include "utils/utils.h" @@ -20,7 +18,6 @@ namespace GlobalInputs { constexpr int LANG_SHADER = 99; constexpr int LANG_PRESET = 100; constexpr int LANG_EXIT_CONFIRM = 101; - constexpr int LANG_SKIN = 102; constexpr Uint32 NOTIFY_MS = 1500; constexpr Uint32 EXIT_CONFIRM_MS = 2000; @@ -66,11 +63,6 @@ namespace GlobalInputs { Screen::get()->notify(MSG, GREEN, BLACK, NOTIFY_MS); } - void notifySkin() { - const std::string MSG = Lang::get()->getText(LANG_SKIN) + " " + SkinManager::get()->currentDisplayName(); - Screen::get()->notify(MSG, CYAN, BLACK, NOTIFY_MS); - } - void onExit() { const Uint32 NOW = SDL_GetTicks(); if (NOW < exit_window_until_ticks) { @@ -125,14 +117,6 @@ namespace GlobalInputs { return true; } } - if (Input::get()->checkInput(Input::Action::NEXT_SKIN, Input::Repeat::OFF)) { - const std::string NEXT_ID = SkinManager::get()->nextSkinId(); - if (NEXT_ID != SkinManager::get()->current()) { - Resource::get()->reloadForSkin(NEXT_ID); - } - notifySkin(); - return true; - } return false; } diff --git a/source/core/input/global_inputs.hpp b/source/core/input/global_inputs.hpp index 38ca511..b8b4f1d 100644 --- a/source/core/input/global_inputs.hpp +++ b/source/core/input/global_inputs.hpp @@ -3,11 +3,11 @@ namespace GlobalInputs { // Gestiona els atalls globals disponibles en qualsevol escena: zoom de // finestra (F1/F2), fullscreen (F3), toggle shader (F4), tipus de shader - // POSTFX↔CRTPI (F5), següent preset (F6), següent skin (F7) i la - // confirmació d'eixida amb ESC (Action::EXIT) en dues pulsacions. Cada - // hotkey emet una notificació localitzada. Retorna true si ha consumit - // alguna tecla (per si la capa cridant vol suprimir-la del processament - // específic de l'escena). + // POSTFX↔CRTPI (F5), següent preset (F6) i la confirmació d'eixida amb + // ESC (Action::EXIT) en dues pulsacions. Cada hotkey emet una + // notificació localitzada. Retorna true si ha consumit alguna tecla (per + // si la capa cridant vol suprimir-la del processament específic de + // l'escena). auto handle() -> bool; // True si la doble pulsació d'ESC s'ha confirmat. Director consulta açò diff --git a/source/core/input/input.h b/source/core/input/input.h index 62ad5a0..9989bb8 100644 --- a/source/core/input/input.h +++ b/source/core/input/input.h @@ -50,9 +50,6 @@ class Input { TOGGLE_SHADER, TOGGLE_SHADER_TYPE, - // Skins - NEXT_SKIN, - // Centinela final (usar para sizing) NUMBER_OF_INPUTS }; @@ -64,12 +61,12 @@ class Input { ~Input(); // Destructor - void update(); // Actualiza el estado del objeto + void update(); // Actualiza el estado del objeto void bindKey(Action input, SDL_Scancode code); // Asigna inputs a teclas void bindGameControllerButton(Action input, SDL_GamepadButton button); // Asigna inputs a botones del mando auto checkInput(Action input, Repeat repeat = Repeat::ON, Device device = Device::ANY, int index = 0) -> bool; // Comprueba si un input esta activo - auto checkAnyInput(Device device = Device::ANY, int index = 0) -> bool; // Comprueba si hay almenos un input activo + auto checkAnyInput(Device device = Device::ANY, int index = 0) -> bool; // Comprueba si hay almenos un input activo auto discoverGameController() -> bool; // Busca si hay un mando conectado @@ -85,9 +82,9 @@ class Input { [[nodiscard]] auto getNumControllers() const -> int; // Obten el numero de mandos conectados auto getControllerName(int index) -> std::string; // Obten el nombre de un mando de juego - void setVerbose(bool value); // Establece si ha de mostrar mensajes - void disableUntil(Disable value); // Deshabilita las entradas durante un periodo de tiempo - void enable(); // Hablita las entradas + void setVerbose(bool value); // Establece si ha de mostrar mensajes + void disableUntil(Disable value); // Deshabilita las entradas durante un periodo de tiempo + void enable(); // Hablita las entradas private: struct KeyBindings { diff --git a/source/core/locale/lang.h b/source/core/locale/lang.h index 5265872..578b115 100644 --- a/source/core/locale/lang.h +++ b/source/core/locale/lang.h @@ -30,7 +30,7 @@ class Lang { static auto nextLanguage(Code c) -> Code; // Devuelve el siguiente idioma del ciclo private: - static constexpr int MAX_TEXT_STRINGS = 111; + static constexpr int MAX_TEXT_STRINGS = 110; std::string text_strings_[MAX_TEXT_STRINGS]; // Vector con los textos diff --git a/source/core/rendering/texture.cpp b/source/core/rendering/texture.cpp index dbdd450..81b05c1 100644 --- a/source/core/rendering/texture.cpp +++ b/source/core/rendering/texture.cpp @@ -212,14 +212,6 @@ auto Texture::reLoad() -> bool { return loadFromFile(path_, renderer_); } -// Reapunta el path emmagatzemat i recarrega: usat pel SkinManager per a -// fer hot-swap d'skin mantenint estable el punter Texture* (els Sprites -// continuen apuntant al mateix objecte amb contingut actualitzat). -auto Texture::reLoadFromPath(const std::string &new_path) -> bool { - path_ = new_path; - return loadFromFile(path_, renderer_); -} - // Obtiene la textura auto Texture::getSDLTexture() -> SDL_Texture * { return texture_; diff --git a/source/core/rendering/texture.h b/source/core/rendering/texture.h index 096f811..e9d729e 100644 --- a/source/core/rendering/texture.h +++ b/source/core/rendering/texture.h @@ -26,14 +26,13 @@ class Texture { void setAlpha(Uint8 alpha); // Establece el alpha para la modulación void render(SDL_Renderer *renderer, int x, int y, const SDL_Rect *clip = nullptr, float zoom_w = 1, float zoom_h = 1, double angle = 0.0, const SDL_Point *center = nullptr, SDL_FlipMode flip = SDL_FLIP_NONE); // Renderiza la textura en un punto específico - void setAsRenderTarget(SDL_Renderer *renderer); // Establece la textura como objetivo de renderizado + void setAsRenderTarget(SDL_Renderer *renderer); // Establece la textura como objetivo de renderizado [[nodiscard]] auto getWidth() const -> int; // Obtiene el ancho de la imagen [[nodiscard]] auto getHeight() const -> int; // Obtiene el alto de la imagen - auto reLoad() -> bool; // Recarga la textura - auto reLoadFromPath(const std::string &new_path) -> bool; // Reapunta path_ i recarrega (preserva el Texture*) - auto getSDLTexture() -> SDL_Texture *; // Obtiene la textura + auto reLoad() -> bool; // Recarga la textura + auto getSDLTexture() -> SDL_Texture *; // Obtiene la textura private: // Objetos y punteros diff --git a/source/core/resources/asset.cpp b/source/core/resources/asset.cpp index b989fb3..31fd105 100644 --- a/source/core/resources/asset.cpp +++ b/source/core/resources/asset.cpp @@ -6,7 +6,6 @@ #include // for basic_ostream, operator<<, cout, endl #include "core/resources/resource_helper.h" -#include "core/resources/skin_manager.hpp" // Instancia única Asset *Asset::instance = nullptr; @@ -42,30 +41,6 @@ void Asset::add(const std::string &file, Type type, bool required, bool absolute longest_name_ = SDL_max(longest_name_, FILE_NAME.size()); } -// Afegeix un asset gfx skin-aware: el path complet es composa via -// SkinManager (que ja inclou el PREFIX de plataforma) i guardem el -// basename per a poder-lo recomposar quan canviï la skin activa. -void Asset::addSkinAware(const std::string &basename, Type type, bool required) { - Item temp; - temp.file = executable_path_ + SkinManager::get()->gfxPath(basename); - temp.type = type; - temp.required = required; - temp.skin_basename = basename; - file_list_.push_back(temp); - - longest_name_ = SDL_max(longest_name_, basename.size()); -} - -// Recomposa els paths dels items skin-aware amb l'skin actual del -// SkinManager. Cridat per Resource::reloadForSkin després d'un canvi. -void Asset::onSkinChanged() { - for (auto &it : file_list_) { - if (!it.skin_basename.empty()) { - it.file = executable_path_ + SkinManager::get()->gfxPath(it.skin_basename); - } - } -} - // Devuelve el fichero de un elemento de la lista a partir de una cadena auto Asset::get(const std::string &text) -> std::string { for (const auto &f : file_list_) { diff --git a/source/core/resources/asset.h b/source/core/resources/asset.h index 39bd3ea..e7f44d1 100644 --- a/source/core/resources/asset.h +++ b/source/core/resources/asset.h @@ -23,10 +23,9 @@ class Asset { // Estructura para definir un item struct Item { - std::string file; // Ruta del fichero desde la raiz del directorio - Type type; // Indica el tipo de recurso - bool required; // Indica si es un fichero que debe de existir - std::string skin_basename; // No buit ⇒ item skin-aware (recomposable via SkinManager) + std::string file; // Ruta del fichero desde la raiz del directorio + Type type; // Indica el tipo de recurso + bool required; // Indica si es un fichero que debe de existir }; // Singleton API @@ -35,8 +34,6 @@ class Asset { static auto get() -> Asset *; // Obtiene el puntero a la instancia void add(const std::string &file, Type type, bool required = true, bool absolute = false); // Añade un elemento a la lista - void addSkinAware(const std::string &basename, Type type, bool required = true); // Afegeix un asset gfx que viu sota la skin activa (recomposable) - void onSkinChanged(); // Recomposa el path dels items skin-aware amb la skin actual auto get(const std::string &text) -> std::string; // Devuelve un elemento de la lista a partir de una cadena [[nodiscard]] auto getAll() const -> const std::vector & { return file_list_; } // Devuelve toda la lista de items registrados auto check() -> bool; // Comprueba que existen todos los elementos diff --git a/source/core/resources/resource.cpp b/source/core/resources/resource.cpp index 8b83b7b..6f77bd8 100644 --- a/source/core/resources/resource.cpp +++ b/source/core/resources/resource.cpp @@ -8,8 +8,6 @@ #include "core/rendering/texture.h" #include "core/resources/asset.h" #include "core/resources/resource_helper.h" -#include "core/resources/skin_manager.hpp" -#include "game/options.hpp" #include "game/ui/menu.h" // Nota: Asset::get() e Input::get() se consultan en preloadAll y al construir @@ -265,41 +263,3 @@ auto Resource::getMenu(const std::string &name) -> Menu * { } return it->second; } - -void Resource::reloadForSkin(const std::string &skin_id) { - if (SkinManager::get() == nullptr || !SkinManager::get()->exists(skin_id)) { - return; - } - - SkinManager::get()->setCurrent(skin_id); - Asset::get()->onSkinChanged(); - - // Recarrega cada textura cachejada des del nou path mantenint pointer - // identity perquè els Sprites no s'invaliden. - for (auto &[bname, tex] : textures_) { - const std::string NEW_PATH = Asset::get()->get(bname); - if (!NEW_PATH.empty()) { - tex->reLoadFromPath(NEW_PATH); - } - } - - // Re-parseja els fitxers .ani de la nova skin. - for (auto &[bname, lines] : animation_lines_) { - const std::string NEW_PATH = Asset::get()->get(bname); - if (NEW_PATH.empty()) { continue; } - auto bytes = ResourceHelper::loadFile(NEW_PATH); - if (bytes.empty()) { continue; } - std::string content(reinterpret_cast(bytes.data()), bytes.size()); - std::stringstream ss(content); - std::vector new_lines; - std::string line; - while (std::getline(ss, line)) { - if (!line.empty() && line.back() == '\r') { line.pop_back(); } - new_lines.push_back(line); - } - lines = std::move(new_lines); - } - - Options::settings.skin = skin_id; - Options::saveToFile(); -} diff --git a/source/core/resources/resource.h b/source/core/resources/resource.h index 7e0108d..e41d428 100644 --- a/source/core/resources/resource.h +++ b/source/core/resources/resource.h @@ -31,11 +31,6 @@ class Resource { auto getMenu(const std::string &name) -> Menu *; // name sin extensión: "title", "options", ... auto getDemoBytes() const -> const std::vector & { return demo_bytes_; } - // Recarrega tots els recursos skin-aware (textures + animacions) per a - // l'skin donada. Manté pointer identity dels Texture* perquè els Sprites - // existents continuïn vàlids. - void reloadForSkin(const std::string &skin_id); - private: explicit Resource(SDL_Renderer *renderer); ~Resource(); diff --git a/source/core/resources/skin_manager.cpp b/source/core/resources/skin_manager.cpp deleted file mode 100644 index 26fecdd..0000000 --- a/source/core/resources/skin_manager.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include "core/resources/skin_manager.hpp" - -#include -#include -#include - -#include "core/resources/resource_helper.h" -#include "core/resources/resource_loader.h" -#include "external/fkyaml_node.hpp" - -SkinManager *SkinManager::instance = nullptr; - -void SkinManager::init(const std::string &executable_path, const std::string &asset_prefix) { - if (instance == nullptr) { - instance = new SkinManager(executable_path, asset_prefix); - instance->scan(); - } -} - -void SkinManager::destroy() { - delete instance; - instance = nullptr; -} - -auto SkinManager::get() -> SkinManager * { - return instance; -} - -SkinManager::SkinManager(std::string executable_path, std::string asset_prefix) - : executable_path_(std::move(executable_path)), - asset_prefix_(std::move(asset_prefix)) { -} - -void SkinManager::scan() { - skins_.clear(); - - // ResourceLoader enumera tant entries del pack com fitxers de - // `data/` en mode fallback. Les claus retornades són relatives a - // `data/` (ex: "skins/classic/skin.yaml"). Buscar manifests - // amb aquest patró és més robust que `std::filesystem` perquè - // funciona igual a release (pack) que a dev (filesystem). - const auto ALL = ResourceLoader::getInstance().getAvailableResources(); - - const std::string PREFIX = "skins/"; - const std::string SUFFIX = "/skin.yaml"; - - for (const auto &key : ALL) { - if (!key.starts_with(PREFIX) || !key.ends_with(SUFFIX)) { continue; } - const std::string ID = key.substr(PREFIX.size(), key.size() - PREFIX.size() - SUFFIX.size()); - if (ID.find('/') != std::string::npos) { continue; } // només top-level dins skins/ - - // ResourceHelper espera un path que contingui "data/" — el construïm - // amb la convenció habitual del projecte. - const std::string FULL_PATH = executable_path_ + asset_prefix_ + "/data/" + key; - auto bytes = ResourceHelper::loadFile(FULL_PATH); - if (bytes.empty()) { - std::cerr << "SkinManager: cannot read manifest " << FULL_PATH << '\n'; - continue; - } - - SkinInfo info; - info.id = ID; - info.display_name = ID; - info.gfx_dir = "gfx"; - - try { - const std::string CONTENT(reinterpret_cast(bytes.data()), bytes.size()); - auto yaml = fkyaml::node::deserialize(CONTENT); - if (yaml.contains("display_name")) { - info.display_name = yaml["display_name"].get_value(); - } - if (yaml.contains("gfx_dir")) { - info.gfx_dir = yaml["gfx_dir"].get_value(); - } - } catch (const fkyaml::exception &e) { - std::cerr << "SkinManager: bad manifest " << FULL_PATH << ": " << e.what() << '\n'; - continue; - } - - skins_.push_back(std::move(info)); - } - - // Ordre alfabètic estable: garanteix que next/prev són deterministes. - std::ranges::sort(skins_, [](const SkinInfo &a, const SkinInfo &b) { return a.id < b.id; }); -} - -auto SkinManager::exists(const std::string &id) const -> bool { - return std::ranges::any_of(skins_, [&](const SkinInfo &s) { return s.id == id; }); -} - -auto SkinManager::currentDisplayName() const -> std::string { - return displayNameOf(current_id_); -} - -auto SkinManager::displayNameOf(const std::string &id) const -> std::string { - const auto IT = std::ranges::find_if(skins_, [&](const SkinInfo &s) { return s.id == id; }); - return (IT != skins_.end()) ? IT->display_name : id; -} - -void SkinManager::setCurrent(const std::string &id) { - if (exists(id)) { - current_id_ = id; - } -} - -auto SkinManager::gfxDirOf(const std::string &id) const -> std::string { - const auto IT = std::ranges::find_if(skins_, [&](const SkinInfo &s) { return s.id == id; }); - return (IT != skins_.end()) ? IT->gfx_dir : std::string("gfx"); -} - -auto SkinManager::gfxPath(const std::string &basename) const -> std::string { - return asset_prefix_ + "/data/skins/" + current_id_ + "/" + gfxDirOf(current_id_) + "/" + basename; -} - -auto SkinManager::nextSkinId() const -> std::string { - if (skins_.empty()) { return current_id_; } - for (size_t i = 0; i < skins_.size(); ++i) { - if (skins_[i].id == current_id_) { - return skins_[(i + 1) % skins_.size()].id; - } - } - return skins_.front().id; -} - -auto SkinManager::prevSkinId() const -> std::string { - if (skins_.empty()) { return current_id_; } - for (size_t i = 0; i < skins_.size(); ++i) { - if (skins_[i].id == current_id_) { - return skins_[(i + skins_.size() - 1) % skins_.size()].id; - } - } - return skins_.front().id; -} diff --git a/source/core/resources/skin_manager.hpp b/source/core/resources/skin_manager.hpp deleted file mode 100644 index b3cc64a..0000000 --- a/source/core/resources/skin_manager.hpp +++ /dev/null @@ -1,66 +0,0 @@ -#pragma once - -#include -#include - -// Gestor de skins. Una "skin" és un set complet de gràfics (PNGs + .ani) -// emmagatzemat sota `data/skins//gfx/`. El SkinManager: -// -// * descobreix les skins disponibles escanejant `data/skins/*/skin.yaml`, -// * recorda quina skin està activa (`current_id_`), -// * composa els paths perquè Asset/Resource sàpiguen on llegir. -// -// L'arrencada típica és: Director crida `init(executable_path, asset_prefix)` -// (escaneja manifests) i acte seguit `setCurrent(Options::settings.skin)`. -// Després registra els assets via `Asset::addSkinAware("balloon1.png", ...)` -// que utilitza internament `gfxPath()` del SkinManager. -// -// Per al canvi en calent, Resource crida `setCurrent(new_id)`, després -// `Asset::onSkinChanged()` per a actualitzar paths registrats, i recarrega -// cada Texture via `reLoadFromPath`. - -class SkinManager { - public: - struct SkinInfo { - std::string id; // Carpeta dins data/skins/ (ex: "classic") - std::string display_name; // Etiqueta visible a la UI (ex: "Classic") - std::string gfx_dir; // Subcarpeta amb els gfx (default: "gfx") - }; - - // executable_path: acabat amb '/' (típicament SDL_GetBasePath()). - // asset_prefix: prefix relatiu per a paths registrats a Asset - // (ex: "" en Linux/Win, "/../Resources" dins el bundle de macOS). - static void init(const std::string &executable_path, const std::string &asset_prefix); - static void destroy(); - static auto get() -> SkinManager *; - - void scan(); - [[nodiscard]] auto available() const -> const std::vector & { return skins_; } - [[nodiscard]] auto current() const -> const std::string & { return current_id_; } - [[nodiscard]] auto currentDisplayName() const -> std::string; - [[nodiscard]] auto displayNameOf(const std::string &id) const -> std::string; - [[nodiscard]] auto exists(const std::string &id) const -> bool; - - void setCurrent(const std::string &id); - - // Compon el path relatiu d'un gràfic dins la skin activa, amb el format - // que Asset::add espera (relatiu amb prefix de plataforma): - // "/data/skins///" - [[nodiscard]] auto gfxPath(const std::string &basename) const -> std::string; - - // Cíclic. Si només hi ha una skin, retorna la mateixa. - [[nodiscard]] auto nextSkinId() const -> std::string; - [[nodiscard]] auto prevSkinId() const -> std::string; - - private: - SkinManager(std::string executable_path, std::string asset_prefix); - - [[nodiscard]] auto gfxDirOf(const std::string &id) const -> std::string; - - std::string executable_path_; // Acabat amb '/' (per a scan filesystem) - std::string asset_prefix_; // PREFIX per a paths registrats - std::vector skins_; - std::string current_id_{"classic"}; - - static SkinManager *instance; -}; diff --git a/source/core/system/director.cpp b/source/core/system/director.cpp index 7dc0112..bb0abef 100644 --- a/source/core/system/director.cpp +++ b/source/core/system/director.cpp @@ -26,7 +26,6 @@ #include "core/resources/asset.h" // for Asset, Asset::Type #include "core/resources/resource.h" #include "core/resources/resource_helper.h" -#include "core/resources/skin_manager.hpp" #include "game/defaults.hpp" // for SECTION_PROG_LOGO, GAMECANVAS_H... #include "game/game.h" // for Game #include "game/options.hpp" // for Options::init, loadFromFile... @@ -107,22 +106,6 @@ Director::Director(int argc, const char *argv[]) { Asset::init(executable_path_); Asset::get()->setVerbose(Options::settings.console); - // Inicialitza el gestor de skins ANTES de registrar assets: setFileList - // composa els paths gfx via SkinManager::gfxPath(). Si la skin del config - // no existeix, caiem a "classic". -#ifdef MACOS_BUNDLE - SkinManager::init(executable_path_, "/../Resources"); -#else - SkinManager::init(executable_path_, ""); -#endif - if (!SkinManager::get()->exists(Options::settings.skin)) { - if (Options::settings.console) { - std::cout << "Skin '" << Options::settings.skin << "' not found, falling back to 'classic'.\n"; - } - Options::settings.skin = "classic"; - } - SkinManager::get()->setCurrent(Options::settings.skin); - // Si falta algún fichero no inicia el programa if (!setFileList()) { exit(EXIT_FAILURE); @@ -201,7 +184,6 @@ Director::~Director() { Resource::destroy(); Asset::destroy(); - SkinManager::destroy(); Input::destroy(); Lang::destroy(); delete section_; @@ -249,7 +231,6 @@ void Director::initInput() { Input::get()->bindKey(Input::Action::TOGGLE_SHADER, SDL_SCANCODE_F4); Input::get()->bindKey(Input::Action::TOGGLE_SHADER_TYPE, SDL_SCANCODE_F5); Input::get()->bindKey(Input::Action::NEXT_SHADER_PRESET, SDL_SCANCODE_F6); - Input::get()->bindKey(Input::Action::NEXT_SKIN, SDL_SCANCODE_F7); // Mando - Movimiento del jugador Input::get()->bindGameControllerButton(Input::Action::UP, SDL_GAMEPAD_BUTTON_DPAD_UP); @@ -382,66 +363,66 @@ auto Director::setFileList() -> bool { Asset::get()->add(PREFIX + "/data/sound/clock.wav", Asset::Type::SOUND); Asset::get()->add(PREFIX + "/data/sound/powerball.wav", Asset::Type::SOUND); - // Texturas (skin-aware: viuen sota data/skins//gfx/) - Asset::get()->addSkinAware("balloon1.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("balloon1.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("balloon2.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("balloon2.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("balloon3.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("balloon3.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("balloon4.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("balloon4.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("bullet.png", Asset::Type::BITMAP); + // Texturas + Asset::get()->add(PREFIX + "/data/gfx/balloon1.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/balloon1.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/balloon2.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/balloon2.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/balloon3.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/balloon3.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/balloon4.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/balloon4.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/bullet.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("game_buildings.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("game_clouds.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("game_grass.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("game_power_meter.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("game_sky_colors.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("game_text.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/game_buildings.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/game_clouds.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/game_grass.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/game_power_meter.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/game_sky_colors.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/game_text.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("intro.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("logo.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("menu_game_over.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("menu_game_over_end.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/intro.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/logo.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/menu_game_over.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/menu_game_over_end.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("item_points1_disk.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("item_points1_disk.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("item_points2_gavina.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("item_points2_gavina.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("item_points3_pacmar.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("item_points3_pacmar.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("item_clock.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("item_clock.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("item_coffee.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("item_coffee.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("item_coffee_machine.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("item_coffee_machine.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/item_points1_disk.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/item_points1_disk.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/item_points2_gavina.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/item_points2_gavina.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/item_points3_pacmar.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/item_points3_pacmar.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/item_clock.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/item_clock.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/item_coffee.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/item_coffee.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/item_coffee_machine.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/item_coffee_machine.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("title_bg_tile.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("title_coffee.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("title_crisis.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("title_dust.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("title_dust.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("title_gradient.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/title_bg_tile.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/title_coffee.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/title_crisis.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/title_dust.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/title_dust.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/title_gradient.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_head.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("player_body.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("player_legs.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("player_death.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("player_fire.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/player_head.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/player_body.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/player_legs.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/player_death.ani", Asset::Type::DATA); + Asset::get()->add(PREFIX + "/data/gfx/player_fire.ani", Asset::Type::DATA); - Asset::get()->addSkinAware("player_bal1_head.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_bal1_body.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_bal1_legs.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_bal1_death.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_bal1_fire.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_bal1_head.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_bal1_body.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_bal1_legs.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_bal1_death.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_bal1_fire.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_arounder_head.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_arounder_body.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_arounder_legs.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_arounder_death.png", Asset::Type::BITMAP); - Asset::get()->addSkinAware("player_arounder_fire.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_arounder_head.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_arounder_body.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_arounder_legs.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_arounder_death.png", Asset::Type::BITMAP); + Asset::get()->add(PREFIX + "/data/gfx/player_arounder_fire.png", Asset::Type::BITMAP); // Fuentes Asset::get()->add(PREFIX + "/data/font/8bithud.png", Asset::Type::FONT); diff --git a/source/game/options.cpp b/source/game/options.cpp index fcde0f8..16cc1d2 100644 --- a/source/game/options.cpp +++ b/source/game/options.cpp @@ -151,7 +151,6 @@ namespace Options { } settings.language = static_cast(language_int); parseIntField(st, "player_selected", settings.player_selected); - parseStringField(st, "skin", settings.skin); } void loadGameplayFromYaml(const fkyaml::node &yaml) { @@ -323,8 +322,7 @@ namespace Options { file << "settings:\n"; file << " difficulty: " << settings.difficulty << "\n"; file << " language: " << static_cast(settings.language) << "\n"; - file << " player_selected: " << settings.player_selected << "\n"; - file << " skin: \"" << settings.skin << "\"\n\n"; + file << " player_selected: " << settings.player_selected << "\n\n"; // GAMEPLAY file << "# GAMEPLAY\n"; diff --git a/source/game/options.hpp b/source/game/options.hpp index d6bb551..bcf0c11 100644 --- a/source/game/options.hpp +++ b/source/game/options.hpp @@ -78,7 +78,6 @@ namespace Options { bool console = false; int player_selected = 0; std::string config_file; - std::string skin = "classic"; }; struct Gameplay {