diff --git a/.gitignore b/.gitignore index e51f032..b959e6a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,74 +1,5 @@ # This file is used to ignore files which are generated # ---------------------------------------------------------------------------- -*~ -*.autosave -*.a -*.core -*.moc -*.o -*.obj -*.orig -*.rej -*.so -*.so.* -*_pch.h.cpp -*_resource.rc -*.qm -.#* -*.*# -core -!core/ -tags -.DS_Store -.directory -*.debug -Makefile* -*.prl -*.app -moc_*.cpp -ui_*.h -qrc_*.cpp -Thumbs.db -*.res -*.rc -/.qmake.cache -/.qmake.stash - -# qtcreator generated files -*.pro.user* - -# xemacs temporary files -*.flc - -# Vim temporary files -.*.swp - -# Visual Studio generated files -*.ib_pdb_index -*.idb -*.ilk -*.pdb -*.sln -*.suo -*.vcproj -*vcproj.*.*.user -*.ncb -*.sdf -*.opensdf -*.vcxproj -*vcxproj.* - -# MinGW generated files -*.Debug -*.Release - -# Python byte code -*.pyc - -# Binaries -# -------- -*.dll -*.exe - -*.stash +build +*.user diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0e44cad --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.5) + +project(cirno-puzzle LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Wpedantic -g") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build) +set(CMAKE_RESOURCE_DIRECTORY ${CMAKE_SOURCE_DIR}/resources) + +include_directories(${CMAKE_SOURCE_DIR}/include) +file(GLOB_RECURSE SOURCES "src/*.cpp" "src/*.h" "include/*.h") + +find_package(SFML REQUIRED graphics audio window system) +add_executable(cirno-puzzle ${SOURCES} ${HEADER_FILES} ) +target_link_libraries(cirno-puzzle sfml-system sfml-audio sfml-graphics) + +file(COPY "${CMAKE_RESOURCE_DIRECTORY}" DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) diff --git a/build-debug/background_music.ogg b/build-debug/background_music.ogg deleted file mode 100644 index d428853..0000000 Binary files a/build-debug/background_music.ogg and /dev/null differ diff --git a/build-debug/footstep_sound.wav b/build-debug/footstep_sound.wav deleted file mode 100644 index 8b5105b..0000000 Binary files a/build-debug/footstep_sound.wav and /dev/null differ diff --git a/build-debug/sfml-test b/build-debug/sfml-test deleted file mode 100755 index d9c7f87..0000000 Binary files a/build-debug/sfml-test and /dev/null differ diff --git a/build-debug/test_map b/build-debug/test_map deleted file mode 100644 index cb31002..0000000 --- a/build-debug/test_map +++ /dev/null @@ -1,14 +0,0 @@ -size -7 7 -map -2 2 2 2 2 2 2 -2 0 3 0 0 6 2 -2 0 0 1 0 0 2 -2 0 0 1 1 0 2 -2 1 1 2 2 2 2 -2 0 0 0 4 0 2 -2 2 2 2 2 2 2 -trigger -1 5 4 5 6 3 1 3 1 -charge -1 2 2 diff --git a/build-release/font/Bitstream Vera License.txt b/build-release/font/Bitstream Vera License.txt deleted file mode 100644 index cf00835..0000000 --- a/build-release/font/Bitstream Vera License.txt +++ /dev/null @@ -1,123 +0,0 @@ -Bitstream Vera Fonts Copyright - -The fonts have a generous copyright, allowing derivative works (as -long as "Bitstream" or "Vera" are not in the names), and full -redistribution (so long as they are not *sold* by themselves). They -can be be bundled, redistributed and sold with any software. - -The fonts are distributed under the following copyright: - -Copyright -========= - -Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream -Vera is a trademark of Bitstream, Inc. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the fonts accompanying this license ("Fonts") and associated -documentation files (the "Font Software"), to reproduce and distribute -the Font Software, including without limitation the rights to use, -copy, merge, publish, distribute, and/or sell copies of the Font -Software, and to permit persons to whom the Font Software is furnished -to do so, subject to the following conditions: - -The above copyright and trademark notices and this permission notice -shall be included in all copies of one or more of the Font Software -typefaces. - -The Font Software may be modified, altered, or added to, and in -particular the designs of glyphs or characters in the Fonts may be -modified and additional glyphs or characters may be added to the -Fonts, only if the fonts are renamed to names not containing either -the words "Bitstream" or the word "Vera". - -This License becomes null and void to the extent applicable to Fonts -or Font Software that has been modified and is distributed under the -"Bitstream Vera" names. - -The Font Software may be sold as part of a larger software package but -no copy of one or more of the Font Software typefaces may be sold by -itself. - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL -BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, -OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT -SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. - -Except as contained in this notice, the names of Gnome, the Gnome -Foundation, and Bitstream Inc., shall not be used in advertising or -otherwise to promote the sale, use or other dealings in this Font -Software without prior written authorization from the Gnome Foundation -or Bitstream Inc., respectively. For further information, contact: -fonts at gnome dot org. - -Copyright FAQ -============= - - 1. I don't understand the resale restriction... What gives? - - Bitstream is giving away these fonts, but wishes to ensure its - competitors can't just drop the fonts as is into a font sale system - and sell them as is. It seems fair that if Bitstream can't make money - from the Bitstream Vera fonts, their competitors should not be able to - do so either. You can sell the fonts as part of any software package, - however. - - 2. I want to package these fonts separately for distribution and - sale as part of a larger software package or system. Can I do so? - - Yes. A RPM or Debian package is a "larger software package" to begin - with, and you aren't selling them independently by themselves. - See 1. above. - - 3. Are derivative works allowed? - Yes! - - 4. Can I change or add to the font(s)? - Yes, but you must change the name(s) of the font(s). - - 5. Under what terms are derivative works allowed? - - You must change the name(s) of the fonts. This is to ensure the - quality of the fonts, both to protect Bitstream and Gnome. We want to - ensure that if an application has opened a font specifically of these - names, it gets what it expects (though of course, using fontconfig, - substitutions could still could have occurred during font - opening). You must include the Bitstream copyright. Additional - copyrights can be added, as per copyright law. Happy Font Hacking! - - 6. If I have improvements for Bitstream Vera, is it possible they might get - adopted in future versions? - - Yes. The contract between the Gnome Foundation and Bitstream has - provisions for working with Bitstream to ensure quality additions to - the Bitstream Vera font family. Please contact us if you have such - additions. Note, that in general, we will want such additions for the - entire family, not just a single font, and that you'll have to keep - both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add - glyphs to the font, they must be stylistically in keeping with Vera's - design. Vera cannot become a "ransom note" font. Jim Lyles will be - providing a document describing the design elements used in Vera, as a - guide and aid for people interested in contributing to Vera. - - 7. I want to sell a software package that uses these fonts: Can I do so? - - Sure. Bundle the fonts with your software and sell your software - with the fonts. That is the intent of the copyright. - - 8. If applications have built the names "Bitstream Vera" into them, - can I override this somehow to use fonts of my choosing? - - This depends on exact details of the software. Most open source - systems and software (e.g., Gnome, KDE, etc.) are now converting to - use fontconfig (see www.fontconfig.org) to handle font configuration, - selection and substitution; it has provisions for overriding font - names and subsituting alternatives. An example is provided by the - supplied local.conf file, which chooses the family Bitstream Vera for - "sans", "serif" and "monospace". Other software (e.g., the XFree86 - core server) has other mechanisms for font substitution. \ No newline at end of file diff --git a/build-release/font/VeraMono.ttf b/build-release/font/VeraMono.ttf deleted file mode 100644 index 139f0b4..0000000 Binary files a/build-release/font/VeraMono.ttf and /dev/null differ diff --git a/build-release/sfml-test b/build-release/sfml-test deleted file mode 100755 index d9f572f..0000000 Binary files a/build-release/sfml-test and /dev/null differ diff --git a/build-release/test_map b/build-release/test_map deleted file mode 100644 index c4c0b65..0000000 --- a/build-release/test_map +++ /dev/null @@ -1,10 +0,0 @@ -size -7 7 -map -2 2 2 2 2 2 2 -2 0 0 0 0 0 2 -2 0 0 1 0 0 2 -2 0 0 1 1 0 2 -2 1 1 2 2 2 2 -2 0 0 0 0 0 2 -2 2 2 2 2 2 2 diff --git a/src/audio.h b/include/audio.h similarity index 74% rename from src/audio.h rename to include/audio.h index eee26c2..9f46231 100644 --- a/src/audio.h +++ b/include/audio.h @@ -1,5 +1,4 @@ -#ifndef AUDIO_H -#define AUDIO_H +#pragma once #include <memory> #include <array> @@ -23,11 +22,8 @@ private: sf::Sound sound; }; - using SfMusicPtr = std::unique_ptr<sf::Music>; - using SoundEffectPtr = std::unique_ptr<SoundEffect>; - - std::array<SoundEffectPtr, N_SOUNDS> array_sounds; - SfMusicPtr background_music; + std::array<std::unique_ptr<SoundEffect>, N_SOUNDS> array_sounds; + std::unique_ptr<sf::Music> background_music; public: Audio(const std::string &background_file_name, std::array<std::string, N_SOUNDS> &&sounds_paths); @@ -41,7 +37,3 @@ public: void pauseBackground(); void setBackgroundVolume(const float &volume); }; - -using AudioPtr = std::unique_ptr<Audio>; - -#endif // AUDIO_H diff --git a/src/cell.h b/include/cell.h similarity index 76% rename from src/cell.h rename to include/cell.h index c84bacd..a6e9c88 100644 --- a/src/cell.h +++ b/include/cell.h @@ -1,5 +1,4 @@ -#ifndef CELL_H -#define CELL_H +#pragma once #include <memory> #include <vector> @@ -39,10 +38,6 @@ class Hero; class Level; class Cell; -using HeroPtr = std::unique_ptr<Hero>; -using LevelPtr = std::unique_ptr<Level>; -using CellPtr = std::unique_ptr<Cell>; - /////////////////////////////////////// /// Represents interface for all level cells @@ -67,9 +62,9 @@ public: coordinate heightShift() const; /// Determine if Hero can move onto this cell or not - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) = 0; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) = 0; - virtual CellPtr clone() const = 0; + virtual std::unique_ptr<Cell> clone() const = 0; }; /////////////////////////////////////// @@ -84,9 +79,9 @@ public: virtual ~PassableCell() override; - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) override; - virtual CellPtr clone() const override; + virtual std::unique_ptr<Cell> clone() const override; }; /////////////////////////////////////// @@ -101,9 +96,9 @@ public: virtual ~WaterCell() override; - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) override; - virtual CellPtr clone() const override; + virtual std::unique_ptr<Cell> clone() const override; }; /////////////////////////////////////// @@ -118,9 +113,9 @@ public: virtual ~WallCell() override; - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) override; - virtual CellPtr clone() const override; + virtual std::unique_ptr<Cell> clone() const override; }; /////////////////////////////////////// @@ -142,9 +137,9 @@ public: virtual ~ChargeCell() override; - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) override; - virtual CellPtr clone() const override; + virtual std::unique_ptr<Cell> clone() const override; }; /////////////////////////////////////// @@ -159,9 +154,9 @@ public: virtual ~ExitCell() override; - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) override; - virtual CellPtr clone() const override; + virtual std::unique_ptr<Cell> clone() const override; }; /////////////////////////////////////// @@ -184,9 +179,9 @@ public: /// Set the coordinates of this teleport destination void setDestination(coordinate new_cell_row, coordinate new_cell_col); - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) override; - virtual CellPtr clone() const override; + virtual std::unique_ptr<Cell> clone() const override; }; /////////////////////////////////////// @@ -196,7 +191,7 @@ class TriggerCell final : public Cell { private: // Vector of cells to place on map - std::vector<CellPtr> vector_cells; + std::vector<std::unique_ptr<Cell>> vector_cells; public: TriggerCell(coordinate cell_row = 0, @@ -206,11 +201,9 @@ public: virtual ~TriggerCell() override; /// Add a cell which has to be placed to map when the trigger gets activated - void addTarget(CellPtr &&cell); + void addTarget(std::unique_ptr<Cell> &&cell); - virtual bool onMovingTo(HeroPtr &hero, LevelPtr &level) override; + virtual bool onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) override; - virtual CellPtr clone() const override; + virtual std::unique_ptr<Cell> clone() const override; }; - -#endif // CELL_H diff --git a/src/entity.h b/include/entity.h similarity index 100% rename from src/entity.h rename to include/entity.h diff --git a/src/game.h b/include/game.h similarity index 88% rename from src/game.h rename to include/game.h index e93c184..b4adcf2 100644 --- a/src/game.h +++ b/include/game.h @@ -15,9 +15,9 @@ class Game { private: // Game entities - HeroPtr hero; - LevelPtr level; - AudioPtr audio; + std::unique_ptr<Hero> hero; + std::unique_ptr<Level> level; + std::unique_ptr<Audio> audio; std::unique_ptr<Renderer> renderer; // wer is `using RendererPrt = ...` A?A?A? int current_level; diff --git a/src/hero.h b/include/hero.h similarity index 100% rename from src/hero.h rename to include/hero.h diff --git a/src/level.h b/include/level.h similarity index 92% rename from src/level.h rename to include/level.h index 4e1e5d9..404348a 100644 --- a/src/level.h +++ b/include/level.h @@ -18,7 +18,7 @@ class Level private: struct Map { - using Row = std::vector<CellPtr>; + using Row = std::vector<std::unique_ptr<Cell>>; using Matrix = std::vector<Row>; enum class SECTION @@ -43,7 +43,7 @@ private: Matrix data; size_t rows, cols; - std::array<CellPtr, N_CELLS> default_cells; + std::array<std::unique_ptr<Cell>, N_CELLS> default_cells; void init(const std::string &path = default_file_path); @@ -72,7 +72,7 @@ public: size_t cols() const; /// Get cell at position row, col - CellPtr &getCellAt(coordinate row, coordinate col); + std::unique_ptr<Cell> &getCellAt(coordinate row, coordinate col); /// Place a bridge cell void placeBridge(coordinate x, coordinate y); diff --git a/src/renderer.h b/include/renderer.h similarity index 98% rename from src/renderer.h rename to include/renderer.h index ba2dd78..c10dc2c 100644 --- a/src/renderer.h +++ b/include/renderer.h @@ -7,6 +7,8 @@ #include <SFML/Graphics/RenderWindow.hpp> #include <SFML/Window.hpp> +#include <memory> + class Level; class Cell; class Hero; diff --git a/build-debug/font/Bitstream Vera License.txt b/resources/font/Bitstream Vera License.txt similarity index 100% rename from build-debug/font/Bitstream Vera License.txt rename to resources/font/Bitstream Vera License.txt diff --git a/build-debug/font/VeraMono.ttf b/resources/font/VeraMono.ttf similarity index 100% rename from build-debug/font/VeraMono.ttf rename to resources/font/VeraMono.ttf diff --git a/src/audio.cpp b/src/audio.cpp index 50f1db1..3ede45e 100644 --- a/src/audio.cpp +++ b/src/audio.cpp @@ -2,7 +2,7 @@ Audio::Audio(const std::string &background_path, std::array<std::string, N_SOUNDS> &&sounds_paths) { - SfMusicPtr music = std::make_unique<sf::Music>(); + std::unique_ptr<sf::Music> music = std::make_unique<sf::Music>(); if (music->openFromFile(background_path)) music->setLoop(true); else @@ -10,7 +10,7 @@ Audio::Audio(const std::string &background_path, std::array<std::string, N_SOUND background_music = std::move(music); - SoundEffectPtr effect; + std::unique_ptr<SoundEffect> effect; for (int i = 0; i < N_SOUNDS; ++i) { effect = std::make_unique<SoundEffect>(); @@ -28,7 +28,7 @@ Audio::Audio(const std::string &background_path, std::array<std::string, N_SOUND bool Audio::setSound(const SOUND_TYPE &type, const std::string &sound_file_path) { - SoundEffectPtr effect = std::make_unique<SoundEffect>(); + std::unique_ptr<SoundEffect> effect = std::make_unique<SoundEffect>(); if (!effect->buffer.loadFromFile(sound_file_path)) return false; @@ -41,12 +41,13 @@ bool Audio::setSound(const SOUND_TYPE &type, const std::string &sound_file_path) void Audio::playSound(const SOUND_TYPE &type) { - array_sounds[type]->sound.play(); + if (array_sounds[type]) + array_sounds[type]->sound.play(); } bool Audio::setBackground(const std::string &music_file_path) { - SfMusicPtr music = std::make_unique<sf::Music>(); + std::unique_ptr<sf::Music> music = std::make_unique<sf::Music>(); if (!music->openFromFile(music_file_path)) return false; @@ -57,20 +58,24 @@ bool Audio::setBackground(const std::string &music_file_path) void Audio::playBackground() { - background_music->play(); + if (background_music) + background_music->play(); } void Audio::stopBackground() { - background_music->stop(); + if (background_music) + background_music->stop(); } void Audio::pauseBackground() { - background_music->pause(); + if (background_music) + background_music->pause(); } void Audio::setBackgroundVolume(const float &volume) { - background_music->setVolume(volume); + if (background_music) + background_music->setVolume(volume); } diff --git a/src/cell.cpp b/src/cell.cpp index a90daaa..b61013d 100644 --- a/src/cell.cpp +++ b/src/cell.cpp @@ -38,7 +38,7 @@ PassableCell::PassableCell(coordinate cell_row, coordinate cell_col, const sf::C PassableCell::~PassableCell() {} -bool PassableCell::onMovingTo(HeroPtr &hero, LevelPtr &level) +bool PassableCell::onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) { UNUSED(hero), UNUSED(level); @@ -46,7 +46,7 @@ bool PassableCell::onMovingTo(HeroPtr &hero, LevelPtr &level) return true; } -CellPtr PassableCell::clone() const +std::unique_ptr<Cell> PassableCell::clone() const { return std::make_unique<PassableCell>(); } @@ -60,7 +60,7 @@ WaterCell::WaterCell(coordinate cell_row, coordinate cell_col, const sf::Color & WaterCell::~WaterCell() {} -bool WaterCell::onMovingTo(HeroPtr &hero, LevelPtr &level) +bool WaterCell::onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) { // Try to use one charge to place a bridge if (hero->useCharge()) @@ -69,7 +69,7 @@ bool WaterCell::onMovingTo(HeroPtr &hero, LevelPtr &level) return false; } -CellPtr WaterCell::clone() const +std::unique_ptr<Cell> WaterCell::clone() const { return std::make_unique<WaterCell>(); } @@ -86,7 +86,7 @@ WallCell::WallCell(coordinate cell_row, coordinate cell_col, const sf::Color &co WallCell::~WallCell() {} -bool WallCell::onMovingTo(HeroPtr &hero, LevelPtr &level) +bool WallCell::onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) { UNUSED(hero), UNUSED(level); @@ -94,7 +94,7 @@ bool WallCell::onMovingTo(HeroPtr &hero, LevelPtr &level) return false; } -CellPtr WallCell::clone() const +std::unique_ptr<Cell> WallCell::clone() const { return std::make_unique<WallCell>(); } @@ -116,7 +116,7 @@ void ChargeCell::setCharges(const int &num_charges) cell_charges = num_charges; } -bool ChargeCell::onMovingTo(HeroPtr &hero, LevelPtr &level) +bool ChargeCell::onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) { // Hero picks up the charge; remove it from the map hero->refillCharges(cell_charges); @@ -125,7 +125,7 @@ bool ChargeCell::onMovingTo(HeroPtr &hero, LevelPtr &level) return true; } -CellPtr ChargeCell::clone() const +std::unique_ptr<Cell> ChargeCell::clone() const { return std::make_unique<ChargeCell>(); } @@ -139,7 +139,7 @@ ExitCell::ExitCell(coordinate cell_row, coordinate cell_col, const sf::Color &co ExitCell::~ExitCell() {} -bool ExitCell::onMovingTo(HeroPtr &hero, LevelPtr &level) +bool ExitCell::onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) { UNUSED(level); @@ -148,7 +148,7 @@ bool ExitCell::onMovingTo(HeroPtr &hero, LevelPtr &level) return true; } -CellPtr ExitCell::clone() const +std::unique_ptr<Cell> ExitCell::clone() const { return std::make_unique<ExitCell>(); } @@ -170,7 +170,7 @@ void TeleportCell::setDestination(coordinate new_cell_row, coordinate new_cell_c new_col = new_cell_col; } -bool TeleportCell::onMovingTo(HeroPtr &hero, LevelPtr &level) +bool TeleportCell::onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) { UNUSED(level); @@ -179,7 +179,7 @@ bool TeleportCell::onMovingTo(HeroPtr &hero, LevelPtr &level) return true; } -CellPtr TeleportCell::clone() const +std::unique_ptr<Cell> TeleportCell::clone() const { return std::make_unique<TeleportCell>(); } @@ -196,17 +196,17 @@ TriggerCell::TriggerCell(coordinate cell_row, coordinate cell_col, const sf::Col TriggerCell::~TriggerCell() {} -void TriggerCell::addTarget(CellPtr &&cell) +void TriggerCell::addTarget(std::unique_ptr<Cell> &&cell) { vector_cells.emplace_back(std::move(cell)); } -bool TriggerCell::onMovingTo(HeroPtr &hero, LevelPtr &level) +bool TriggerCell::onMovingTo(std::unique_ptr<Hero> &hero, std::unique_ptr<Level> &level) { UNUSED(hero); // We replace needed cells with the ones that the trigger provides. - for (CellPtr &cell : vector_cells) + for (std::unique_ptr<Cell> &cell : vector_cells) { const coordinate &row = cell->row(); const coordinate &col = cell->col(); @@ -221,7 +221,7 @@ bool TriggerCell::onMovingTo(HeroPtr &hero, LevelPtr &level) return false; } -CellPtr TriggerCell::clone() const +std::unique_ptr<Cell> TriggerCell::clone() const { return std::make_unique<TriggerCell>(); } diff --git a/src/font/Bitstream Vera License.txt b/src/font/Bitstream Vera License.txt deleted file mode 100644 index cf00835..0000000 --- a/src/font/Bitstream Vera License.txt +++ /dev/null @@ -1,123 +0,0 @@ -Bitstream Vera Fonts Copyright - -The fonts have a generous copyright, allowing derivative works (as -long as "Bitstream" or "Vera" are not in the names), and full -redistribution (so long as they are not *sold* by themselves). They -can be be bundled, redistributed and sold with any software. - -The fonts are distributed under the following copyright: - -Copyright -========= - -Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream -Vera is a trademark of Bitstream, Inc. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the fonts accompanying this license ("Fonts") and associated -documentation files (the "Font Software"), to reproduce and distribute -the Font Software, including without limitation the rights to use, -copy, merge, publish, distribute, and/or sell copies of the Font -Software, and to permit persons to whom the Font Software is furnished -to do so, subject to the following conditions: - -The above copyright and trademark notices and this permission notice -shall be included in all copies of one or more of the Font Software -typefaces. - -The Font Software may be modified, altered, or added to, and in -particular the designs of glyphs or characters in the Fonts may be -modified and additional glyphs or characters may be added to the -Fonts, only if the fonts are renamed to names not containing either -the words "Bitstream" or the word "Vera". - -This License becomes null and void to the extent applicable to Fonts -or Font Software that has been modified and is distributed under the -"Bitstream Vera" names. - -The Font Software may be sold as part of a larger software package but -no copy of one or more of the Font Software typefaces may be sold by -itself. - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL -BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, -OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT -SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. - -Except as contained in this notice, the names of Gnome, the Gnome -Foundation, and Bitstream Inc., shall not be used in advertising or -otherwise to promote the sale, use or other dealings in this Font -Software without prior written authorization from the Gnome Foundation -or Bitstream Inc., respectively. For further information, contact: -fonts at gnome dot org. - -Copyright FAQ -============= - - 1. I don't understand the resale restriction... What gives? - - Bitstream is giving away these fonts, but wishes to ensure its - competitors can't just drop the fonts as is into a font sale system - and sell them as is. It seems fair that if Bitstream can't make money - from the Bitstream Vera fonts, their competitors should not be able to - do so either. You can sell the fonts as part of any software package, - however. - - 2. I want to package these fonts separately for distribution and - sale as part of a larger software package or system. Can I do so? - - Yes. A RPM or Debian package is a "larger software package" to begin - with, and you aren't selling them independently by themselves. - See 1. above. - - 3. Are derivative works allowed? - Yes! - - 4. Can I change or add to the font(s)? - Yes, but you must change the name(s) of the font(s). - - 5. Under what terms are derivative works allowed? - - You must change the name(s) of the fonts. This is to ensure the - quality of the fonts, both to protect Bitstream and Gnome. We want to - ensure that if an application has opened a font specifically of these - names, it gets what it expects (though of course, using fontconfig, - substitutions could still could have occurred during font - opening). You must include the Bitstream copyright. Additional - copyrights can be added, as per copyright law. Happy Font Hacking! - - 6. If I have improvements for Bitstream Vera, is it possible they might get - adopted in future versions? - - Yes. The contract between the Gnome Foundation and Bitstream has - provisions for working with Bitstream to ensure quality additions to - the Bitstream Vera font family. Please contact us if you have such - additions. Note, that in general, we will want such additions for the - entire family, not just a single font, and that you'll have to keep - both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add - glyphs to the font, they must be stylistically in keeping with Vera's - design. Vera cannot become a "ransom note" font. Jim Lyles will be - providing a document describing the design elements used in Vera, as a - guide and aid for people interested in contributing to Vera. - - 7. I want to sell a software package that uses these fonts: Can I do so? - - Sure. Bundle the fonts with your software and sell your software - with the fonts. That is the intent of the copyright. - - 8. If applications have built the names "Bitstream Vera" into them, - can I override this somehow to use fonts of my choosing? - - This depends on exact details of the software. Most open source - systems and software (e.g., Gnome, KDE, etc.) are now converting to - use fontconfig (see www.fontconfig.org) to handle font configuration, - selection and substitution; it has provisions for overriding font - names and subsituting alternatives. An example is provided by the - supplied local.conf file, which chooses the family Bitstream Vera for - "sans", "serif" and "monospace". Other software (e.g., the XFree86 - core server) has other mechanisms for font substitution. \ No newline at end of file diff --git a/src/font/VeraMono.ttf b/src/font/VeraMono.ttf deleted file mode 100644 index 139f0b4..0000000 Binary files a/src/font/VeraMono.ttf and /dev/null differ diff --git a/src/level.cpp b/src/level.cpp index dacd937..1da7281 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -169,7 +169,7 @@ size_t Level::cols() const return map.cols; } -CellPtr &Level::getCellAt(coordinate row, coordinate col) +std::unique_ptr<Cell> &Level::getCellAt(coordinate row, coordinate col) { return map.data[row][col]; } diff --git a/src/renderer.cpp b/src/renderer.cpp index a6b3f1b..61e8f7e 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -19,7 +19,7 @@ Renderer::Renderer() : vertical_shift(0), horizontal_shift(0) { - font.loadFromFile("font/VeraMono.ttf"); + font.loadFromFile("resources/font/VeraMono.ttf"); text_charges.setFont(font); text_charges.setFillColor(palette::White); text_charges.setCharacterSize(25); @@ -43,7 +43,7 @@ Renderer::Renderer() : brush_wall.setOutlineThickness(0); } -bool Renderer::drawCell(const CellPtr &cell, sf::RenderWindow &main_window) +bool Renderer::drawCell(const std::unique_ptr<Cell> &cell, sf::RenderWindow &main_window) { vertical_shift = static_cast<float>(cell->heightShift()); @@ -72,7 +72,7 @@ bool Renderer::drawCell(const CellPtr &cell, sf::RenderWindow &main_window) return true; } -bool Renderer::render(const LevelPtr &level, const HeroPtr &hero, sf::RenderWindow &main_window) +bool Renderer::render(const std::unique_ptr<Level> &level, const std::unique_ptr<Hero> &hero, sf::RenderWindow &main_window) { if (!hero || !level) return false; diff --git a/src/sfml-test.pro b/src/sfml-test.pro deleted file mode 100644 index 43e0b3e..0000000 --- a/src/sfml-test.pro +++ /dev/null @@ -1,30 +0,0 @@ -TEMPLATE = app -CONFIG += c++17 -CONFIG -= console app_bundle -CONFIG -= qt - -QMAKE_CXXFLAGS = -Wall -Werror -Wextra -Wpedantic -Wconversion -std=c++17 -O0 -g - -SOURCES += \ - audio.cpp \ - cell.cpp \ - entity.cpp \ - game.cpp \ - hero.cpp \ - level.cpp \ - main.cpp \ - renderer.cpp - -HEADERS += \ - audio.h \ - cell.h \ - entity.h \ - game.h \ - hero.h \ - level.h \ - renderer.h - -# Only to highlight syntax when I am on Windows -win32:INCLUDEPATH += d:\SFML-2.5.1\include - -LIBS += -lsfml-graphics -lsfml-audio -lsfml-window -lsfml-system