瀏覽代碼

Updating that branch.

Eiyeron Fulmincendii 9 年之前
父節點
當前提交
c415ccf6f4

+ 14 - 0
platform/include/Logger.h

@@ -0,0 +1,14 @@
+#ifndef INCLUDE_LOGGER_H
+#define INCLUDE_LOGGER_H
+namespace WalrusRPG
+{
+    namespace Logger
+    {
+        void log(const char *fmt, ...);
+        void debug(const char *fmt, ...);
+        void warn(const char *fmt, ...);
+        void error(const char *fmt, ...);
+    }
+}
+
+#endif

+ 3 - 0
platform/nspire/Graphics.cpp

@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include "Graphics.h"
+#include "Logger.h"
 #include "CXfb.h"
 #include "utility/misc.h"
 #include "utility/minmax.h"
@@ -10,11 +11,13 @@ using WalrusRPG::Utils::Rect;
 
 void Graphics::init()
 {
+    Logger::log("Graphics init");
     CXfb::buffer_allocate();
 }
 
 void Graphics::deinit()
 {
+    Logger::log("Graphics deinit");
     CXfb::buffer_free();
 }
 

+ 5 - 0
platform/nspire/Interrupts.cpp

@@ -1,4 +1,5 @@
 #include "Interrupts.h"
+#include "Logger.h"
 #include "CXfb.h"
 
 #define INTERRUPTS Nspire::Interrupts
@@ -21,6 +22,9 @@ static bool is_on = false;
 
 void INTERRUPTS::init()
 {
+    if (is_on)
+        return;
+    WalrusRPG::Logger::log("Interrupts init");
     is_on = true;
 
     interrupt_select_bkp = *interrupt_select;
@@ -47,6 +51,7 @@ void INTERRUPTS::off()
 {
     if (!is_on)
         return;
+    WalrusRPG::Logger::log("Interupts deinit");
     is_on = false;
     // Disable IRQ in the CPU
     asm(

+ 19 - 0
platform/nspire/Logger.cpp

@@ -0,0 +1,19 @@
+#include "Logger.h"
+
+using namespace WalrusRPG;
+
+void Logger::log(const char *fmt, ...)
+{
+}
+
+void Logger::debug(const char *fmt, ...)
+{
+}
+
+void Logger::warn(const char *fmt, ...)
+{
+}
+
+void Logger::error(const char *fmt, ...)
+{
+}

+ 3 - 0
platform/nspire/Quirks.cpp

@@ -3,6 +3,7 @@
 #include <memory>
 #include <TINYSTL/string.h>
 #include "Quirks.h"
+#include "Logger.h"
 #include "Interrupts.h"
 #include "platform.h"
 
@@ -18,6 +19,7 @@ namespace
 
 void Quirks::init(const char *argv_0)
 {
+    WalrusRPG::Logger::log("Quirks init");
     Interrupts::init();
     // Find last '/' occurence and remove the trailing characters
     // so we get rid of the executable name.
@@ -38,6 +40,7 @@ void Quirks::init(const char *argv_0)
 
 void Quirks::deinit()
 {
+    WalrusRPG::Logger::log("Quirks deinit");
     Interrupts::off();
     delete[] base_path;
 }

+ 3 - 0
platform/nspire/Timing.cpp

@@ -1,4 +1,5 @@
 #include "Timing.h"
+#include "Logger.h"
 #include "Timers.h"
 
 #define TIMING WalrusRPG::Timing
@@ -7,6 +8,7 @@ using namespace Nspire;
 
 void TIMING::init()
 {
+    Logger::log("Timing init");
     Timers::init(TIMER);
     Timers::mode(TIMER, true, false, false, 1, true);
     Timers::load(TIMER, 0xFFFFFFFF);
@@ -14,6 +16,7 @@ void TIMING::init()
 
 void TIMING::deinit()
 {
+    Logger::log("Timing deinit");
     Timers::restore(TIMER);
 }
 

+ 3 - 0
platform/sfml/Graphics.cpp

@@ -1,4 +1,5 @@
 #include "Graphics.h"
+#include "Logger.h"
 #include "sfwindow.h"
 #include <SFML/Graphics.hpp>
 #include "utility/misc.h"
@@ -14,6 +15,7 @@ sf::RenderTexture buffer;
 
 void Graphics::init()
 {
+    Logger::log("Graphics init");
     // window.create(sf::VideoMode::getDesktopMode(), "WalrusRPG",
     // sf::Style::Fullscreen);
     window.create(sf::VideoMode(640, 480), "WalrusRPG");
@@ -24,6 +26,7 @@ void Graphics::init()
 
 void Graphics::deinit()
 {
+    Logger::log("Graphics deinit");
     window.close();
 }
 

+ 56 - 0
platform/sfml/Logger.cpp

@@ -0,0 +1,56 @@
+#include "Logger.h"
+#include <stdio.h>
+#include <stdarg.h>
+#include <time.h>
+using namespace WalrusRPG;
+
+namespace
+{
+    void print_premessage(const char *type)
+    {
+        char date_buffer[256];
+        time_t now = time(0);
+        strftime(date_buffer, 256, "%Y-%m-%d %H:%M:%S", localtime(&now));
+        printf("%s %5s : ", date_buffer, type);
+    }
+}
+
+void Logger::log(const char *fmt, ...)
+{
+    print_premessage("  [LOG]");
+    va_list args;
+    va_start(args, fmt);
+    vprintf(fmt, args);
+    va_end(args);
+    puts("");
+}
+
+void Logger::debug(const char *fmt, ...)
+{
+    print_premessage("[DEBUG]");
+    va_list args;
+    va_start(args, fmt);
+    vprintf(fmt, args);
+    va_end(args);
+    puts("");
+}
+
+void Logger::warn(const char *fmt, ...)
+{
+    print_premessage(" [WARN]");
+    va_list args;
+    va_start(args, fmt);
+    vprintf(fmt, args);
+    va_end(args);
+    puts("");
+}
+
+void Logger::error(const char *fmt, ...)
+{
+    print_premessage("[ERROR]");
+    va_list args;
+    va_start(args, fmt);
+    vprintf(fmt, args);
+    va_end(args);
+    puts("");
+}

+ 3 - 0
platform/sfml/Quirks.cpp

@@ -1,5 +1,6 @@
 #include <cstring>
 #include "Quirks.h"
+#include "Logger.h"
 #include "utility/misc.h"
 #include "sfwindow.h"
 
@@ -8,11 +9,13 @@ using tinystl::string;
 
 void Quirks::init(const char *argv_0)
 {
+    Logger::log("Quirks init");
     UNUSED(argv_0);
 }
 
 void Quirks::deinit()
 {
+    Logger::log("Graphics deinit");
 }
 
 std::unique_ptr<char> Quirks::solve_absolute_path(const char *path)

+ 6 - 7
platform/sfml/Texture.cpp

@@ -7,11 +7,10 @@
 #include "utility/misc.h"
 #include "render/Pixel.h"
 
-#define TEXTURE WalrusRPG::Graphics::Texture
-
+using namespace WalrusRPG::Graphics; /*Texture*/
 using WalrusRPG::Graphics::Pixel;
 
-TEXTURE::Texture(char *data) : data()
+Texture::Texture(char *data) : data()
 {
     uint16_t *data_16 = (uint16_t *) data;
     this->data.create(data_16[0], data_16[1]);
@@ -33,7 +32,7 @@ TEXTURE::Texture(char *data) : data()
     free(pixels);
 }
 
-TEXTURE::Texture(WalrusRPG::PIAF::File entry) : data()
+Texture::Texture(WalrusRPG::PIAF::File entry) : data()
 {
     // UNUSED(data);
     // TOOD : load from PIAF
@@ -41,17 +40,17 @@ TEXTURE::Texture(WalrusRPG::PIAF::File entry) : data()
     this->data.loadFromMemory(entry.get(), entry.file_size);
 }
 
-TEXTURE::~Texture()
+Texture::~Texture()
 {
 }
 
-WalrusRPG::Utils::Rect TEXTURE::get_dimensions()
+WalrusRPG::Utils::Rect Texture::get_dimensions()
 {
     sf::Vector2u size = data.getSize();
     return WalrusRPG::Utils::Rect(0, 0, size.x, size.y);
 }
 
-const WalrusRPG::Graphics::Pixel TEXTURE::get_pixel(unsigned x, unsigned y)
+const WalrusRPG::Graphics::Pixel Texture::get_pixel(unsigned x, unsigned y)
 {
     UNUSED(x);
     UNUSED(y);

+ 7 - 4
platform/sfml/Timing.cpp

@@ -1,20 +1,23 @@
 #include "Timing.h"
+#include "Logger.h"
 #include <SFML/System/Clock.hpp>
 #include <cstdio>
 
-#define TIMING WalrusRPG::Timing
+using namespace WalrusRPG; /*Timing*/
 
 sf::Clock clock;
 
-void TIMING::init()
+void Timing::init()
 {
+    Logger::log("Timing init");
 }
 
-void TIMING::deinit()
+void Timing::deinit()
 {
+    Logger::log("Timing deinit");
 }
 
-unsigned TIMING::gettime()
+unsigned Timing::gettime()
 {
     return clock.getElapsedTime().asMicroseconds();
 }

+ 4 - 0
src/engine/StateMachine.cpp

@@ -1,4 +1,5 @@
 #include "StateMachine.h"
+#include "Logger.h"
 #include "Timing.h"
 #include "platform.h"
 #include "Graphics.h"
@@ -9,6 +10,7 @@
 using namespace WalrusRPG; /*::StateMachine*/
 using namespace WalrusRPG::Graphics;
 using namespace WalrusRPG::Timing;
+using namespace WalrusRPG::Logger;
 using WalrusRPG::Input::Key;
 using WalrusRPG::Input::KeyState;
 using WalrusRPG::States::State;
@@ -60,10 +62,12 @@ namespace
 
 void StateMachine::init()
 {
+    log("State Machine init");
 }
 
 void StateMachine::deinit()
 {
+    log("State Machine deinit");
     stack.clear();
 }
 

+ 5 - 2
src/engine/main.cpp

@@ -1,5 +1,6 @@
 #include "StateMachine.h"
 #include "Timing.h"
+#include "Logger.h"
 #include "render/Text.h"
 #include "Graphics.h"
 #include "Quirks.h"
@@ -16,7 +17,7 @@ using namespace WalrusRPG::Graphics;
 int main(int argc, char *argv[])
 {
     UNUSED(argc);
-
+    Logger::log("WalrusRPG Init");
     Graphics::init();
     Timing::init();
     Quirks::init(argv[0]);
@@ -53,13 +54,15 @@ int main(int argc, char *argv[])
     StateMachine::init();
     StateMachine::push(new States::StateMap(0, 0, map));
     StateMachine::run();
-    StateMachine::deinit();
 
+    Logger::log("WalrusRPG Deinit");
+    StateMachine::deinit();
     Quirks::deinit();
     Timing::deinit();
     Graphics::deinit();
     delete[] dungeonTest;
     delete[] dungeonTest2;
+    Logger::log("WalrusRPG Exit");
 
     return 0;
 }

+ 6 - 2
src/piaf/Archive.cpp

@@ -2,11 +2,12 @@
 #include <cstdio>
 #include <memory>
 #include <zlib.h>
-#if NSPIRE
+#if TARGET_NSPIRE
 #include "../../platform/nspire/Interrupts.h"
 #endif
 #include "Archive.h"
 #include "Quirks.h"
+#include "Logger.h"
 #include "utility/misc.h"
 
 using tinystl::string;
@@ -16,8 +17,9 @@ using WalrusRPG::PIAF::File;
 using WalrusRPG::PIAF::FileType;
 using WalrusRPG::PIAF::CompressionType;
 using namespace WalrusRPG::PIAF;
+using namespace WalrusRPG::Logger;
 
-#if TARGET_NSPIRE
+#ifdef TARGET_NSPIRE
 using namespace Nspire;
 #endif
 namespace
@@ -67,6 +69,7 @@ Archive::Archive(string &filepath) : Archive(filepath.c_str())
 Archive::Archive(const char *filepath)
     : file(nullptr), entries(nullptr), files_data(nullptr), files_loaded(nullptr)
 {
+    log("PIAF : Loading %s", filepath);
 #if TARGET_NSPIRE
     Interrupts::off();
 #endif
@@ -196,6 +199,7 @@ Archive::Archive(const char *filepath)
 
 Archive::~Archive()
 {
+    log("PIAF : Freeing file");
     if (file != nullptr)
         fclose(file);
     if (entries != nullptr)

+ 3 - 0
src/piaf/Exceptions.cpp

@@ -1,3 +1,4 @@
+#include "Logger.h"
 #include "Archive.h"
 #include <cmath>
 #include <cstring>
@@ -5,12 +6,14 @@
 
 using WalrusRPG::PIAF::PIAFException;
 using namespace WalrusRPG::PIAF;
+using namespace WalrusRPG::Logger;
 
 PIAFException::PIAFException(const char *format, ...) : msg("")
 {
     va_list list;
     va_start(list, format);
     vsnprintf(msg, 1024, format, list);
+    log(msg);
     va_end(list);
 }
 

+ 2 - 2
src/render/Pixel.cpp

@@ -31,8 +31,8 @@ bool Pixel::operator==(const Pixel &col)
     return value == col.value;
 }
 
-#define CONST_COLOR(color, r, g, b) \
-    const WalrusRPG::Graphics::Pixel WalrusRPG::Graphics::color(r, g, b)
+#define CONST_COLOR(COLOR, r, g, b) const Pixel WalrusRPG::Graphics::COLOR(r, g, b)
+
 CONST_COLOR(Black, 0, 0, 0);
 CONST_COLOR(DarkGray, 64, 64, 64);
 CONST_COLOR(Gray, 128, 128, 128);