Hello community, here is the log from the commit of package solarus for openSUSE:Factory checked in at 2017-08-24 18:52:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/solarus (Old) and /work/SRC/openSUSE:Factory/.solarus.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "solarus" Thu Aug 24 18:52:33 2017 rev:3 rq:516818 version:1.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/solarus/solarus.changes 2017-02-21 13:50:24.307891327 +0100 +++ /work/SRC/openSUSE:Factory/.solarus.new/solarus.changes 2017-08-24 18:52:35.595778581 +0200 @@ -1,0 +2,15 @@ +Mon Aug 14 10:39:41 UTC 2017 - aloi...@gmx.com + +- Update to 1.5.3 + * Speed up loading maps by keeping tilesets in a cache (#1019). + * Fix text_surface:set_horizontal/vertical_alignment() not + working. + * Fix parallax dynamic tiles still displayed when disabled or + invisible. + * Improve error message of non-square tile patterns with diagonal + obstacles. + +- Dropped luajit-5_1-2.1.patch and icons-desktop-man.patch + (merged upstream) + +------------------------------------------------------------------- Old: ---- icons-desktop-man.patch luajit-5_1-2.1.patch solarus-1.5.1-src.tar.gz New: ---- solarus-1.5.3-src.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ solarus.spec ++++++ --- /var/tmp/diff_new_pack.hRb86N/_old 2017-08-24 18:52:36.655629349 +0200 +++ /var/tmp/diff_new_pack.hRb86N/_new 2017-08-24 18:52:36.675626533 +0200 @@ -17,17 +17,13 @@ Name: solarus -Version: 1.5.1 +Version: 1.5.3 Release: 0 Summary: Zelda-like game engine License: GPL-3.0+ Group: Amusements/Games/RPG Url: http://www.solarus-engine.org/ Source: http://www.solarus-games.org/downloads/solarus/%{name}-%{version}-src.tar.gz -# PATCH-FIX-UPSTREAM https://github.com/solarus-games/solarus/pull/1020 -Patch1: luajit-5_1-2.1.patch -# PATCH-FIX-UPSTREAM https://github.com/solarus-games/solarus/pull/1021 -Patch2: icons-desktop-man.patch # PATCH-FEATURE-UPSTREAM https://github.com/solarus-games/solarus/pull/1031 Patch3: appdata.patch BuildRequires: cmake @@ -67,8 +63,6 @@ %prep %setup -q -%patch1 -p1 -%patch2 -p1 %patch3 -p1 %build @@ -97,7 +91,7 @@ %{_bindir}/solarus-run %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_datadir}/applications/%{name}.desktop -%{_mandir}/man6/solarus.* +%{_mandir}/man6/solarus* %dir %{_datadir}/appdata/ %{_datadir}/appdata/%{name}.appdata.xml ++++++ solarus-1.5.1-src.tar.gz -> solarus-1.5.3-src.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/changelog.txt new/solarus-1.5.3/changelog.txt --- old/solarus-1.5.1/changelog.txt 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/changelog.txt 2017-04-03 11:49:35.000000000 +0200 @@ -1,5 +1,15 @@ __________________________ +Solarus 1.5.3 (2016-04-01) +__________________________ + +* Speed up loading maps by keeping tilesets in a cache (#1019). +* Fix text_surface:set_horizontal/vertical_alignment() not working. +* Fix parallax dynamic tiles still displayed when disabled or invisible. +* Improve error message of non-square tile patterns with diagonal obstacles. + +__________________________ + Solarus 1.5.1 (2016-11-29) __________________________ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/cmake/AddSolarusLibrary.cmake new/solarus-1.5.3/cmake/AddSolarusLibrary.cmake --- old/solarus-1.5.1/cmake/AddSolarusLibrary.cmake 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/cmake/AddSolarusLibrary.cmake 2017-04-03 11:49:35.000000000 +0200 @@ -201,6 +201,7 @@ include/solarus/MapData.h include/solarus/QuestProperties.h include/solarus/QuestResources.h + include/solarus/ResourceProvider.h include/solarus/ResourceType.h include/solarus/SavegameConverterV1.h include/solarus/Savegame.h @@ -393,6 +394,7 @@ src/MapData.cpp src/QuestProperties.cpp src/QuestResources.cpp + src/ResourceProvider.cpp src/SavegameConverterV1.cpp src/Savegame.cpp src/Settings.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/cmake/AddSolarusVersion.cmake new/solarus-1.5.3/cmake/AddSolarusVersion.cmake --- old/solarus-1.5.1/cmake/AddSolarusVersion.cmake 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/cmake/AddSolarusVersion.cmake 2017-04-03 11:49:35.000000000 +0200 @@ -1,5 +1,5 @@ set(SOLARUS_MAJOR_VERSION 1) set(SOLARUS_MINOR_VERSION 5) -set(SOLARUS_PATCH_VERSION 1) +set(SOLARUS_PATCH_VERSION 3) set(SOLARUS_VERSION_STRING ${SOLARUS_MAJOR_VERSION}.${SOLARUS_MINOR_VERSION}.${SOLARUS_PATCH_VERSION}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/cmake/modules/FindLuaJit.cmake new/solarus-1.5.3/cmake/modules/FindLuaJit.cmake --- old/solarus-1.5.1/cmake/modules/FindLuaJit.cmake 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/cmake/modules/FindLuaJit.cmake 2017-04-03 11:49:35.000000000 +0200 @@ -10,7 +10,7 @@ FIND_PATH(LUA_INCLUDE_DIR luajit.h HINTS $ENV{LUA_DIR} - PATH_SUFFIXES include/luajit-2.0 include/luajit-5_1-2.0 include + PATH_SUFFIXES include/luajit-2.0 include/luajit-5_1-2.0 include/luajit-5_1-2.1 include PATHS ~/Library/Frameworks /Library/Frameworks diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/gui/CMakeLists.txt new/solarus-1.5.3/gui/CMakeLists.txt --- old/solarus-1.5.1/gui/CMakeLists.txt 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/gui/CMakeLists.txt 2017-04-03 11:49:35.000000000 +0200 @@ -62,6 +62,7 @@ # Translations. set(solarus_gui_lib_TRANSLATIONS + translations/solarus_es.ts translations/solarus_fr.ts ) qt5_add_translation(solarus_gui_lib_TRANSLATIONS_QM @@ -158,3 +159,36 @@ endif() endif() +# FreeDesktop compatible icons +if(UNIX AND NOT APPLE) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_16.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/16x16/apps RENAME solarus.png) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_24.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/24x24/apps RENAME solarus.png) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_32.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/32x32/apps RENAME solarus.png) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_48.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps RENAME solarus.png) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_64.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/64x64/apps RENAME solarus.png) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_128.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/128x128/apps RENAME solarus.png) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_256.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/256x256/apps RENAME solarus.png) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/icons/solarus_icon_512.png + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/512x512/apps RENAME solarus.png) +endif(UNIX AND NOT APPLE) + +# FreeDesktop compatible start menu launcher +if(UNIX AND NOT APPLE) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../gui/resources/solarus.desktop + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications) +endif(UNIX AND NOT APPLE) + +# Linux Manpage +if(UNIX AND NOT APPLE) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../solarus.6 + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man6) + install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/../solarus-run.6 + DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man6) +endif(UNIX AND NOT APPLE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/gui/resources/solarus.desktop new/solarus-1.5.3/gui/resources/solarus.desktop --- old/solarus-1.5.1/gui/resources/solarus.desktop 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/gui/resources/solarus.desktop 2017-04-03 11:49:35.000000000 +0200 @@ -1,7 +1,11 @@ [Desktop Entry] +Version=1.0 Type=Application Name=Solarus Quest Launcher +GenericName=Topdown 2D adventure game Comment=A graphical user interface to organize and play quests for the Solarus engine -Exec=/usr/games/solarus -Icon=solarus_launcher_icon.png -Categories=Game; +Exec=solarus +Icon=solarus +Terminal=false +StartupNotify=true +Categories=Game;AdventureGame; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/Game.h new/solarus-1.5.3/include/solarus/Game.h --- old/solarus-1.5.1/include/solarus/Game.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/Game.h 2017-04-03 11:49:35.000000000 +0200 @@ -39,6 +39,7 @@ class LuaContext; class MainLoop; class Map; +class ResourceProvider; class Savegame; /** @@ -64,6 +65,7 @@ // global objects MainLoop& get_main_loop(); LuaContext& get_lua_context(); + ResourceProvider& get_resource_provider(); const HeroPtr& get_hero(); GameCommands& get_commands(); const GameCommands& get_commands() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/MainLoop.h new/solarus-1.5.3/include/solarus/MainLoop.h --- old/solarus-1.5.1/include/solarus/MainLoop.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/MainLoop.h 2017-04-03 11:49:35.000000000 +0200 @@ -19,6 +19,7 @@ #include "solarus/Common.h" #include "solarus/lowlevel/SurfacePtr.h" +#include "solarus/ResourceProvider.h" #include <atomic> #include <memory> #include <mutex> @@ -53,6 +54,7 @@ bool is_resetting(); Game* get_game(); void set_game(Game* game); + ResourceProvider& get_resource_provider(); int push_lua_command(const std::string& command); LuaContext& get_lua_context(); @@ -70,6 +72,8 @@ std::unique_ptr<LuaContext> lua_context; /**< The Lua world where scripts are run. */ + ResourceProvider + resource_provider; /**< Resource cache of the quest. */ SurfacePtr root_surface; /**< The surface where everything is drawn. */ std::unique_ptr<Game> game; /**< The current game if any, nullptr otherwise. */ Game* next_game; /**< The game to start at next cycle (nullptr means resetting the game). */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/Map.h new/solarus-1.5.3/include/solarus/Map.h --- old/solarus-1.5.1/include/solarus/Map.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/Map.h 2017-04-03 11:49:35.000000000 +0200 @@ -58,7 +58,7 @@ // map properties const std::string& get_id() const; - Tileset& get_tileset(); + const Tileset& get_tileset() const; const std::string& get_tileset_id() const; void set_tileset(const std::string& tileset_id); const std::string& get_music_id() const; @@ -196,8 +196,7 @@ int max_layer; /**< Highest layer of the map (0 or more). */ std::string tileset_id; /**< Id of the current tileset. */ - std::unique_ptr<Tileset> - tileset; /**< Tileset of the map: every tile of this map + const Tileset* tileset; /**< Tileset of the map: every tile of this map * is extracted from this tileset. */ std::string music_id; /**< Id of the current music of the map: @@ -212,7 +211,7 @@ * indicate the map size in pixel, and the x and y field indicate the position. * This is used to correctly scroll between adjacent maps. */ - // Quest Zscreen + // Quest screen SurfacePtr background_surface; /**< A surface filled with the background color of the tileset. */ SurfacePtr @@ -257,7 +256,7 @@ * \brief Returns the tileset associated to this map. * \return The tileset. */ -inline Tileset& Map::get_tileset() { +inline const Tileset& Map::get_tileset() const { SOLARUS_ASSERT(tileset != nullptr, std::string("Missing tileset in map '") + get_id() + "'" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/ResourceProvider.h new/solarus-1.5.3/include/solarus/ResourceProvider.h --- old/solarus-1.5.1/include/solarus/ResourceProvider.h 1970-01-01 01:00:00.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/ResourceProvider.h 2017-04-03 11:49:35.000000000 +0200 @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2006-2016 Christopho, Solarus - http://www.solarus-games.org + * + * Solarus is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Solarus is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef SOLARUS_RESOURCE_PROVIDER_H +#define SOLARUS_RESOURCE_PROVIDER_H + +#include "solarus/Common.h" +#include "solarus/entities/Tileset.h" +#include "solarus/entities/TilePattern.h" +#include "solarus/ResourceType.h" +#include <map> +#include <memory> +#include <string> + +namespace Solarus { + +/** + * \brief Provides fast access to quest resources. + * + * Maintains a cache of already loaded quest resources + * so that next accesses are faster. + */ +class SOLARUS_API ResourceProvider { + + public: + + ResourceProvider(); + + const Tileset& get_tileset(const std::string& tileset_id); + // TODO other types of resources + + void invalidate_resource_element(ResourceType resource_type, const std::string& element_id); + + private: + + std::map<std::string, std::unique_ptr<Tileset>> tileset_cache; /**< Cache of loaded tilesets. */ +}; + +} + +#endif + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/Sprite.h new/solarus-1.5.3/include/solarus/Sprite.h --- old/solarus-1.5.1/include/solarus/Sprite.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/Sprite.h 2017-04-03 11:49:35.000000000 +0200 @@ -56,7 +56,7 @@ // creation and destruction explicit Sprite(const std::string& id); - void set_tileset(Tileset& tileset); + void set_tileset(const Tileset& tileset); // animation set const std::string& get_animation_set_id() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/SpriteAnimation.h new/solarus-1.5.3/include/solarus/SpriteAnimation.h --- old/solarus-1.5.1/include/solarus/SpriteAnimation.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/SpriteAnimation.h 2017-04-03 11:49:35.000000000 +0200 @@ -45,7 +45,7 @@ int loop_on_frame ); - void set_tileset(Tileset& tileset); + void set_tileset(const Tileset& tileset); int get_next_frame(int current_direction, int current_frame) const; void draw(Surface& dst_surface, const Point& dst_position, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/SpriteAnimationSet.h new/solarus-1.5.3/include/solarus/SpriteAnimationSet.h --- old/solarus-1.5.1/include/solarus/SpriteAnimationSet.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/SpriteAnimationSet.h 2017-04-03 11:49:35.000000000 +0200 @@ -45,7 +45,7 @@ explicit SpriteAnimationSet(const std::string& id); - void set_tileset(Tileset& tileset); + void set_tileset(const Tileset& tileset); bool has_animation(const std::string& animation_name) const; const SpriteAnimation& get_animation(const std::string& animation_name) const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/AnimatedTilePattern.h new/solarus-1.5.3/include/solarus/entities/AnimatedTilePattern.h --- old/solarus-1.5.1/include/solarus/entities/AnimatedTilePattern.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/AnimatedTilePattern.h 2017-04-03 11:49:35.000000000 +0200 @@ -52,9 +52,9 @@ virtual void draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport - ) override; + ) const override; virtual bool is_drawn_at_its_position() const override; private: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/DynamicTile.h new/solarus-1.5.3/include/solarus/entities/DynamicTile.h --- old/solarus-1.5.1/include/solarus/entities/DynamicTile.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/DynamicTile.h 2017-04-03 11:49:35.000000000 +0200 @@ -46,7 +46,7 @@ int layer, const Point& xy, const Size& size, - Tileset& tileset, + const Tileset& tileset, const std::string& tile_pattern_id, bool enabled ); @@ -61,7 +61,7 @@ private: const std::string tile_pattern_id; /**< Id of the tile pattern. */ - TilePattern& tile_pattern; /**< Pattern of the tile. */ + const TilePattern& tile_pattern; /**< Pattern of the tile. */ }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/ParallaxScrollingTilePattern.h new/solarus-1.5.3/include/solarus/entities/ParallaxScrollingTilePattern.h --- old/solarus-1.5.1/include/solarus/entities/ParallaxScrollingTilePattern.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/ParallaxScrollingTilePattern.h 2017-04-03 11:49:35.000000000 +0200 @@ -45,9 +45,9 @@ virtual void draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport - ) override; + ) const override; virtual bool is_animated() const override; virtual bool is_drawn_at_its_position() const override; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/SelfScrollingTilePattern.h new/solarus-1.5.3/include/solarus/entities/SelfScrollingTilePattern.h --- old/solarus-1.5.1/include/solarus/entities/SelfScrollingTilePattern.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/SelfScrollingTilePattern.h 2017-04-03 11:49:35.000000000 +0200 @@ -43,9 +43,9 @@ virtual void draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport - ) override; + ) const override; virtual bool is_animated() const override; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/SimpleTilePattern.h new/solarus-1.5.3/include/solarus/entities/SimpleTilePattern.h --- old/solarus-1.5.1/include/solarus/entities/SimpleTilePattern.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/SimpleTilePattern.h 2017-04-03 11:49:35.000000000 +0200 @@ -38,9 +38,9 @@ virtual void draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport - ) override; + ) const override; virtual bool is_animated() const override; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/Tile.h new/solarus-1.5.3/include/solarus/entities/Tile.h --- old/solarus-1.5.1/include/solarus/entities/Tile.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/Tile.h 2017-04-03 11:49:35.000000000 +0200 @@ -54,14 +54,14 @@ bool is_drawn_at_its_position() const override; void draw_on_map() override; void draw(const SurfacePtr& dst_surface, const Point& viewport); - TilePattern& get_tile_pattern(); + const TilePattern& get_tile_pattern() const; const std::string& get_tile_pattern_id() const; bool is_animated() const; private: const std::string tile_pattern_id; /**< Id of the tile pattern. */ - TilePattern& tile_pattern; /**< Pattern of the tile. */ + const TilePattern& tile_pattern; /**< Pattern of the tile. */ }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/TileInfo.h new/solarus-1.5.3/include/solarus/entities/TileInfo.h --- old/solarus-1.5.1/include/solarus/entities/TileInfo.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/TileInfo.h 2017-04-03 11:49:35.000000000 +0200 @@ -33,7 +33,7 @@ int layer; Rectangle box; std::string pattern_id; - TilePattern* pattern = nullptr; + const TilePattern* pattern = nullptr; }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/TilePattern.h new/solarus-1.5.3/include/solarus/entities/TilePattern.h --- old/solarus-1.5.1/include/solarus/entities/TilePattern.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/TilePattern.h 2017-04-03 11:49:35.000000000 +0200 @@ -53,9 +53,9 @@ void fill_surface( const SurfacePtr& dst_surface, const Rectangle& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport - ); + ) const; /** * \brief Draws the tile image on a surface. @@ -68,9 +68,9 @@ virtual void draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport - ) = 0; + ) const = 0; virtual bool is_animated() const; virtual bool is_drawn_at_its_position() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/Tileset.h new/solarus-1.5.3/include/solarus/entities/Tileset.h --- old/solarus-1.5.1/include/solarus/entities/Tileset.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/Tileset.h 2017-04-03 11:49:35.000000000 +0200 @@ -45,12 +45,12 @@ void load(); void unload(); - const std::string& get_id(); - Color& get_background_color(); - bool is_loaded(); - const SurfacePtr& get_tiles_image(); - const SurfacePtr& get_entities_image(); - TilePattern& get_tile_pattern(const std::string& id); + const std::string& get_id() const; + const Color& get_background_color() const; + bool is_loaded() const; + const SurfacePtr& get_tiles_image() const; + const SurfacePtr& get_entities_image() const; + const TilePattern& get_tile_pattern(const std::string& id) const; void set_images(const std::string& other_id); private: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/include/solarus/entities/TimeScrollingTilePattern.h new/solarus-1.5.3/include/solarus/entities/TimeScrollingTilePattern.h --- old/solarus-1.5.1/include/solarus/entities/TimeScrollingTilePattern.h 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/include/solarus/entities/TimeScrollingTilePattern.h 2017-04-03 11:49:35.000000000 +0200 @@ -41,9 +41,9 @@ virtual void draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport - ) override; + ) const override; virtual bool is_animated() const override; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/solarus-run.6 new/solarus-1.5.3/solarus-run.6 --- old/solarus-1.5.1/solarus-run.6 1970-01-01 01:00:00.000000000 +0100 +++ new/solarus-1.5.3/solarus-run.6 2017-04-03 11:49:35.000000000 +0200 @@ -0,0 +1,43 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. +.TH SOLARUS-RUN "6" "August 2016" "solarus-run 1.5.0" "Games" +.SH NAME +solarus-run \- manual page for solarus-run 1.5.0 +.SH SYNOPSIS +.B solarus-run +[\fI\,options\/\fR] [\fI\,quest_path\/\fR] +.SH DESCRIPTION +The quest path is the name of a directory that contains either the data +directory or the data archive (data.solarus or data.solarus.zip) of the game to run. +If the quest path is not specified, the default directory will be: '.'. +.SH OPTIONS +.TP +\fB\-help\fR +shows this help message and exits +.TP +\fB\-no\-audio\fR +disables sounds and musics +.TP +\fB\-no\-video\fR +disables displaying +.TP +\fB\-video\-acceleration\fR=\fI\,yes\/\fR|no +enables or disables accelerated graphics (default yes) +.TP +\fB\-quest\-size=\fR<width>x<height> +sets the size of the drawing area (if compatible with the quest) +.TP +\fB\-lua\-console\fR=\fI\,yes\/\fR|no +accepts standard input lines as Lua commands (default yes) +.TP +\fB\-turbo\fR=\fI\,yes\/\fR|no +runs as fast as possible rather than simulating real time (default no) +.TP +\fB\-lag\fR=\fI\,X\/\fR +slows down each frame of X milliseconds to simulate slower systems for debugging (default 0) +.SH SEE ALSO +solarus(6), solarus-quest-editor(6) +.SH AUTHOR +solarus was written by Christopho and the Solarus Team. +.PP +This manual page was written by Nathan Moore <nated...@gmail.com>, +for the Solarus project (feel free to use it). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/solarus.6 new/solarus-1.5.3/solarus.6 --- old/solarus-1.5.1/solarus.6 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/solarus.6 2017-04-03 11:49:35.000000000 +0200 @@ -1,48 +1,37 @@ -.\" Hey, EMACS: -*- nroff -*- -.\" First parameter, NAME, should be all caps -.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection -.\" other parameters are allowed: see man(7), man(1) -.TH SOLARUS 6 "April 6, 2014" -.\" Please adjust this date whenever revising the manpage. -.\" -.\" Some roff macros, for reference: -.\" .nh disable hyphenation -.\" .hy enable hyphenation -.\" .ad l left justify -.\" .ad b justify to both left and right margins -.\" .nf disable filling -.\" .fi enable filling -.\" .br insert line break -.\" .sp <n> insert n+1 empty lines -.\" for manpage-specific macros, see man(7) +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.4. +.TH SOLARUS "6" "August 2016" "solarus 1.5.0" "Games" .SH NAME -solarus \- ARPG engine +solarus \- manual page for solarus 1.5.0 .SH SYNOPSIS .B solarus -.RI [OPTIONS] .br -.SH DESCRIPTION -This manual page documents briefly the .B solarus -engine. -.PP -.\" TeX users may be more comfortable with the \fB<whatever>\fP and -.\" \fI<whatever>\fP escape sequences to invode bold face and italics, -.\" respectively. -\fBsolarus\fP is a C++ engine that runs quests written in lua. -.SH OPTIONS -A summary of options is included below. +.RI -help +.br +.B solarus +-run [\fI\,/path/to/quest\/\fR] +.br +.B solarus +-add \fI\,/path/to/quest\/\fR +.br +.SH DESCRIPTION +.SS "Usage:" +.TP +solarus +Opens the Solarus launcher GUI +.TP +solarus \fB\-help\fR +Prints this help message and exits .TP -.B \-help -Show summary of options. +solarus \fB\-run\fR [/path/to/quest] +Plays a quest (default: .) .TP -.B /path/to/quest -Insert path to quest directory. -This directory must contain a data.solarus (or data.solarus.zip) -.B OR -A directory containing a data subdirectory with the quest data inside. +solarus \fB\-add\fR \fI\,/path/to/quest\/\fP +Adds a quest to the launcher's list and exits +.SH SEE ALSO +solarus-run(6), solarus-quest-editor(6) .SH AUTHOR -solarus was written by Christopho. +solarus was written by Christopho and the Solarus Team. .PP -This manual page was written by Nathan Moore <nathanmo...@cox.net>, +This manual page was written by Nathan Moore <nated...@gmail.com>, for the Solarus project (feel free to use it). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/Game.cpp new/solarus-1.5.3/src/Game.cpp --- old/solarus-1.5.1/src/Game.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/Game.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -179,6 +179,14 @@ } /** + * \brief Returns the resource provider of the quest. + * \return The resource provider. + */ +ResourceProvider& Game::get_resource_provider() { + return main_loop.get_resource_provider(); +} + +/** * \brief Returns the hero. * \return the hero */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/MainLoop.cpp new/solarus-1.5.3/src/MainLoop.cpp --- old/solarus-1.5.1/src/MainLoop.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/MainLoop.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -222,6 +222,14 @@ } /** + * \brief Returns the resource provider of this quest. + * \return The resource provider. + */ +ResourceProvider& MainLoop::get_resource_provider() { + return resource_provider; +} + +/** * \brief Returns whether the user just closed the window. * * When this function returns true, you should stop immediately diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/Map.cpp new/solarus-1.5.3/src/Map.cpp --- old/solarus-1.5.1/src/Map.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/Map.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -29,6 +29,7 @@ #include "solarus/lua/LuaContext.h" #include "solarus/Game.h" #include "solarus/Map.h" +#include "solarus/ResourceProvider.h" #include "solarus/Savegame.h" #include "solarus/Sprite.h" @@ -71,7 +72,6 @@ * \return the id of the tileset */ const std::string& Map::get_tileset_id() const { - // note that if set_tileset() has been called, tileset_id != tileset->get_id() return tileset_id; } @@ -81,14 +81,13 @@ * The new tileset must be compatible with the previous one, * i.e. every tile of the previous tileset must exist in the new one * and have the same properties. - * This function keeps the tiles of the previous tileset and loads the - * image of the new tileset. * * \param tileset_id Id of the new tileset. */ void Map::set_tileset(const std::string& tileset_id) { - tileset->set_images(tileset_id); + ResourceProvider& resource_provider = get_game().get_resource_provider(); + tileset = &resource_provider.get_tileset(tileset_id); get_entities().notify_tileset_changed(); this->tileset_id = tileset_id; build_background_surface(); @@ -295,6 +294,7 @@ // Initialize the map from the data just read. this->game = &game; + ResourceProvider& resource_provider = game.get_resource_provider(); location.set_xy(data.get_location()); location.set_size(data.get_size()); width8 = data.get_size().width / 8; @@ -305,8 +305,7 @@ set_world(data.get_world()); set_floor(data.get_floor()); tileset_id = data.get_tileset_id(); - tileset = std::unique_ptr<Tileset>(new Tileset(data.get_tileset_id())); - tileset->load(); + tileset = &resource_provider.get_tileset(tileset_id); entities = std::unique_ptr<Entities>(new Entities(game, *this)); entities->create_entities(data); @@ -332,7 +331,7 @@ * * This function should not be called before the map is loaded into a game. * - * \return the game + * \return The game. */ Game& Map::get_game() { return *game; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/ResourceProvider.cpp new/solarus-1.5.3/src/ResourceProvider.cpp --- old/solarus-1.5.1/src/ResourceProvider.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/solarus-1.5.3/src/ResourceProvider.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2006-2016 Christopho, Solarus - http://www.solarus-games.org + * + * Solarus is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Solarus is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include "solarus/ResourceProvider.h" + +namespace Solarus { + +/** + * \brief Creates a resource provider. + */ +ResourceProvider::ResourceProvider() { +} + +/** + * \brief Provides the tileset with the given id. + * \param tileset_id A tileset id. + * \return The corresponding tileset. + */ +const Tileset& ResourceProvider::get_tileset(const std::string& tileset_id) { + + auto it = tileset_cache.find(tileset_id); + if (it != tileset_cache.end()) { + return *it->second; + } + + it = tileset_cache.emplace( + tileset_id, + std::unique_ptr<Tileset>(new Tileset(tileset_id)) + ).first; + Tileset& tileset = *it->second; + tileset.load(); + return tileset; +} + +/** + * \brief Notifies the resource provider that cached data (if any) is no longer valid. + * + * This function must be called when a resource element has changed on disk. + * + * \param resource_type Type of resource that has changed. + * \param element_id Resource element that has changed. + */ +void ResourceProvider::invalidate_resource_element( + ResourceType resource_type, + const std::string& element_id) { + + switch (resource_type) { + + case ResourceType::TILESET: + tileset_cache.erase(element_id); + break; + + default: + break; + } +} + +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/Sprite.cpp new/solarus-1.5.3/src/Sprite.cpp --- old/solarus-1.5.1/src/Sprite.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/Sprite.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -50,7 +50,7 @@ void Sprite::quit() { // delete the animations loaded - for (auto kvp: all_animation_sets) { + for (auto& kvp: all_animation_sets) { delete kvp.second; } all_animation_sets.clear(); @@ -133,7 +133,7 @@ * * \param tileset The tileset. */ -void Sprite::set_tileset(Tileset& tileset) { +void Sprite::set_tileset(const Tileset& tileset) { animation_set.set_tileset(tileset); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/SpriteAnimation.cpp new/solarus-1.5.3/src/SpriteAnimation.cpp --- old/solarus-1.5.1/src/SpriteAnimation.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/SpriteAnimation.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -63,7 +63,7 @@ * * \param tileset The tileset. */ -void SpriteAnimation::set_tileset(Tileset& tileset) { +void SpriteAnimation::set_tileset(const Tileset& tileset) { if (!src_image_is_tileset) { // Nothing to do when the tileset changes. @@ -72,7 +72,7 @@ src_image = tileset.get_entities_image(); if (should_enable_pixel_collisions) { - disable_pixel_collisions(); // to force creating the images again + disable_pixel_collisions(); // To force creating the images again. do_enable_pixel_collisions(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/SpriteAnimationSet.cpp new/solarus-1.5.3/src/SpriteAnimationSet.cpp --- old/solarus-1.5.1/src/SpriteAnimationSet.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/SpriteAnimationSet.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -101,7 +101,7 @@ * * \param tileset The tileset. */ -void SpriteAnimationSet::set_tileset(Tileset& tileset) { +void SpriteAnimationSet::set_tileset(const Tileset& tileset) { for (auto& kvp: animations) { kvp.second.set_tileset(tileset); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/AnimatedTilePattern.cpp new/solarus-1.5.3/src/entities/AnimatedTilePattern.cpp --- old/solarus-1.5.1/src/entities/AnimatedTilePattern.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/AnimatedTilePattern.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -129,9 +129,9 @@ void AnimatedTilePattern::draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport -) { +) const { const SurfacePtr& tileset_image = tileset.get_tiles_image(); const Rectangle& src = position_in_tileset[current_frames[sequence]]; Point dst = dst_position; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/DynamicTile.cpp new/solarus-1.5.3/src/entities/DynamicTile.cpp --- old/solarus-1.5.1/src/entities/DynamicTile.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/DynamicTile.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -40,7 +40,7 @@ int layer, const Point& xy, const Size& size, - Tileset& tileset, + const Tileset& tileset, const std::string& tile_pattern_id, bool enabled ) : diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/Enemy.cpp new/solarus-1.5.3/src/entities/Enemy.cpp --- old/solarus-1.5.1/src/entities/Enemy.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/Enemy.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -133,7 +133,6 @@ * \param layer layer of the enemy on the map * \param xy Coordinates of the enemy on the map. * \param direction initial direction of the enemy on the map (0 to 3) - * this enemy is killed, or -1 if this enemy is not saved * \param treasure the pickable item that the enemy drops * \return the enemy created (may also be a Pickable or nullptr) */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/Entities.cpp new/solarus-1.5.3/src/entities/Entities.cpp --- old/solarus-1.5.1/src/entities/Entities.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/Entities.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -1235,17 +1235,18 @@ Debug::check_assertion(map.is_valid_layer(layer), "Invalid layer"); if (entity->is_enabled() && entity->is_visible()) { - entities_to_draw[layer].push_back(entity); + entities_to_draw[layer].push_back(entity); } } // Add entities displayed even when out of the camera. for (int layer = map.get_min_layer(); layer <= map.get_max_layer(); ++layer) { - entities_to_draw[layer].insert( - entities_to_draw[layer].end(), - entities_drawn_not_at_their_position[layer].begin(), - entities_drawn_not_at_their_position[layer].end() - ); + for (const EntityPtr& entity : entities_drawn_not_at_their_position[layer]) { + if (entity->is_enabled() && + entity->is_visible()) { + entities_to_draw[layer].push_back(entity); + } + } // Sort them and remove duplicates. // Duplicate drawings are a problem for entities with semi-transparency. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/ParallaxScrollingTilePattern.cpp new/solarus-1.5.3/src/entities/ParallaxScrollingTilePattern.cpp --- old/solarus-1.5.1/src/entities/ParallaxScrollingTilePattern.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/ParallaxScrollingTilePattern.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -43,9 +43,9 @@ void ParallaxScrollingTilePattern::draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport -) { +) const { const SurfacePtr& tileset_image = tileset.get_tiles_image(); Point dst = dst_position; dst += viewport / ratio; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/SelfScrollingTilePattern.cpp new/solarus-1.5.3/src/entities/SelfScrollingTilePattern.cpp --- old/solarus-1.5.1/src/entities/SelfScrollingTilePattern.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/SelfScrollingTilePattern.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -41,8 +41,9 @@ */ void SelfScrollingTilePattern::draw( const SurfacePtr& dst_surface, - const Point& dst_position, Tileset& tileset, - const Point& /* viewport */) { + const Point& dst_position, + const Tileset& tileset, + const Point& /* viewport */) const { Rectangle src = position_in_tileset; Point dst = dst_position; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/SimpleTilePattern.cpp new/solarus-1.5.3/src/entities/SimpleTilePattern.cpp --- old/solarus-1.5.1/src/entities/SimpleTilePattern.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/SimpleTilePattern.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -44,9 +44,9 @@ void SimpleTilePattern::draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& /* viewport */ -) { +) const { const SurfacePtr& tileset_image = tileset.get_tiles_image(); tileset_image->draw_region(position_in_tileset, dst_surface, dst_position); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/Tile.cpp new/solarus-1.5.3/src/entities/Tile.cpp --- old/solarus-1.5.1/src/entities/Tile.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/Tile.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -93,9 +93,9 @@ /** * \brief Returns the pattern of this tile. - * \return the tile pattern + * \return The tile pattern. */ -TilePattern& Tile::get_tile_pattern() { +const TilePattern& Tile::get_tile_pattern() const { return tile_pattern; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/TilePattern.cpp new/solarus-1.5.3/src/entities/TilePattern.cpp --- old/solarus-1.5.1/src/entities/TilePattern.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/TilePattern.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -45,13 +45,6 @@ ") but should be positive and multiple of 8 pixels"; Debug::die(oss.str()); } - - // Diagonal obstacle: check that the tile is square. - if (GroundInfo::is_ground_diagonal(ground)) { - if (!size.is_square()) { - Debug::error("Invalid tile pattern: a tile pattern with a diagonal wall must be square"); - } - } } /** @@ -161,9 +154,9 @@ void TilePattern::fill_surface( const SurfacePtr& dst_surface, const Rectangle& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& viewport -) { +) const { Point dst; int limit_x = dst_position.get_x() + dst_position.get_width(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/Tileset.cpp new/solarus-1.5.3/src/entities/Tileset.cpp --- old/solarus-1.5.1/src/entities/Tileset.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/Tileset.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -46,7 +46,7 @@ * \brief Returns the id of this tileset. * \return the tileset id */ -const std::string& Tileset::get_id() { +const std::string& Tileset::get_id() const { return id; } @@ -72,24 +72,32 @@ if (frames.size() == 1) { // Single frame. const Rectangle& frame = frames[0]; + const Size& size = frame.get_size(); + + // Diagonal obstacle: check that the tile is square. + if (GroundInfo::is_ground_diagonal(ground)) { + if (!size.is_square()) { + Debug::error("Invalid tile pattern '" + id + ": a tile pattern with a diagonal wall must be square"); + } + } switch (scrolling) { case TileScrolling::NONE: tile_pattern = new SimpleTilePattern( - ground, frame.get_xy(), frame.get_size() + ground, frame.get_xy(), size ); break; case TileScrolling::PARALLAX: tile_pattern = new ParallaxScrollingTilePattern( - ground, frame.get_xy(), frame.get_size() + ground, frame.get_xy(), size ); break; case TileScrolling::SELF: tile_pattern = new SelfScrollingTilePattern( - ground, frame.get_xy(), frame.get_size() + ground, frame.get_xy(), size ); break; } @@ -169,7 +177,7 @@ * \brief Returns the background color of this tileset. * \return the background color */ -Color& Tileset::get_background_color() { +const Color& Tileset::get_background_color() const { return background_color; } @@ -177,7 +185,7 @@ * \brief Returns whether this tileset is loaded. * \return true if this tileset is loaded */ -bool Tileset::is_loaded() { +bool Tileset::is_loaded() const { return tiles_image != nullptr; } @@ -185,7 +193,7 @@ * \brief Returns the image containing the tiles of this tileset. * \return the tiles image */ -const SurfacePtr& Tileset::get_tiles_image() { +const SurfacePtr& Tileset::get_tiles_image() const { return tiles_image; } @@ -193,7 +201,7 @@ * \brief Returns the image containing the skin-dependent dynamic entities for this tileset. * \return the image containing the skin-dependent dynamic entities for this tileset */ -const SurfacePtr& Tileset::get_entities_image() { +const SurfacePtr& Tileset::get_entities_image() const { return entities_image; } @@ -202,7 +210,7 @@ * \param id id of the tile pattern to get * \return the tile pattern with this id */ -TilePattern& Tileset::get_tile_pattern(const std::string& id) { +const TilePattern& Tileset::get_tile_pattern(const std::string& id) const { const auto& it = tile_patterns.find(id); if (it == tile_patterns.end()) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/entities/TimeScrollingTilePattern.cpp new/solarus-1.5.3/src/entities/TimeScrollingTilePattern.cpp --- old/solarus-1.5.1/src/entities/TimeScrollingTilePattern.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/entities/TimeScrollingTilePattern.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -78,9 +78,9 @@ void TimeScrollingTilePattern::draw( const SurfacePtr& dst_surface, const Point& dst_position, - Tileset& tileset, + const Tileset& tileset, const Point& /* viewport */ -) { +) const { Rectangle src = position_in_tileset; Point dst = dst_position; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/lowlevel/QuestFiles.cpp new/solarus-1.5.3/src/lowlevel/QuestFiles.cpp --- old/solarus-1.5.1/src/lowlevel/QuestFiles.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/lowlevel/QuestFiles.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -480,7 +480,7 @@ SOLARUS_API std::string get_base_write_dir() { #if defined(SOLARUS_OSX) || defined(SOLARUS_IOS) - return std::string(get_user_application_support_directory()); + return get_user_application_support_directory(); #else return std::string(PHYSFS_getUserDir()); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/lowlevel/Surface.cpp new/solarus-1.5.3/src/lowlevel/Surface.cpp --- old/solarus-1.5.1/src/lowlevel/Surface.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/lowlevel/Surface.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -200,13 +200,13 @@ } /** - * \brief Returns the SDL_Surface corresponding to the requested file. + * \brief Creates an SDL surface corresponding to the requested file. * - * The returned SDL_Surface has to be manually deleted. + * The returned SDL surface has to be manually deleted. * * \param file_name Name of the image file to load, relative to the base directory specified. * \param base_directory The base directory to use. - * \return The SDL_Surface. + * \return The SDL surface created. */ SDL_Surface* Surface::get_surface_from_file( const std::string& file_name, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/lowlevel/apple/AppleInterface.mm new/solarus-1.5.3/src/lowlevel/apple/AppleInterface.mm --- old/solarus-1.5.1/src/lowlevel/apple/AppleInterface.mm 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/lowlevel/apple/AppleInterface.mm 2017-04-03 11:49:35.000000000 +0200 @@ -14,6 +14,7 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "solarus/lowlevel/Debug.h" #include "solarus/lowlevel/apple/AppleInterface.h" #if defined(SOLARUS_OSX) || defined(SOLARUS_IOS) @@ -27,29 +28,35 @@ /** - * @brief Return "~/Library/Application Support" or equivalent from the official - * way, which is available in OSX 10.6+ and iOS 4.0+. + * @brief Create and return the Application Support folder from the User Domain + * which doesn't exist by default in the iOS sandboxed environment. * - * Return an OSX 10.0+ and iOS 1.0+ (not compatible with Iphone Simulator) - * hardcoded equivalent workaround if the build configuration is set for a - * lower minimum version. * @return The Application Support folder from the User Domain. */ std::string get_user_application_support_directory() { @autoreleasepool { -#if defined(SOLARUS_OSX) && __MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 \ - || defined(SOLARUS_IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0 - return [[[[[NSFileManager defaultManager] - URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] - objectAtIndex:0] - path] - UTF8String]; -#else - return [[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support"] - UTF8String]; -#endif + NSString* app_support_directory = [ + NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) + objectAtIndex:0]; + + // Create the Application Support folder if it doesn't exist yet. + if (![[NSFileManager defaultManager] + fileExistsAtPath:app_support_directory + isDirectory:NULL]) { + + NSError* error = nil; + if (![[NSFileManager defaultManager] + createDirectoryAtPath:app_support_directory + withIntermediateDirectories:YES + attributes:nil + error:&error]) { + Solarus::Debug::error("Cannot create " + std::string([app_support_directory UTF8String])); + } + } + + return [app_support_directory UTF8String]; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/lua/MapApi.cpp new/solarus-1.5.3/src/lua/MapApi.cpp --- old/solarus-1.5.1/src/lua/MapApi.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/lua/MapApi.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -420,8 +420,8 @@ const Size size = entity_creation_check_size(l, 1, data); const std::string& tile_pattern_id = data.get_string("pattern"); - Tileset& tileset = map.get_tileset(); - TilePattern& pattern = tileset.get_tile_pattern(tile_pattern_id); + const Tileset& tileset = map.get_tileset(); + const TilePattern& pattern = tileset.get_tile_pattern(tile_pattern_id); const Size& pattern_size = pattern.get_size(); Entities& entities = map.get_entities(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/src/lua/TextSurfaceApi.cpp new/solarus-1.5.3/src/lua/TextSurfaceApi.cpp --- old/solarus-1.5.1/src/lua/TextSurfaceApi.cpp 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/src/lua/TextSurfaceApi.cpp 2017-04-03 11:49:35.000000000 +0200 @@ -227,7 +227,7 @@ TextSurface& text_surface = *check_text_surface(l, 1); TextSurface::HorizontalAlignment alignment = LuaTools::check_enum<TextSurface::HorizontalAlignment>( - l, 1, horizontal_alignment_names); + l, 2, horizontal_alignment_names); text_surface.set_horizontal_alignment(alignment); @@ -263,7 +263,7 @@ TextSurface& text_surface = *check_text_surface(l, 1); TextSurface::VerticalAlignment alignment = LuaTools::check_enum<TextSurface::VerticalAlignment>( - l, 1, vertical_alignment_names); + l, 2, vertical_alignment_names); text_surface.set_vertical_alignment(alignment); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/tests/testing_quest/data/project_db.dat new/solarus-1.5.3/tests/testing_quest/data/project_db.dat --- old/solarus-1.5.1/tests/testing_quest/data/project_db.dat 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/tests/testing_quest/data/project_db.dat 2017-04-03 11:49:35.000000000 +0200 @@ -119,57 +119,127 @@ sprite{ id = "main_heroes/sword", description = "Sword" } sprite{ id = "main_heroes/sword_electricity", description = "Sword electricity" } sprite{ id = "main_heroes/trail", description = "Trail" } -sprite{ id = "menus/solarus_logo", description = "Menu: Solarus logo" } +sprite{ id = "menus/solarus_logo", description = "Solarus logo" } sprite{ id = "todo", description = "TODO image" } sound{ id = "arrow_hit", description = "arrow_hit" } +sound{ id = "bird_chirp", description = "bird_chirp" } +sound{ id = "bird_chirp1", description = "bird_chirp1" } +sound{ id = "bird_chirp2", description = "bird_chirp2" } +sound{ id = "bird_cute", description = "bird_cute" } +sound{ id = "bomb", description = "bomb" } sound{ id = "boomerang", description = "boomerang" } +sound{ id = "boss_charge", description = "boss_charge" } +sound{ id = "boss_fireball", description = "boss_fireball" } sound{ id = "boss_hurt", description = "boss_hurt" } sound{ id = "boss_killed", description = "boss_killed" } +sound{ id = "bounce", description = "bounce" } sound{ id = "bow", description = "bow" } sound{ id = "bush", description = "bush" } sound{ id = "cane", description = "cane" } +sound{ id = "cane2", description = "cane2" } +sound{ id = "cane3", description = "cane3" } +sound{ id = "cat", description = "cat" } +sound{ id = "chest_appears", description = "chest_appears" } sound{ id = "chest_open", description = "chest_open" } +sound{ id = "cricket", description = "cricket" } +sound{ id = "crystal", description = "crystal" } +sound{ id = "crystal2", description = "crystal2" } +sound{ id = "cursor", description = "cursor" } +sound{ id = "danger", description = "danger" } +sound{ id = "diarandor/solarus_logo", description = "Solarus logo" } sound{ id = "door_closed", description = "door_closed" } sound{ id = "door_open", description = "door_open" } sound{ id = "door_unlocked", description = "door_unlocked" } +sound{ id = "eduardo/secret", description = "secret" } +sound{ id = "electrified", description = "electrified" } +sound{ id = "electrified2", description = "electrified2" } +sound{ id = "enemy_awake", description = "enemy_awake" } sound{ id = "enemy_hurt", description = "enemy_hurt" } sound{ id = "enemy_killed", description = "enemy_killed" } sound{ id = "explosion", description = "explosion" } +sound{ id = "falling_on_hole", description = "falling_on_hole" } +sound{ id = "falling_rock", description = "falling_rock" } +sound{ id = "fire_ball", description = "fire_ball" } +sound{ id = "fire_ball2", description = "fire_ball2" } +sound{ id = "frost1", description = "frost1" } +sound{ id = "frost2", description = "frost2" } +sound{ id = "heart", description = "heart" } +sound{ id = "heart_container", description = "heart_container" } +sound{ id = "hero_dying", description = "hero_dying" } sound{ id = "hero_falls", description = "hero_falls" } sound{ id = "hero_hurt", description = "hero_hurt" } sound{ id = "hero_lands", description = "hero_lands" } sound{ id = "hero_pushes", description = "hero_pushes" } +sound{ id = "hero_seen", description = "hero_seen" } sound{ id = "hookshot", description = "hookshot" } +sound{ id = "item_fall", description = "item_fall" } sound{ id = "jump", description = "jump" } +sound{ id = "key_fall", description = "key_fall" } +sound{ id = "lamp", description = "lamp" } sound{ id = "lift", description = "lift" } +sound{ id = "magnet1", description = "magnet1" } sound{ id = "message_end", description = "message_end" } -sound{ id = "monster_hurt", description = "monster_hurt" } +sound{ id = "message_letter", description = "message_letter" } +sound{ id = "money_counter", description = "money_counter" } +sound{ id = "money_counter_end", description = "money_counter_end" } +sound{ id = "monster_hurt", description = "zora" } +sound{ id = "mouse", description = "mouse" } +sound{ id = "ok", description = "ok" } +sound{ id = "open_lock", description = "open_lock" } +sound{ id = "pause_closed", description = "pause_closed" } +sound{ id = "pause_open", description = "pause_open" } sound{ id = "picked_item", description = "picked_item" } +sound{ id = "picked_money", description = "picked_money" } +sound{ id = "picked_small_key", description = "picked_small_key" } +sound{ id = "quake", description = "quake" } sound{ id = "running", description = "running" } sound{ id = "running_obstacle", description = "running_obstacle" } sound{ id = "shield", description = "shield" } +sound{ id = "shield2", description = "shield2" } +sound{ id = "shield3", description = "shield3" } +sound{ id = "soft_tap", description = "soft_tap" } sound{ id = "splash", description = "splash" } sound{ id = "stairs_down_end", description = "stairs_down_end" } sound{ id = "stairs_down_start", description = "stairs_down_start" } sound{ id = "stairs_up_end", description = "stairs_up_end" } sound{ id = "stairs_up_start", description = "stairs_up_start" } sound{ id = "stone", description = "stone" } +sound{ id = "swim", description = "swim" } sound{ id = "switch", description = "switch" } +sound{ id = "switch_hero", description = "switch_hero" } sound{ id = "sword1", description = "sword1" } +sound{ id = "sword2", description = "sword2" } +sound{ id = "sword3", description = "sword3" } +sound{ id = "sword4", description = "sword4" } sound{ id = "sword_spin_attack_load", description = "sword_spin_attack_load" } sound{ id = "sword_spin_attack_release", description = "sword_spin_attack_release" } sound{ id = "sword_tapping", description = "sword_tapping" } sound{ id = "sword_tapping_weak_wall", description = "sword_tapping_weak_wall" } +sound{ id = "teleporter", description = "teleporter" } sound{ id = "throw", description = "throw" } +sound{ id = "thunder1", description = "thunder1" } +sound{ id = "thunder2", description = "thunder2" } +sound{ id = "thunder3", description = "thunder3" } +sound{ id = "thunder_double", description = "thunder_double" } +sound{ id = "thunder_far", description = "thunder_far" } sound{ id = "timer", description = "timer" } +sound{ id = "timer2", description = "timer2" } sound{ id = "timer_hurry", description = "timer_hurry" } +sound{ id = "tongue", description = "tongue" } sound{ id = "treasure", description = "treasure" } sound{ id = "victory", description = "victory" } sound{ id = "walk_on_grass", description = "walk_on_grass" } sound{ id = "walk_on_water", description = "walk_on_water" } +sound{ id = "warp", description = "warp" } +sound{ id = "water_fill", description = "water_fill" } +sound{ id = "wings1", description = "wings1" } +sound{ id = "wings2", description = "wings2" } +sound{ id = "world_warp", description = "world_warp" } sound{ id = "wrong", description = "wrong" } +sound{ id = "wrong2", description = "wrong2" } +sound{ id = "wrong3", description = "wrong3" } item{ id = "bomb", description = "Bomb" } item{ id = "non_saved_item", description = "Non-saved item" } Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/bird_chirp.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/bird_chirp.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/bird_chirp1.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/bird_chirp1.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/bird_chirp2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/bird_chirp2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/bird_cute.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/bird_cute.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/boss_charge.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/boss_charge.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/boss_fireball.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/boss_fireball.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/boss_hurt.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/boss_hurt.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/boss_killed.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/boss_killed.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/cane.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/cane.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/cane2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/cane2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/cane3.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/cane3.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/cricket.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/cricket.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/crystal2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/crystal2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/diarandor/solarus_logo.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/diarandor/solarus_logo.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/door_unlocked.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/door_unlocked.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/eduardo/secret.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/eduardo/secret.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/electrified.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/electrified.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/electrified2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/electrified2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/enemy_awake.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/enemy_awake.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/explosion.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/explosion.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/fire_ball2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/fire_ball2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/frost1.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/frost1.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/frost2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/frost2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/heart_container.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/heart_container.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/hero_seen.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/hero_seen.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/lamp.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/lamp.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/magnet1.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/magnet1.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/money_counter.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/money_counter.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/money_counter_end.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/money_counter_end.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/monster_hurt.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/monster_hurt.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/picked_money.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/picked_money.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/picked_rupee.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/picked_rupee.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/picked_small_key.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/picked_small_key.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/rupee_counter.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/rupee_counter.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/rupee_counter_end.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/rupee_counter_end.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/secret.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/secret.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/shield.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/shield.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/shield2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/shield2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/shield3.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/shield3.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/stone.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/stone.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/sword2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/sword2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/sword3.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/sword3.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/sword4.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/sword4.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/thunder1.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/thunder1.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/thunder2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/thunder2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/thunder3.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/thunder3.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/thunder_double.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/thunder_double.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/thunder_far.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/thunder_far.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/timer.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/timer.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/timer2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/timer2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/timer_hurry.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/timer_hurry.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/water_fill.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/water_fill.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/wings1.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/wings1.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/wings2.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/wings2.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/world_warp.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/world_warp.ogg differ Binary files old/solarus-1.5.1/tests/testing_quest/data/sounds/wrong3.ogg and new/solarus-1.5.3/tests/testing_quest/data/sounds/wrong3.ogg differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/tests/testing_quest/data/sprites/hero/sword1.dat new/solarus-1.5.3/tests/testing_quest/data/sprites/hero/sword1.dat --- old/solarus-1.5.1/tests/testing_quest/data/sprites/hero/sword1.dat 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/tests/testing_quest/data/sprites/hero/sword1.dat 2017-04-03 11:49:35.000000000 +0200 @@ -1,7 +1,7 @@ animation{ name = "sword", src_image = "main_heroes/sword_brandish.png", - frame_delay = 200, + frame_delay = 30, directions = { { x = 0, y = 0, frame_width = 48, frame_height = 48, origin_x = 12, origin_y = 31, num_frames = 12 }, { x = 0, y = 96, frame_width = 48, frame_height = 32, origin_x = 20, origin_y = 39, num_frames = 12 }, @@ -22,6 +22,17 @@ }, } animation{ + name = "sword_inverted", + src_image = "main_heroes/sword_brandish_inverted.png", + frame_delay = 30, + directions = { + { x = 0, y = 0, frame_width = 48, frame_height = 48, origin_x = 12, origin_y = 31, num_frames = 12 }, + { x = 0, y = 96, frame_width = 48, frame_height = 32, origin_x = 20, origin_y = 39, num_frames = 12 }, + { x = 0, y = 48, frame_width = 48, frame_height = 48, origin_x = 36, origin_y = 31, num_frames = 12 }, + { x = 0, y = 160, frame_width = 48, frame_height = 32, origin_x = 20, origin_y = 15, num_frames = 12 }, + }, +} +animation{ name = "sword_loading_stopped", src_image = "main_heroes/sword_loading.png", directions = { @@ -35,6 +46,7 @@ name = "sword_loading_walking", src_image = "main_heroes/sword_loading.png", frame_delay = 100, + frame_to_loop_on = 0, directions = { { x = 0, y = 0, frame_width = 24, frame_height = 24, origin_x = -4, origin_y = 23, num_frames = 6 }, { x = 0, y = 24, frame_width = 24, frame_height = 24, origin_x = 12, origin_y = 39, num_frames = 6 }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/solarus-1.5.1/tests/testing_quest/license.txt new/solarus-1.5.3/tests/testing_quest/license.txt --- old/solarus-1.5.1/tests/testing_quest/license.txt 2016-11-29 21:39:30.000000000 +0100 +++ new/solarus-1.5.3/tests/testing_quest/license.txt 2017-04-03 11:49:35.000000000 +0200 @@ -1,13 +1,35 @@ -This file gives the license information of all data files of this quest. -Some resources come from communities like OpenGameArt, and others are original -creations made by us, the Solarus team. +We give in this file the license information of +the Solarus Testing Quest. - Lua scripts are licensed under the terms of the GNU General Public License in version 3. -- Data files come from the Solarus sample quest. -The ones we created are licensed under +- Most data files other than Lua scripts are licensed under Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0). http://creativecommons.org/licenses/by-sa/4.0/ -See the license.txt file of the sample_quest directory for more details. + +- A few data files are in public domain. + +Most data files of this quest come from the official +Solarus Free Resource Pack: +https://github.com/solarus-games/solarus-free-resource-pack + +Main contributors: +- Christopho +- Diarandor <diarandor at gmail dot com>: + - Source URL for images: http://diarandor.deviantart.com/ + - Source URL for sounds and music: https://soundcloud.com/diarandor/ +- Eduardo DueƱas <duen...@hotmail.com> +- Bertram + +The more detailed license information of the Solarus Free Resource Pack +can be found here: +https://github.com/solarus-games/solarus-free-resource-pack/blob/master/license.txt + +We give below the license of all other files of this quest, +that is, the ones that do not come from the Solarus Free Resource Pack. + +Scripts under GNU GPL v3: Author +------------------------- ------ +**.lua Christopho