diff --git a/src/emulator/Cpu.cpp b/src/emulator/Cpu.cpp index b51aa79..b8eb2e5 100644 --- a/src/emulator/Cpu.cpp +++ b/src/emulator/Cpu.cpp @@ -1,5 +1,9 @@ #include "Cpu.h" +#include +#include +#include + Cpu::Cpu(Renderer* renderer, Keyboard* keyboard, Speaker * speaker) { this->memory.resize(4096); this->registers.resize(16); diff --git a/src/emulator/Cpu.h b/src/emulator/Cpu.h index 3daefba..165b3c1 100644 --- a/src/emulator/Cpu.h +++ b/src/emulator/Cpu.h @@ -3,8 +3,6 @@ #include #include -#include -#include #include #include "Keyboard.h" diff --git a/src/emulator/Keyboard.h b/src/emulator/Keyboard.h index 5a7946c..afcd7df 100644 --- a/src/emulator/Keyboard.h +++ b/src/emulator/Keyboard.h @@ -1,10 +1,9 @@ #ifndef KEYBOARD_H #define KEYBOARD_H -#include -#include -#include #include +#include +#include class Keyboard { public: diff --git a/src/emulator/Speaker.h b/src/emulator/Speaker.h index a51adca..7a95a8c 100644 --- a/src/emulator/Speaker.h +++ b/src/emulator/Speaker.h @@ -3,6 +3,7 @@ class Speaker { public: + virtual ~Speaker() = default; virtual void play() = 0; virtual void stop() = 0; }; diff --git a/src/main.cpp b/src/main.cpp index a3364fc..1a672ab 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,5 @@ #include + #include #include #include @@ -23,11 +24,11 @@ int main(int argc, char **argv) { if (command == "--rom") { if (i + 1 < argc) { return Emulator().launch(argv[++i]); - } else { - std::cerr << "Please include the path to the file" << std::endl; - return 0; } - } else if (command == "--help") { + std::cerr << "Please include the path to the file" << std::endl; + return 0; + } + if (command == "--help") { std::cerr << "Usage: 8chocchip --rom " << std::endl; return 0; } diff --git a/src/sfml/Emulator.h b/src/sfml/Emulator.h index 6b30fb7..46ed1cc 100644 --- a/src/sfml/Emulator.h +++ b/src/sfml/Emulator.h @@ -3,8 +3,6 @@ #include -#include "SFML/Graphics.hpp" - class Emulator { private: public: diff --git a/src/sfml/InputHandler.cpp b/src/sfml/InputHandler.cpp index 8998c1e..17254a5 100644 --- a/src/sfml/InputHandler.cpp +++ b/src/sfml/InputHandler.cpp @@ -1,4 +1,6 @@ #include "InputHandler.h" + +#include #include void InputHandler::addKey(sf::Keyboard::Key key) { diff --git a/src/sfml/InputHandler.h b/src/sfml/InputHandler.h index b9198fe..eb01dfc 100644 --- a/src/sfml/InputHandler.h +++ b/src/sfml/InputHandler.h @@ -1,7 +1,6 @@ #ifndef INC_8CHOCCHIP_INPUTHANDLER_H #define INC_8CHOCCHIP_INPUTHANDLER_H -#include #include #include "SFML/Window/Keyboard.hpp" diff --git a/src/sfml/MainMenu.cpp b/src/sfml/MainMenu.cpp index db194b3..eb13f24 100644 --- a/src/sfml/MainMenu.cpp +++ b/src/sfml/MainMenu.cpp @@ -3,8 +3,7 @@ #include #include -#include "libconfig.h" -#include "libconfig.hh" +#include "libconfig.h++" #include "nfd.hpp" #include "Emulator.h" @@ -14,9 +13,8 @@ MainMenu::MainMenu(std::unordered_map>& romFiles, std::vector& romDirectories, std::vector>& windows, std::string configFilePath) : - romDirectories(romDirectories), romFiles(romFiles), windows(windows), - window(sf::VideoMode(640, 480), "8ChocChip - Chip8 Emulator"), - inputHandler() { + window(sf::VideoMode(640, 480), "8ChocChip - Chip8 Emulator"), windows(windows), + romDirectories(romDirectories), romFiles(romFiles), inputHandler() { NFD::Guard nfdGuard; @@ -37,7 +35,7 @@ MainMenu::MainMenu(std::unordered_map>& for (auto& thing : romFiles) { for (std::string& file : thing.second) { - TextButton romButton(0, 25 * roms.size(), this->window.getSize().x, 25, MiscUtil::getFileFromPath(file), &font); + TextButton romButton(0, 25.0f * roms.size(), this->window.getSize().x, 25, MiscUtil::getFileFromPath(file), &font); roms.emplace(file, romButton); } @@ -50,14 +48,14 @@ MainMenu::MainMenu(std::unordered_map>& auto start = std::chrono::high_resolution_clock::now(); auto end = std::chrono::high_resolution_clock::now(); - std::chrono::duration elapsed_seconds; + std::chrono::duration elapsed_seconds{}; // Variables to count frames int frames = 0; double fps; while (this->window.isOpen()) { - sf::Event event; + sf::Event event{}; sf::Vector2i pos = sf::Mouse::getPosition(this->window); this->inputHandler.updateLastKeys(); @@ -110,9 +108,8 @@ MainMenu::MainMenu(std::unordered_map>& button.update(&this->inputHandler, pos); if (button.isJustClicked()) { - nfdresult_t result = NFD::PickFolder(outPath); - if (result == NFD_OKAY) { + if (nfdresult_t result = PickFolder(outPath); result == NFD_OKAY) { libconfig::Config config; config.readFile(configFilePath); @@ -140,7 +137,7 @@ MainMenu::MainMenu(std::unordered_map>& // Add the file path to the romFiles entry romFiles.find(&romDirectories.back())->second.emplace_back(file.path().string()); - TextButton romButton(0, 25 * roms.size(), this->window.getSize().x, 25, file.path().filename().string(), &font); + TextButton romButton(0, 25.0f * roms.size(), this->window.getSize().x, 25, file.path().filename().string(), &font); roms.emplace(file.path().string(), romButton); } config.writeFile(configFilePath); diff --git a/src/sfml/MainMenu.h b/src/sfml/MainMenu.h index 3330534..9d5ec51 100644 --- a/src/sfml/MainMenu.h +++ b/src/sfml/MainMenu.h @@ -3,10 +3,8 @@ #include #include -#include #include "SFML/Graphics.hpp" - #include "InputHandler.h" class MainMenu { diff --git a/src/sfml/emulator/SfmlRenderer.cpp b/src/sfml/emulator/SfmlRenderer.cpp index a2551e2..cfbeacc 100644 --- a/src/sfml/emulator/SfmlRenderer.cpp +++ b/src/sfml/emulator/SfmlRenderer.cpp @@ -1,12 +1,10 @@ #include "SfmlRenderer.h" -SfmlRenderer::SfmlRenderer(sf::RenderWindow* window) { - this->window = window; - +SfmlRenderer::SfmlRenderer(sf::RenderWindow* window) : window(window) { this->scale = 15; // Scale up because 64 x 32 would be tiny on our screens now } -void SfmlRenderer::drawPixel(uint16_t x, uint16_t y) { +void SfmlRenderer::drawPixel(const uint16_t x, const uint16_t y) { sf::RectangleShape rectangle(sf::Vector2f(getScale(), getScale())); rectangle.setPosition(x * getScale(), y * getScale()); rectangle.setFillColor(sf::Color::White); diff --git a/src/sfml/emulator/SfmlSpeaker.cpp b/src/sfml/emulator/SfmlSpeaker.cpp index fe326e5..280b5bd 100644 --- a/src/sfml/emulator/SfmlSpeaker.cpp +++ b/src/sfml/emulator/SfmlSpeaker.cpp @@ -1,4 +1,5 @@ #include "SfmlSpeaker.h" + #include SfmlSpeaker::SfmlSpeaker() { @@ -6,10 +7,10 @@ SfmlSpeaker::SfmlSpeaker() { this->sound.setVolume(100.f); this->sound.setLoop(true); - const unsigned int sampleRate = 44100; - const unsigned int frequency = 440; + constexpr unsigned int sampleRate = 44100; sf::Int16 samples[sampleRate]; for (unsigned int i = 0; i < sampleRate; ++i) { + constexpr unsigned int frequency = 440; samples[i] = static_cast(32767 * std::sin(2 * 3.14159265 * frequency * i / sampleRate)); // Mmmm yum pi } this->soundBuffer.loadFromSamples(samples, sampleRate, 1, sampleRate); diff --git a/src/sfml/emulator/SfmlSpeaker.h b/src/sfml/emulator/SfmlSpeaker.h index 584c721..83888d8 100644 --- a/src/sfml/emulator/SfmlSpeaker.h +++ b/src/sfml/emulator/SfmlSpeaker.h @@ -1,9 +1,10 @@ #ifndef INC_8CHOCCHIP_SFMLSPEAKER_H #define INC_8CHOCCHIP_SFMLSPEAKER_H -#include "../../emulator/Speaker.h" #include "SFML/Audio.hpp" +#include "../../emulator/Speaker.h" + class SfmlSpeaker : public Speaker { private: sf::SoundBuffer soundBuffer; diff --git a/src/sfml/ui/TextButton.cpp b/src/sfml/ui/TextButton.cpp index c729372..7c56856 100644 --- a/src/sfml/ui/TextButton.cpp +++ b/src/sfml/ui/TextButton.cpp @@ -1,8 +1,6 @@ #include "TextButton.h" -#include "../../util/MiscUtil.h" - -TextButton::TextButton(float x, float y, float width, float height, std::string buttonText, sf::Font* font) { +TextButton::TextButton(float x, float y, float width, float height, const std::string& buttonText, sf::Font* font) { this->button.setSize(sf::Vector2f(width, height)); this->button.setPosition(sf::Vector2f(x, y)); @@ -49,7 +47,7 @@ void TextButton::update(InputHandler* inputHandler, sf::Vector2i pos) { } } -void TextButton::updateColour(sf::Color color) { +void TextButton::updateColour(const sf::Color color) { if (this->color == color) { return; } @@ -57,15 +55,15 @@ void TextButton::updateColour(sf::Color color) { this->button.setFillColor(color); } -void TextButton::draw(sf::RenderWindow &window) { +void TextButton::draw(sf::RenderWindow &window) const { window.draw(this->button); window.draw(this->text); } -bool TextButton::isClicked() { +bool TextButton::isClicked() const { return this->isPressed; } -bool TextButton::isJustClicked() { +bool TextButton::isJustClicked() const { return !this->lastPressed && this->isPressed; } \ No newline at end of file diff --git a/src/sfml/ui/TextButton.h b/src/sfml/ui/TextButton.h index 8d3ba4b..7e3491a 100644 --- a/src/sfml/ui/TextButton.h +++ b/src/sfml/ui/TextButton.h @@ -11,27 +11,27 @@ class TextButton { sf::Vector2f originalSize; sf::Vector2f originalPosition; sf::Text text; - sf::Font* font; + sf::Font* font{}; sf::Color color; sf::Color idleColor; sf::Color hoverColor; sf::Color activeColor; bool isPressed; - bool lastPressed; + bool lastPressed{}; bool isHovered; public: - TextButton(float x, float y, float width, float height, std::string buttonText, sf::Font* font); + TextButton(float x, float y, float width, float height, const std::string& buttonText, sf::Font *font); - void updateSize(const sf::Vector2u originalSize, const sf::Vector2u updatedSize); + void updateSize(sf::Vector2u originalSize, sf::Vector2u updatedSize); void update(InputHandler* inputHandler, sf::Vector2i pos); - void draw(sf::RenderWindow& window); + void draw(sf::RenderWindow& window) const; - bool isClicked(); + bool isClicked() const; - bool isJustClicked(); + bool isJustClicked() const; void updateColour(sf::Color color); }; diff --git a/src/util/MiscUtil.cpp b/src/util/MiscUtil.cpp index 593d5ef..c31182a 100644 --- a/src/util/MiscUtil.cpp +++ b/src/util/MiscUtil.cpp @@ -1,16 +1,15 @@ #include "MiscUtil.h" +#include + std::string MiscUtil::toLowerCase(const std::string_view string) { std::string result(string); // Create a mutable string from the string_view - std::transform(result.begin(), result.end(), result.begin(), - [](unsigned char c) { return std::tolower(c); }); + std::transform(result.begin(), result.end(), result.begin(),[](const unsigned char c) { return std::tolower(c); }); return result; } std::string MiscUtil::getFileFromPath(std::string path) { - size_t lastSlashPos = path.find_last_of('/'); - - if (lastSlashPos != std::string::npos) { + if (const size_t lastSlashPos = path.find_last_of('/'); lastSlashPos != std::string::npos) { return path.substr(lastSlashPos + 1); } diff --git a/src/util/MiscUtil.h b/src/util/MiscUtil.h index 9331e80..b2591a8 100644 --- a/src/util/MiscUtil.h +++ b/src/util/MiscUtil.h @@ -3,14 +3,10 @@ #include #include -#include - -#include "SFML/Window/Keyboard.hpp" -#include "SFML/Window/Mouse.hpp" class MiscUtil { public: - static std::string toLowerCase(const std::string_view string); + static std::string toLowerCase(std::string_view string); static std::string getFileFromPath(std::string path); };