Added a debug display
This commit is contained in:
@@ -45,3 +45,9 @@ std::string truncatePath(std::string pathname) {
|
|||||||
}).base(),
|
}).base(),
|
||||||
pathname.end());
|
pathname.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string to_string_custom(int i) {
|
||||||
|
char buffer[20];
|
||||||
|
snprintf(buffer, 20, "%d", i);
|
||||||
|
return std::string(buffer);
|
||||||
|
}
|
||||||
|
|||||||
@@ -27,4 +27,7 @@
|
|||||||
int snapToBase(int base, int x);
|
int snapToBase(int base, int x);
|
||||||
std::string truncatePath(std::string pathname);
|
std::string truncatePath(std::string pathname);
|
||||||
|
|
||||||
|
//fixing a known bug in g++
|
||||||
|
std::string to_string_custom(int i);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+110
-6
@@ -23,9 +23,9 @@
|
|||||||
|
|
||||||
#include "utility.hpp"
|
#include "utility.hpp"
|
||||||
|
|
||||||
#include <stdexcept>
|
|
||||||
#include <iostream>
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <iostream>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -34,11 +34,10 @@ using namespace std;
|
|||||||
//-------------------------
|
//-------------------------
|
||||||
|
|
||||||
EditorScene::EditorScene() {
|
EditorScene::EditorScene() {
|
||||||
//32 * 32 sized tiles
|
debugInfo.CreateSurface(256, 256);
|
||||||
pager.SetWidth(32*4);
|
|
||||||
pager.SetHeight(32*4);
|
|
||||||
|
|
||||||
font.LoadSurface("rsc\\graphics\\fonts\\pk_white_8.bmp");
|
font.LoadSurface("rsc\\graphics\\fonts\\pk_white_8.bmp");
|
||||||
|
|
||||||
buttonImage.LoadSurface("rsc\\graphics\\interface\\button_menu.bmp");
|
buttonImage.LoadSurface("rsc\\graphics\\interface\\button_menu.bmp");
|
||||||
buttonImage.SetClipH(buttonImage.GetClipH()/3);
|
buttonImage.SetClipH(buttonImage.GetClipH()/3);
|
||||||
|
|
||||||
@@ -47,7 +46,8 @@ EditorScene::EditorScene() {
|
|||||||
|
|
||||||
menuBar.SetEntries({
|
menuBar.SetEntries({
|
||||||
{"File", "New", "Open", "Save", "Save As...", "Close", "Exit"},
|
{"File", "New", "Open", "Save", "Save As...", "Close", "Exit"},
|
||||||
{"Edit", "Null"}
|
{"Edit", "Set Tile", "Load Sheet", "Delete Sheet", "Metadata", "Run Script"},
|
||||||
|
{"Debugging", "Debug On", "Debug Off", "Toggle Debug"}
|
||||||
});
|
});
|
||||||
|
|
||||||
// pager.SetOnNew([](Region* const ptr){
|
// pager.SetOnNew([](Region* const ptr){
|
||||||
@@ -58,6 +58,10 @@ EditorScene::EditorScene() {
|
|||||||
// printf("Delete Region: %d, %d\n", ptr->GetX(), ptr->GetY());
|
// printf("Delete Region: %d, %d\n", ptr->GetX(), ptr->GetY());
|
||||||
// });
|
// });
|
||||||
|
|
||||||
|
//32 * 32 sized tiles
|
||||||
|
pager.SetWidth(32*4);
|
||||||
|
pager.SetHeight(32*4);
|
||||||
|
|
||||||
sheetList.push_front(TileSheet());
|
sheetList.push_front(TileSheet());
|
||||||
sheetList.front().LoadSurface("rsc\\graphics\\tilesets\\terrain.bmp", 32, 32);
|
sheetList.front().LoadSurface("rsc\\graphics\\tilesets\\terrain.bmp", 32, 32);
|
||||||
}
|
}
|
||||||
@@ -87,12 +91,31 @@ void EditorScene::Render(SDL_Surface* const screen) {
|
|||||||
pager.DrawTo(screen, &sheetList, camera.x, camera.y);
|
pager.DrawTo(screen, &sheetList, camera.x, camera.y);
|
||||||
|
|
||||||
//draw a big bar across the top
|
//draw a big bar across the top
|
||||||
|
buttonImage.SetClipY(0);
|
||||||
for (int i = 0; i < screen->w; i += buttonImage.GetClipW()) {
|
for (int i = 0; i < screen->w; i += buttonImage.GetClipW()) {
|
||||||
buttonImage.DrawTo(screen, i, 0);
|
buttonImage.DrawTo(screen, i, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//draw the menu bar
|
//draw the menu bar
|
||||||
menuBar.DrawTo(screen);
|
menuBar.DrawTo(screen);
|
||||||
|
|
||||||
|
//draw some debugging info
|
||||||
|
if (debugOpen) {
|
||||||
|
SDL_FillRect(debugInfo.GetSurface(), 0, 0);
|
||||||
|
DrawToDebugInfo(string("camera.x: ") + to_string_custom(camera.x), 0);
|
||||||
|
DrawToDebugInfo(string("camera.y: ") + to_string_custom(camera.y), 1);
|
||||||
|
debugInfo.DrawTo(screen, screen->w - debugInfo.GetClipW(), buttonImage.GetClipH());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditorScene::DrawToDebugInfo(std::string str, int line) {
|
||||||
|
//draw the debug info on the right
|
||||||
|
font.DrawStringTo(
|
||||||
|
str,
|
||||||
|
debugInfo.GetSurface(),
|
||||||
|
debugInfo.GetClipW() - str.size() * font.GetCharW(),
|
||||||
|
font.GetCharH() * line
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
@@ -132,7 +155,84 @@ void EditorScene::MouseButtonUp(SDL_MouseButtonEvent const& button) {
|
|||||||
int entry, drop;
|
int entry, drop;
|
||||||
menuBar.MouseButtonUp(button, &entry, &drop);
|
menuBar.MouseButtonUp(button, &entry, &drop);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
cout << "Menu: (" << entry << "," << drop << ")" << endl;
|
cout << "Menu: (" << entry << "," << drop << ")" << endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//manage input from the menu bar
|
||||||
|
switch(entry) {
|
||||||
|
case 0: //File
|
||||||
|
switch(drop) {
|
||||||
|
case 0:
|
||||||
|
//TODO: NEW
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
//TODO: OPEN
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
//TODO: SAVE
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
//TODO: SAVE AS
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
//TODO: CLOSE
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: {
|
||||||
|
//Quit
|
||||||
|
SDL_Event e;
|
||||||
|
e.type = SDL_QUIT;
|
||||||
|
SDL_PushEvent(&e);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: //Edit
|
||||||
|
switch(drop) {
|
||||||
|
case 0:
|
||||||
|
//TODO: SET TILE
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
//TODO: LOAD SHEET
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
//TODO: DELETE SHEET
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
//TODO: METADATA
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
//TODO: RUN SCRIPT
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: //Debug
|
||||||
|
switch(drop) {
|
||||||
|
case 0:
|
||||||
|
debugOpen = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
debugOpen = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
debugOpen = !debugOpen;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorScene::KeyDown(SDL_KeyboardEvent const& key) {
|
void EditorScene::KeyDown(SDL_KeyboardEvent const& key) {
|
||||||
@@ -145,6 +245,10 @@ void EditorScene::KeyDown(SDL_KeyboardEvent const& key) {
|
|||||||
camera.x = 0;
|
camera.x = 0;
|
||||||
camera.y = 0;
|
camera.y = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SDLK_TAB:
|
||||||
|
debugOpen = !debugOpen;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ protected:
|
|||||||
void KeyUp(SDL_KeyboardEvent const&);
|
void KeyUp(SDL_KeyboardEvent const&);
|
||||||
|
|
||||||
//members
|
//members
|
||||||
|
|
||||||
|
//debugging tools
|
||||||
|
void DrawToDebugInfo(std::string, int line);
|
||||||
|
Image debugInfo;
|
||||||
|
bool debugOpen = true;
|
||||||
|
|
||||||
RegionPager pager;
|
RegionPager pager;
|
||||||
std::list<TileSheet> sheetList;
|
std::list<TileSheet> sheetList;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user