Added MSVC debugging tool, discovered globals feature

This commit is contained in:
2023-03-03 17:20:56 +11:00
parent f9d0a27408
commit 08ce7b5536
4 changed files with 41 additions and 25 deletions

View File

@@ -1,31 +1,38 @@
import engine; //A quirk of the setup is that anything defined in the root of `init.toy` becomes a global object
import input; //To resolve that, the configuration is inside a block scope
{
import engine;
import input;
//input settings, mapping SDL2's virtual keys to event names //input settings, mapping SDL2's virtual keys to event names
mapInputEventToKeyDown("character_up", "w"); //event, keysym mapInputEventToKeyDown("character_up", "w"); //event, keysym
mapInputEventToKeyDown("character_left", "a"); //event, keysym mapInputEventToKeyDown("character_left", "a"); //event, keysym
mapInputEventToKeyDown("character_down", "s"); //event, keysym mapInputEventToKeyDown("character_down", "s"); //event, keysym
mapInputEventToKeyDown("character_right", "d"); //event, keysym mapInputEventToKeyDown("character_right", "d"); //event, keysym
mapInputEventToKeyUp("character_up", "w"); //event, keysym mapInputEventToKeyUp("character_up", "w"); //event, keysym
mapInputEventToKeyUp("character_left", "a"); //event, keysym mapInputEventToKeyUp("character_left", "a"); //event, keysym
mapInputEventToKeyUp("character_down", "s"); //event, keysym mapInputEventToKeyUp("character_down", "s"); //event, keysym
mapInputEventToKeyUp("character_right", "d"); //event, keysym mapInputEventToKeyUp("character_right", "d"); //event, keysym
mapInputEventToKeyDown("character_up", "up"); //event, keysym mapInputEventToKeyDown("character_up", "up"); //event, keysym
mapInputEventToKeyDown("character_left", "left"); //event, keysym mapInputEventToKeyDown("character_left", "left"); //event, keysym
mapInputEventToKeyDown("character_down", "down"); //event, keysym mapInputEventToKeyDown("character_down", "down"); //event, keysym
mapInputEventToKeyDown("character_right", "right"); //event, keysym mapInputEventToKeyDown("character_right", "right"); //event, keysym
mapInputEventToKeyUp("character_up", "up"); //event, keysym mapInputEventToKeyUp("character_up", "up"); //event, keysym
mapInputEventToKeyUp("character_left", "left"); //event, keysym mapInputEventToKeyUp("character_left", "left"); //event, keysym
mapInputEventToKeyUp("character_down", "down"); //event, keysym mapInputEventToKeyUp("character_down", "down"); //event, keysym
mapInputEventToKeyUp("character_right", "right"); //event, keysym mapInputEventToKeyUp("character_right", "right"); //event, keysym
//this function must always be called, or the engine won't run //this function must always be called, or the engine won't run
initWindow("Airport Game", 1080, 720, false); initWindow("Airport Game", 1080, 720, false);
//kick off the logic of the scene graph
loadRootNode("scripts:/scene.toy");
}
//Globals go here
//kick off the logic of the scene graph
loadRootNode("scripts:/scene.toy");

View File

@@ -24,12 +24,15 @@
#include <SDL_image.h> #include <SDL_image.h>
#include <windows.h> #include <windows.h>
#include <crtdbg.h>
#ifndef BOX_EXPORT #ifndef BOX_EXPORT
#define BOX_API __declspec(dllimport) #define BOX_API __declspec(dllimport)
#else #else
#define BOX_API __declspec(dllexport) #define BOX_API __declspec(dllexport)
#endif #endif
//TODO: figure out the sleep issue
#define sleep Sleep #define sleep Sleep
#else #else

View File

@@ -70,7 +70,7 @@ void Box_initEngine() {
const unsigned char* tb = Toy_compileString((const char*)source, &size); const unsigned char* tb = Toy_compileString((const char*)source, &size);
free((void*)source); free((void*)source);
//TODO: inner-interpreter //A quirk of the setup is that anything defined in `init.toy` becomes a global object
Toy_runInterpreter(&engine.interpreter, tb, size); Toy_runInterpreter(&engine.interpreter, tb, size);
} }
@@ -147,7 +147,7 @@ static void execLoadRootNode() {
Box_callEngineNode(engine.rootNode, &inner, "onLoad", NULL); Box_callEngineNode(engine.rootNode, &inner, "onLoad", NULL);
//manual cleanup //manual cleanup
inner.scope = Toy_popScope(inner.scope); Toy_popScope(inner.scope);
Toy_freeLiteralArray(&inner.stack); Toy_freeLiteralArray(&inner.stack);
Toy_freeLiteralArray(&inner.literalCache); Toy_freeLiteralArray(&inner.literalCache);

View File

@@ -7,6 +7,12 @@
#include "lib_runner.h" #include "lib_runner.h"
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
//debugging tools
#ifdef _DEBUG
// Memory Leak Detection during Debug Builds (MSVC only)
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif//win32 && debug
//the drive system uses a LiteralDictionary, which must be initialized with this //the drive system uses a LiteralDictionary, which must be initialized with this
Toy_initDriveDictionary(); Toy_initDriveDictionary();