Started intergrating state and graphics
This commit is contained in:
parent
2c92ab2557
commit
cc395b425e
@ -1,32 +1,50 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
//#include <mutex>
|
||||||
|
// Todo make this thread safe (I'm trying)
|
||||||
|
|
||||||
namespace multi {
|
namespace multi {
|
||||||
template<typename T>
|
template<typename T>
|
||||||
class connection {
|
class connection {
|
||||||
std::vector<std::function<void(T)>> funcs;
|
std::vector<std::function<void(T)>> funcs;
|
||||||
std::vector<void(*)(void)> _funcs;
|
std::vector<std::function<void()>> _funcs;
|
||||||
|
std::string name;
|
||||||
|
//std::mutex mtx;
|
||||||
public:
|
public:
|
||||||
|
connection() { name = std::string("Connection_") + typeid(T).name(); }
|
||||||
|
connection(std::string name) {
|
||||||
|
this->name = name;
|
||||||
|
}
|
||||||
int32_t connect(std::function<void(T)> func) {
|
int32_t connect(std::function<void(T)> func) {
|
||||||
funcs.push_back(func);
|
funcs.push_back(func);
|
||||||
return (int32_t)funcs.size() - 1;
|
return (int32_t)funcs.size() - 1;
|
||||||
}
|
}
|
||||||
int32_t connect(void(*func)()) {
|
int32_t connect(std::function<void()> func) {
|
||||||
_funcs.push_back(func);
|
_funcs.push_back(func);
|
||||||
return (_funcs.size()) * -1;
|
return (_funcs.size()) * -1;
|
||||||
}
|
}
|
||||||
void fire(T arg) {
|
void fire(T arg) {
|
||||||
|
if (funcs.size() == 0) return;
|
||||||
// Calls everything in the funcs and _funcs list
|
// Calls everything in the funcs and _funcs list
|
||||||
for (auto f : funcs) {
|
//std::lock_guard<std::mutex> lck(mtx);
|
||||||
f(arg);
|
for (size_t i = 0; i < funcs.size(); i++) {
|
||||||
|
funcs[i](arg);
|
||||||
}
|
}
|
||||||
fire(); // Get the _funcs list as well
|
fire(); // Get the _funcs list as well
|
||||||
}
|
}
|
||||||
void fire() {
|
void fire(bool lock = true) {
|
||||||
// Calls everything in the funcs list only
|
if (_funcs.size() == 0) return;
|
||||||
for (auto f : _funcs) {
|
if (lock) {
|
||||||
f();
|
//std::lock_guard<std::mutex> lck(mtx);
|
||||||
|
for (size_t i = 0; i < _funcs.size(); i++) {
|
||||||
|
_funcs[i]();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//std::lock_guard<std::mutex> lck(mtx);
|
||||||
|
for (size_t i = 0; i < _funcs.size(); i++) {
|
||||||
|
_funcs[i]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void remove(int32_t id) {
|
void remove(int32_t id) {
|
||||||
@ -44,7 +62,7 @@ namespace multi {
|
|||||||
int32_t operator+=(std::function<void(T)> func) {
|
int32_t operator+=(std::function<void(T)> func) {
|
||||||
return connect(func);
|
return connect(func);
|
||||||
}
|
}
|
||||||
int32_t operator+=(void(*func)()) {
|
int32_t operator+=(std::function<void()> func) {
|
||||||
return connect(func);
|
return connect(func);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
85
DMS/DMS.cpp
85
DMS/DMS.cpp
@ -3,7 +3,6 @@
|
|||||||
#include <SFML/System.hpp>
|
#include <SFML/System.hpp>
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "dms.h"
|
#include "dms.h"
|
||||||
#include "gui.h"
|
|
||||||
#include "actors.h"
|
#include "actors.h"
|
||||||
|
|
||||||
using namespace dms;
|
using namespace dms;
|
||||||
@ -22,40 +21,50 @@ int main()
|
|||||||
|
|
||||||
sf::RenderWindow window(sf::VideoMode(1024, 768, 32), "Background Test");
|
sf::RenderWindow window(sf::VideoMode(1024, 768, 32), "Background Test");
|
||||||
|
|
||||||
gui::gui& root = gui::Root();
|
sf::Texture backgroundIMG;
|
||||||
//gui::framebase testframe(gui::DualDim(0, 0, 100, 100), gui::DualDim(0, 0, 0, 0));
|
backgroundIMG.loadFromFile("background.jpg");
|
||||||
|
sf::Sprite sprite;
|
||||||
gui::gui& test = root.newFrame(gui::DualDim(0, 0, 100, 100), gui::DualDim(0, 0, 0, 0));
|
sf::Vector2u size = backgroundIMG.getSize();
|
||||||
multi::alarm<multi::seconds> alarmtest(&run, 3, [&](multi::alarm<multi::seconds>* a) {
|
sprite.setTexture(backgroundIMG);
|
||||||
test.Offset.Position.Set(10, 10);
|
sprite.setOrigin(0, 0);
|
||||||
|
|
||||||
|
state->invoker.registerFunction("setBG", [&](void* self, dms::dms_state* state, dms::dms_args* args) -> dms::value {
|
||||||
|
if (args->size() > 0 && (*args).args[0].type == dms::datatypes::string) {
|
||||||
|
try {
|
||||||
|
backgroundIMG.loadFromFile((*args).args[0].getString());
|
||||||
|
}
|
||||||
|
catch (std::exception e) {
|
||||||
|
return dms::value(dms::utils::concat("Cannot load texture: \"", (*args).args[0].getString(), "\" from file!"), dms::datatypes::error);
|
||||||
|
}
|
||||||
|
return dms::nil;
|
||||||
|
}
|
||||||
|
return dms::value("Invalid argument, string expected for first argument!", dms::datatypes::error);
|
||||||
});
|
});
|
||||||
//std::cout << "Testing " << test.Parent;
|
|
||||||
//gui::framebase frame(gui::DualDim(0,0,100,100), gui::DualDim(0, 0, 0, 0));
|
|
||||||
|
|
||||||
//sf::Texture texture;
|
sf::Font font;
|
||||||
//texture.loadFromFile("background.jpg");
|
font.loadFromFile("font.ttf");
|
||||||
//sf::Sprite sprite;
|
|
||||||
//sf::Vector2u size = texture.getSize();
|
|
||||||
//sprite.setTexture(texture);
|
|
||||||
//sprite.setOrigin(0, 0);
|
|
||||||
|
|
||||||
//sf::Font font;
|
sf::Text text("Hello this is a test|!", font);
|
||||||
//font.loadFromFile("font.ttf");
|
text.setCharacterSize(30);
|
||||||
|
text.setStyle(sf::Text::Bold);
|
||||||
//sf::Text text("Hello this is a test|!", font);
|
text.setFillColor(sf::Color::Black);
|
||||||
//text.setCharacterSize(30);
|
auto test = text.getGlobalBounds();
|
||||||
//text.setStyle(sf::Text::Bold);
|
text.setPosition(11, 768 - 110 - (test.height-test.top));
|
||||||
//text.setFillColor(sf::Color::Black);
|
|
||||||
//auto test = text.getGlobalBounds();
|
|
||||||
//std::cout << test.left << "," << test.top << "," << test.width << "," << test.height << std::endl;
|
|
||||||
//text.setPosition(11, 768 - 110 - (test.height-test.top));
|
|
||||||
////std::cout << test << std::endl;
|
////std::cout << test << std::endl;
|
||||||
|
|
||||||
//sf::RectangleShape rectangle;
|
state->OnText += [&](dms::message msg) {
|
||||||
//rectangle.setSize(sf::Vector2f(1004, 100));
|
text.setString(dms::utils::concat(msg.chara->getName(),": ",msg.text));
|
||||||
//rectangle.setOutlineColor(sf::Color::Red);
|
};
|
||||||
//rectangle.setOutlineThickness(1);
|
state->OnAppendText += [&](dms::message msg) {
|
||||||
//rectangle.setPosition(10, 768-110);
|
text.setString(dms::utils::concat(text.getString().toAnsiString(), msg.text));
|
||||||
|
};
|
||||||
|
|
||||||
|
sf::RectangleShape rectangle;
|
||||||
|
rectangle.setSize(sf::Vector2f(1004, 100));
|
||||||
|
rectangle.setOutlineColor(sf::Color::Red);
|
||||||
|
rectangle.setOutlineThickness(1);
|
||||||
|
rectangle.setPosition(10, 768-110);
|
||||||
|
|
||||||
|
|
||||||
//// run the program as long as the window is open
|
//// run the program as long as the window is open
|
||||||
while (window.isOpen())
|
while (window.isOpen())
|
||||||
@ -67,6 +76,10 @@ int main()
|
|||||||
// "close requested" event: we close the window
|
// "close requested" event: we close the window
|
||||||
if (event.type == sf::Event::Closed)
|
if (event.type == sf::Event::Closed)
|
||||||
window.close();
|
window.close();
|
||||||
|
/*else if (event.type == sf::Event::Resized) {
|
||||||
|
sf::FloatRect visibleArea(0, 0, event.size.width, event.size.height);
|
||||||
|
window.setView(sf::View(visibleArea));
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear the window with black color
|
// clear the window with black color
|
||||||
@ -74,19 +87,19 @@ int main()
|
|||||||
|
|
||||||
if (!state->next(mem)) {
|
if (!state->next(mem)) {
|
||||||
// We should clean up some stuff here!
|
// We should clean up some stuff here!
|
||||||
|
// We should exit and show an error if one exists
|
||||||
|
//std::cout << state->err.err_msg;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the runner
|
// Update the runner
|
||||||
run.update();
|
run.update();
|
||||||
|
|
||||||
// draw everything here...
|
// draw everything here...
|
||||||
|
|
||||||
gui::Draw(&window);
|
|
||||||
|
|
||||||
//testframe.Draw(&window);
|
window.draw(sprite);
|
||||||
//window.draw(sprite);
|
window.draw(rectangle);
|
||||||
//window.draw(rectangle);
|
window.draw(text);
|
||||||
//window.draw(text);
|
|
||||||
|
|
||||||
// end the current frame
|
// end the current frame
|
||||||
window.display();
|
window.display();
|
||||||
|
|||||||
@ -133,6 +133,7 @@
|
|||||||
<SupportJustMyCode>false</SupportJustMyCode>
|
<SupportJustMyCode>false</SupportJustMyCode>
|
||||||
<AdditionalIncludeDirectories>C:\SFML\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>C:\SFML\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||||
|
<Optimization>MinSpace</Optimization>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
@ -151,7 +152,6 @@
|
|||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
<Optimization>MinSpace</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>C:\SFML\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>C:\SFML\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
|
|||||||
@ -3,14 +3,14 @@
|
|||||||
#include "dms_state.h"
|
#include "dms_state.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
namespace dms {
|
namespace dms {
|
||||||
bool Invoker::registerFunction(std::string str, value (*f)(void*, dms_state*, dms_args*)) {
|
bool Invoker::registerFunction(std::string str, dms_func f) {
|
||||||
if (preventOverwriting && funcs.count(str)) {
|
if (preventOverwriting && funcs.count(str)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
funcs.insert_or_assign(str, f);
|
funcs.insert_or_assign(str, f);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool Invoker::registerFunction(std::string str, value (*f)(void*, dms_state*, dms_args*), bool preventoverride) {
|
bool Invoker::registerFunction(std::string str, dms_func f, bool preventoverride) {
|
||||||
if (preventoverride && funcs.count(str)) {
|
if (preventoverride && funcs.count(str)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -39,10 +39,10 @@ namespace dms {
|
|||||||
state->push_error(errors::error{ errors::non_existing_function, utils::concat("Attempt to call '",str,"' a nil value!") });
|
state->push_error(errors::error{ errors::non_existing_function, utils::concat("Attempt to call '",str,"' a nil value!") });
|
||||||
return value(datatypes::error);
|
return value(datatypes::error);
|
||||||
}
|
}
|
||||||
std::unordered_map<std::string, value (*)(void*, dms_state*, dms_args*)> Invoker::Export() {
|
std::unordered_map<std::string, dms_func> Invoker::Export() {
|
||||||
return funcs;
|
return funcs;
|
||||||
}
|
}
|
||||||
void Invoker::Import(std::unordered_map<std::string, value (*)(void*, dms_state*, dms_args*)> tempf) {
|
void Invoker::Import(std::unordered_map<std::string, dms_func> tempf) {
|
||||||
for (auto const& x : tempf)
|
for (auto const& x : tempf)
|
||||||
{
|
{
|
||||||
// Copy the contents of the imported invoker into
|
// Copy the contents of the imported invoker into
|
||||||
|
|||||||
@ -1,21 +1,23 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
|
#include <functional>
|
||||||
namespace dms {
|
namespace dms {
|
||||||
|
typedef std::function<value(void*,dms_state*,dms_args*)> dms_func;
|
||||||
struct dms_state;
|
struct dms_state;
|
||||||
class Invoker {
|
class Invoker {
|
||||||
std::unordered_map<std::string, value (*)(void*, dms_state*, dms_args*)>funcs;
|
std::unordered_map<std::string, dms_func>funcs;
|
||||||
void* self = nullptr;
|
void* self = nullptr;
|
||||||
public:
|
public:
|
||||||
bool preventOverwriting = true;
|
bool preventOverwriting = true;
|
||||||
bool registerFunction(std::string str, value (*f)(void*, dms_state*, dms_args*));
|
bool registerFunction(std::string str, dms_func);
|
||||||
bool registerFunction(std::string str, value (*f)(void*, dms_state*, dms_args*), bool preventoverride);
|
bool registerFunction(std::string str, dms_func, bool preventoverride);
|
||||||
void _init(void* ref);
|
void _init(void* ref);
|
||||||
value Invoke(std::string str, dms_state* state, dms_args* args);
|
value Invoke(std::string str, dms_state* state, dms_args* args);
|
||||||
value Invoke(std::string str, void* ref, dms_state* state, dms_args* args);
|
value Invoke(std::string str, void* ref, dms_state* state, dms_args* args);
|
||||||
// Exports the methods from an Invoker object
|
// Exports the methods from an Invoker object
|
||||||
std::unordered_map<std::string, value (*)(void*, dms_state*, dms_args*)> Export();
|
std::unordered_map<std::string, dms_func> Export();
|
||||||
// Imports methods from another Invoker, this will add and overwrite any method with the same name
|
// Imports methods from another Invoker, this will add and overwrite any method with the same name
|
||||||
void Import(std::unordered_map<std::string, value (*)(void*, dms_state*, dms_args*)> tempf);
|
void Import(std::unordered_map<std::string, dms_func> tempf);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@ namespace multi {
|
|||||||
this->milli = milli;
|
this->milli = milli;
|
||||||
t.start();
|
t.start();
|
||||||
}
|
}
|
||||||
alarm(runner* run, void(*func)(alarm*)) : mbase(mtype::mAlarm,run) {
|
alarm(runner* run, std::function<void(alarm*)> func) : mbase(mtype::mAlarm,run) {
|
||||||
OnRing += func;
|
OnRing += func;
|
||||||
milli = 1000;
|
milli = 1000;
|
||||||
t.start();
|
t.start();
|
||||||
@ -93,7 +93,7 @@ namespace multi {
|
|||||||
};
|
};
|
||||||
class loop : public mbase {
|
class loop : public mbase {
|
||||||
public:
|
public:
|
||||||
loop(runner* run,void(*func)(loop*)) : mbase(mtype::mLoop,run) {
|
loop(runner* run, std::function<void(loop*)> func) : mbase(mtype::mLoop,run) {
|
||||||
OnLoop += func;
|
OnLoop += func;
|
||||||
}
|
}
|
||||||
void act(int id) override {
|
void act(int id) override {
|
||||||
@ -161,7 +161,7 @@ namespace multi {
|
|||||||
long long milli;
|
long long milli;
|
||||||
timer<T> t;
|
timer<T> t;
|
||||||
public:
|
public:
|
||||||
tloop(runner* run, long long milli, void(*func)(tloop*)) : mbase(mtype::mTLoop, run) {
|
tloop(runner* run, long long milli, std::function<void(tloop*)> func) : mbase(mtype::mTLoop, run) {
|
||||||
OnLoop += func;
|
OnLoop += func;
|
||||||
this->milli = milli;
|
this->milli = milli;
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
DMS/background2.jpg
Normal file
BIN
DMS/background2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 436 KiB |
@ -23,7 +23,7 @@ namespace dms {
|
|||||||
return "nil";
|
return "nil";
|
||||||
}
|
}
|
||||||
value concat(void* self, dms_state* state, dms_args* args) {
|
value concat(void* self, dms_state* state, dms_args* args) {
|
||||||
|
return dms::value();
|
||||||
}
|
}
|
||||||
void init(dms_state* state) {
|
void init(dms_state* state) {
|
||||||
state->invoker.registerFunction("print", print);
|
state->invoker.registerFunction("print", print);
|
||||||
|
|||||||
@ -9,7 +9,12 @@
|
|||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "dms_list.h"
|
#include "dms_list.h"
|
||||||
#include "comparisons.h"
|
#include "comparisons.h"
|
||||||
|
#include "Connection.h"
|
||||||
namespace dms {
|
namespace dms {
|
||||||
|
struct message {
|
||||||
|
character* chara;
|
||||||
|
std::string text;
|
||||||
|
};
|
||||||
struct Handler;
|
struct Handler;
|
||||||
value blockInvoke(void*, dms_state*, dms_args*);
|
value blockInvoke(void*, dms_state*, dms_args*);
|
||||||
struct dms_state
|
struct dms_state
|
||||||
@ -76,6 +81,10 @@ namespace dms {
|
|||||||
// This is called once and once only. Dynamically loading code is not a thing!
|
// This is called once and once only. Dynamically loading code is not a thing!
|
||||||
void init();
|
void init();
|
||||||
bool hasError();
|
bool hasError();
|
||||||
|
// Connections
|
||||||
|
multi::connection<message> OnText;
|
||||||
|
multi::connection<message> OnAppendText;
|
||||||
|
multi::connection<dms_state*> HandleHalt;
|
||||||
private:
|
private:
|
||||||
// From what I gathered
|
// From what I gathered
|
||||||
//std::mutex memory_mutex;
|
//std::mutex memory_mutex;
|
||||||
|
|||||||
@ -271,7 +271,7 @@ namespace dms {
|
|||||||
auto ret = inv->Invoke(fname, cust.c, this, &args);
|
auto ret = inv->Invoke(fname, cust.c, this, &args);
|
||||||
if (assn.type != datatypes::nil) {
|
if (assn.type != datatypes::nil) {
|
||||||
if (!assign(assn, ret)) {
|
if (!assign(assn, ret)) {
|
||||||
return false;
|
return error(ret.getString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -300,7 +300,7 @@ namespace dms {
|
|||||||
ret = getEnvironment(obj)->Invoke(funcname, this, &args);
|
ret = getEnvironment(obj)->Invoke(funcname, this, &args);
|
||||||
}
|
}
|
||||||
if (ret.type == datatypes::error)
|
if (ret.type == datatypes::error)
|
||||||
return false;
|
return error(ret.getString());
|
||||||
if (assn.type != datatypes::nil) {
|
if (assn.type != datatypes::nil) {
|
||||||
if (!assign(assn, ret)) {
|
if (!assign(assn, ret)) {
|
||||||
return false;
|
return false;
|
||||||
@ -567,8 +567,12 @@ namespace dms {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case APND:
|
case APND:
|
||||||
if (!handler->handleMessageAppend(this, c->args.args[0].resolve(this).getPrintable()))
|
OnAppendText.fire(message{
|
||||||
return false;
|
speaker,
|
||||||
|
c->args.args[0].resolve(this).getPrintable()
|
||||||
|
});
|
||||||
|
//if (!handler->handleMessageAppend(this, c->args.args[0].resolve(this).getPrintable()))
|
||||||
|
// return false;
|
||||||
break;
|
break;
|
||||||
case CHAR:
|
case CHAR:
|
||||||
{
|
{
|
||||||
@ -578,8 +582,12 @@ namespace dms {
|
|||||||
}
|
}
|
||||||
case DISP:
|
case DISP:
|
||||||
{
|
{
|
||||||
if (!handler->handleMessageDisplay(this, c->args.args[0].resolve(this).getPrintable()))
|
OnText.fire(message{
|
||||||
return false;
|
speaker,
|
||||||
|
c->args.args[0].resolve(this).getPrintable()
|
||||||
|
});
|
||||||
|
/*if (!handler->handleMessageDisplay(this, c->args.args[0].resolve(this).getPrintable()))
|
||||||
|
return false;*/
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ASGN:
|
case ASGN:
|
||||||
@ -807,7 +815,7 @@ namespace dms {
|
|||||||
ret = getEnvironment(obj)->Invoke(funcname, this, &args);
|
ret = getEnvironment(obj)->Invoke(funcname, this, &args);
|
||||||
}
|
}
|
||||||
if (ret.type == datatypes::error)
|
if (ret.type == datatypes::error)
|
||||||
return false;
|
return error(ret.getString());
|
||||||
if (assn.type != datatypes::nil) {
|
if (assn.type != datatypes::nil) {
|
||||||
if (!assign(assn, ret)) {
|
if (!assign(assn, ret)) {
|
||||||
return false;
|
return false;
|
||||||
@ -833,8 +841,9 @@ namespace dms {
|
|||||||
else {
|
else {
|
||||||
ret = invoker.Invoke(funcname, this, &args);
|
ret = invoker.Invoke(funcname, this, &args);
|
||||||
}
|
}
|
||||||
if (ret.type == datatypes::error)
|
if (ret.type == datatypes::error) {
|
||||||
return false;
|
return error(ret.getString());
|
||||||
|
}
|
||||||
if (assn.type != datatypes::nil) {
|
if (assn.type != datatypes::nil) {
|
||||||
if (!assign(assn, ret)) {
|
if (!assign(assn, ret)) {
|
||||||
return false;
|
return false;
|
||||||
@ -1048,6 +1057,7 @@ namespace dms {
|
|||||||
//wait();
|
//wait();
|
||||||
//sleep(700);
|
//sleep(700);
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
//HandleHalt.fire(this); // We need a way to keep things running while also stopping the state from running. Shouldn't be too bad
|
||||||
break;
|
break;
|
||||||
case WAIT:
|
case WAIT:
|
||||||
sleep((int)(n_c->args.args[0].n * 1000));
|
sleep((int)(n_c->args.args[0].n * 1000));
|
||||||
@ -1074,8 +1084,12 @@ namespace dms {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case APND:
|
case APND:
|
||||||
if (!handler->handleMessageAppend(this, n_c->args.args[0].resolve(this).getPrintable()))
|
OnAppendText.fire(message{
|
||||||
return false;
|
speaker,
|
||||||
|
n_c->args.args[0].resolve(this).getPrintable()
|
||||||
|
});
|
||||||
|
//if (!handler->handleMessageAppend(this, c->args.args[0].resolve(this).getPrintable()))
|
||||||
|
// return false;
|
||||||
break;
|
break;
|
||||||
case CHAR:
|
case CHAR:
|
||||||
{
|
{
|
||||||
@ -1085,8 +1099,12 @@ namespace dms {
|
|||||||
}
|
}
|
||||||
case DISP:
|
case DISP:
|
||||||
{
|
{
|
||||||
if (!handler->handleMessageDisplay(this, n_c->args.args[0].resolve(this).getPrintable()))
|
OnText.fire(message{
|
||||||
return false;
|
speaker,
|
||||||
|
n_c->args.args[0].resolve(this).getPrintable()
|
||||||
|
});
|
||||||
|
/*if (!handler->handleMessageDisplay(this, c->args.args[0].resolve(this).getPrintable()))
|
||||||
|
return false;*/
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ASGN:
|
case ASGN:
|
||||||
|
|||||||
BIN
DMS/dump.bin
BIN
DMS/dump.bin
Binary file not shown.
402
DMS/dump.txt
402
DMS/dump.txt
@ -35,7 +35,7 @@ Line <12> newline
|
|||||||
Line <13> newline
|
Line <13> newline
|
||||||
Line <14> newline
|
Line <14> newline
|
||||||
Line <14> newline
|
Line <14> newline
|
||||||
Line <15> name music
|
Line <15> name music2
|
||||||
Line <15> equal =
|
Line <15> equal =
|
||||||
Line <15> name loadMusic
|
Line <15> name loadMusic
|
||||||
Line <15> parao (
|
Line <15> parao (
|
||||||
@ -43,7 +43,7 @@ Line <15> string test2.ogg
|
|||||||
Line <15> parac )
|
Line <15> parac )
|
||||||
Line <15> newline
|
Line <15> newline
|
||||||
Line <15> newline
|
Line <15> newline
|
||||||
Line <16> name music2
|
Line <16> name music
|
||||||
Line <16> equal =
|
Line <16> equal =
|
||||||
Line <16> name loadMusic
|
Line <16> name loadMusic
|
||||||
Line <16> parao (
|
Line <16> parao (
|
||||||
@ -59,308 +59,334 @@ Line <18> bracketc ]
|
|||||||
Line <18> newline
|
Line <18> newline
|
||||||
Line <18> newline
|
Line <18> newline
|
||||||
Line <19> newline
|
Line <19> newline
|
||||||
Line <20> name music
|
|
||||||
Line <20> dot dot
|
|
||||||
Line <20> name play
|
|
||||||
Line <20> parao (
|
|
||||||
Line <20> parac )
|
|
||||||
Line <20> newline
|
Line <20> newline
|
||||||
Line <20> newline
|
|
||||||
Line <21> name music
|
|
||||||
Line <21> dot .
|
|
||||||
Line <21> name setVolume
|
|
||||||
Line <21> parao (
|
|
||||||
Line <21> number 5
|
|
||||||
Line <21> parac )
|
|
||||||
Line <21> newline
|
Line <21> newline
|
||||||
Line <21> newline
|
|
||||||
Line <22> name while
|
|
||||||
Line <22> parao (
|
|
||||||
Line <22> name music
|
|
||||||
Line <22> dot .
|
|
||||||
Line <22> name getStatus
|
|
||||||
Line <22> parao (
|
|
||||||
Line <22> parac )
|
|
||||||
Line <22> not !
|
|
||||||
Line <22> equal =
|
|
||||||
Line <22> string stopped
|
|
||||||
Line <22> parac )
|
|
||||||
Line <22> cbracketo {
|
|
||||||
Line <22> cbracketc }
|
|
||||||
Line <22> newline
|
Line <22> newline
|
||||||
Line <22> newline
|
|
||||||
Line <23> name print
|
|
||||||
Line <23> parao (
|
|
||||||
Line <23> string Sound finished!
|
|
||||||
Line <23> parac )
|
|
||||||
Line <23> newline
|
|
||||||
Line <23> newline
|
Line <23> newline
|
||||||
|
Line <24> name wait
|
||||||
|
Line <24> number 1
|
||||||
Line <24> newline
|
Line <24> newline
|
||||||
Line <24> newline
|
Line <24> newline
|
||||||
|
Line <25> name setBG
|
||||||
|
Line <25> parao (
|
||||||
|
Line <25> string background2.jpg
|
||||||
|
Line <25> parac )
|
||||||
|
Line <25> newline
|
||||||
Line <25> newline
|
Line <25> newline
|
||||||
Line <26> newline
|
Line <26> newline
|
||||||
|
Line <26> newline
|
||||||
|
Line <27> name Ryan
|
||||||
|
Line <27> colon :
|
||||||
|
Line <27> string Hello how are you?
|
||||||
Line <27> newline
|
Line <27> newline
|
||||||
|
Line <27> newline
|
||||||
|
Line <28> name wait
|
||||||
|
Line <28> number 2
|
||||||
Line <28> newline
|
Line <28> newline
|
||||||
|
Line <28> newline
|
||||||
|
Line <29> name Bob
|
||||||
|
Line <29> colon :
|
||||||
|
Line <29> string I'm good how are you?
|
||||||
Line <29> newline
|
Line <29> newline
|
||||||
|
Line <29> newline
|
||||||
|
Line <30> name wait
|
||||||
|
Line <30> number 2
|
||||||
Line <30> newline
|
Line <30> newline
|
||||||
|
Line <30> newline
|
||||||
|
Line <31> name Ryan
|
||||||
|
Line <31> colon :
|
||||||
|
Line <31> string I am great :D
|
||||||
|
Line <31> newline
|
||||||
Line <31> newline
|
Line <31> newline
|
||||||
Line <32> newline
|
Line <32> newline
|
||||||
|
Line <32> newline
|
||||||
|
Line <33> name a
|
||||||
|
Line <33> equal =
|
||||||
|
Line <33> number 0
|
||||||
|
Line <33> newline
|
||||||
Line <33> newline
|
Line <33> newline
|
||||||
Line <34> newline
|
Line <34> newline
|
||||||
|
Line <35> name while
|
||||||
|
Line <35> parao (
|
||||||
|
Line <35> true true
|
||||||
|
Line <35> parac )
|
||||||
|
Line <35> cbracketo {
|
||||||
Line <35> newline
|
Line <35> newline
|
||||||
|
Line <35> newline
|
||||||
|
Line <36> name a
|
||||||
|
Line <36> equal =
|
||||||
|
Line <36> name a
|
||||||
|
Line <36> plus +
|
||||||
|
Line <36> number 1
|
||||||
Line <36> newline
|
Line <36> newline
|
||||||
|
Line <36> newline
|
||||||
|
Line <37> cbracketc }
|
||||||
|
Line <37> newline
|
||||||
Line <37> newline
|
Line <37> newline
|
||||||
Line <38> newline
|
Line <38> newline
|
||||||
Line <39> newline
|
Line <39> newline
|
||||||
Line <39> newline
|
|
||||||
Line <40> bracketo [
|
|
||||||
Line <40> name SelectSong
|
|
||||||
Line <40> colon :
|
|
||||||
Line <40> name function
|
|
||||||
Line <40> parao (
|
|
||||||
Line <40> parac )
|
|
||||||
Line <40> bracketc ]
|
|
||||||
Line <40> newline
|
Line <40> newline
|
||||||
Line <40> newline
|
|
||||||
Line <41> control
|
|
||||||
Line <41> string Pick song:
|
|
||||||
Line <41> cbracketo {
|
|
||||||
Line <41> newline
|
Line <41> newline
|
||||||
Line <41> newline
|
|
||||||
Line <42> string Music 1
|
|
||||||
Line <42> cbracketo {
|
|
||||||
Line <42> newline
|
Line <42> newline
|
||||||
Line <42> newline
|
|
||||||
Line <43> ret
|
|
||||||
Line <43> name music
|
|
||||||
Line <43> newline
|
Line <43> newline
|
||||||
Line <43> newline
|
|
||||||
Line <44> cbracketc }
|
|
||||||
Line <44> newline
|
Line <44> newline
|
||||||
Line <44> newline
|
|
||||||
Line <45> string Music 2
|
|
||||||
Line <45> cbracketo {
|
|
||||||
Line <45> newline
|
Line <45> newline
|
||||||
Line <45> newline
|
|
||||||
Line <46> ret
|
|
||||||
Line <46> name music2
|
|
||||||
Line <46> newline
|
Line <46> newline
|
||||||
Line <46> newline
|
|
||||||
Line <47> cbracketc }
|
|
||||||
Line <47> newline
|
Line <47> newline
|
||||||
Line <47> newline
|
|
||||||
Line <48> cbracketc }
|
|
||||||
Line <48> newline
|
|
||||||
Line <48> newline
|
Line <48> newline
|
||||||
Line <49> newline
|
Line <49> newline
|
||||||
Line <49> newline
|
|
||||||
Line <50> bracketo [
|
|
||||||
Line <50> name player
|
|
||||||
Line <50> colon :
|
|
||||||
Line <50> name function
|
|
||||||
Line <50> parao (
|
|
||||||
Line <50> name song
|
|
||||||
Line <50> seperator ,
|
|
||||||
Line <50> name food
|
|
||||||
Line <50> parac )
|
|
||||||
Line <50> bracketc ]
|
|
||||||
Line <50> newline
|
Line <50> newline
|
||||||
Line <50> newline
|
|
||||||
Line <51> control
|
|
||||||
Line <51> string What you wanna do?
|
|
||||||
Line <51> cbracketo {
|
|
||||||
Line <51> newline
|
Line <51> newline
|
||||||
Line <51> newline
|
|
||||||
Line <52> string play/resume
|
|
||||||
Line <52> cbracketo {
|
|
||||||
Line <52> newline
|
Line <52> newline
|
||||||
Line <52> newline
|
Line <52> newline
|
||||||
Line <53> name song
|
Line <53> bracketo [
|
||||||
Line <53> dot dot
|
Line <53> name SelectSong
|
||||||
Line <53> name play
|
Line <53> colon :
|
||||||
|
Line <53> name function
|
||||||
Line <53> parao (
|
Line <53> parao (
|
||||||
Line <53> parac )
|
Line <53> parac )
|
||||||
|
Line <53> bracketc ]
|
||||||
Line <53> newline
|
Line <53> newline
|
||||||
Line <53> newline
|
Line <53> newline
|
||||||
Line <54> name player
|
Line <54> control
|
||||||
Line <54> parao (
|
Line <54> string Pick song:
|
||||||
Line <54> name song
|
Line <54> cbracketo {
|
||||||
Line <54> parac )
|
|
||||||
Line <54> newline
|
Line <54> newline
|
||||||
Line <54> newline
|
Line <54> newline
|
||||||
Line <55> cbracketc }
|
Line <55> string Music 1
|
||||||
|
Line <55> cbracketo {
|
||||||
Line <55> newline
|
Line <55> newline
|
||||||
Line <55> newline
|
Line <55> newline
|
||||||
Line <56> string pause
|
Line <56> ret
|
||||||
Line <56> cbracketo {
|
Line <56> name music
|
||||||
Line <56> newline
|
Line <56> newline
|
||||||
Line <56> newline
|
Line <56> newline
|
||||||
Line <57> name song
|
Line <57> cbracketc }
|
||||||
Line <57> dot .
|
|
||||||
Line <57> name pause
|
|
||||||
Line <57> parao (
|
|
||||||
Line <57> parac )
|
|
||||||
Line <57> newline
|
Line <57> newline
|
||||||
Line <57> newline
|
Line <57> newline
|
||||||
Line <58> name player
|
Line <58> string Music 2
|
||||||
Line <58> parao (
|
Line <58> cbracketo {
|
||||||
Line <58> name song
|
|
||||||
Line <58> parac )
|
|
||||||
Line <58> newline
|
Line <58> newline
|
||||||
Line <58> newline
|
Line <58> newline
|
||||||
Line <59> cbracketc }
|
Line <59> ret
|
||||||
|
Line <59> name music2
|
||||||
Line <59> newline
|
Line <59> newline
|
||||||
Line <59> newline
|
Line <59> newline
|
||||||
Line <60> string stop
|
Line <60> cbracketc }
|
||||||
Line <60> cbracketo {
|
|
||||||
Line <60> newline
|
Line <60> newline
|
||||||
Line <60> newline
|
Line <60> newline
|
||||||
Line <61> name song
|
Line <61> cbracketc }
|
||||||
Line <61> dot .
|
|
||||||
Line <61> name stop
|
|
||||||
Line <61> parao (
|
|
||||||
Line <61> parac )
|
|
||||||
Line <61> newline
|
Line <61> newline
|
||||||
Line <61> newline
|
Line <61> newline
|
||||||
Line <62> name player
|
|
||||||
Line <62> parao (
|
|
||||||
Line <62> name song
|
|
||||||
Line <62> parac )
|
|
||||||
Line <62> newline
|
Line <62> newline
|
||||||
Line <62> newline
|
Line <62> newline
|
||||||
Line <63> cbracketc }
|
Line <63> bracketo [
|
||||||
|
Line <63> name player
|
||||||
|
Line <63> colon :
|
||||||
|
Line <63> name function
|
||||||
|
Line <63> parao (
|
||||||
|
Line <63> name song
|
||||||
|
Line <63> seperator ,
|
||||||
|
Line <63> name food
|
||||||
|
Line <63> parac )
|
||||||
|
Line <63> bracketc ]
|
||||||
Line <63> newline
|
Line <63> newline
|
||||||
Line <63> newline
|
Line <63> newline
|
||||||
Line <64> string newSong
|
Line <64> control
|
||||||
|
Line <64> string What you wanna do?
|
||||||
Line <64> cbracketo {
|
Line <64> cbracketo {
|
||||||
Line <64> newline
|
Line <64> newline
|
||||||
Line <64> newline
|
Line <64> newline
|
||||||
Line <65> name song
|
Line <65> string play/resume
|
||||||
Line <65> dot .
|
Line <65> cbracketo {
|
||||||
Line <65> name stop
|
|
||||||
Line <65> parao (
|
|
||||||
Line <65> parac )
|
|
||||||
Line <65> newline
|
Line <65> newline
|
||||||
Line <65> newline
|
Line <65> newline
|
||||||
Line <66> name player
|
|
||||||
Line <66> parao (
|
|
||||||
Line <66> name song
|
Line <66> name song
|
||||||
|
Line <66> dot dot
|
||||||
|
Line <66> name play
|
||||||
|
Line <66> parao (
|
||||||
Line <66> parac )
|
Line <66> parac )
|
||||||
Line <66> newline
|
Line <66> newline
|
||||||
Line <66> newline
|
Line <66> newline
|
||||||
Line <67> cbracketc }
|
Line <67> name player
|
||||||
|
Line <67> parao (
|
||||||
|
Line <67> name song
|
||||||
|
Line <67> parac )
|
||||||
Line <67> newline
|
Line <67> newline
|
||||||
Line <67> newline
|
Line <67> newline
|
||||||
Line <68> string quit
|
Line <68> cbracketc }
|
||||||
Line <68> exit
|
|
||||||
Line <68> number 0
|
|
||||||
Line <68> newline
|
Line <68> newline
|
||||||
Line <68> newline
|
Line <68> newline
|
||||||
Line <69> cbracketc }
|
Line <69> string pause
|
||||||
|
Line <69> cbracketo {
|
||||||
Line <69> newline
|
Line <69> newline
|
||||||
Line <69> newline
|
Line <69> newline
|
||||||
|
Line <70> name song
|
||||||
|
Line <70> dot .
|
||||||
|
Line <70> name pause
|
||||||
|
Line <70> parao (
|
||||||
|
Line <70> parac )
|
||||||
Line <70> newline
|
Line <70> newline
|
||||||
Line <70> newline
|
Line <70> newline
|
||||||
Line <71> bracketo [
|
Line <71> name player
|
||||||
Line <71> name Ryan
|
Line <71> parao (
|
||||||
Line <71> colon :
|
Line <71> name song
|
||||||
Line <71> name char
|
Line <71> parac )
|
||||||
Line <71> bracketc ]
|
|
||||||
Line <71> newline
|
Line <71> newline
|
||||||
Line <71> newline
|
Line <71> newline
|
||||||
Line <72> name age
|
Line <72> cbracketc }
|
||||||
Line <72> equal =
|
|
||||||
Line <72> number 21
|
|
||||||
Line <72> newline
|
Line <72> newline
|
||||||
Line <72> newline
|
Line <72> newline
|
||||||
Line <73> name money
|
Line <73> string stop
|
||||||
Line <73> equal =
|
Line <73> cbracketo {
|
||||||
Line <73> number 1000
|
|
||||||
Line <73> newline
|
Line <73> newline
|
||||||
Line <73> newline
|
Line <73> newline
|
||||||
Line <74> name lname
|
Line <74> name song
|
||||||
Line <74> equal =
|
Line <74> dot .
|
||||||
Line <74> string Ward
|
Line <74> name stop
|
||||||
|
Line <74> parao (
|
||||||
|
Line <74> parac )
|
||||||
Line <74> newline
|
Line <74> newline
|
||||||
Line <74> newline
|
Line <74> newline
|
||||||
Line <75> name known
|
Line <75> name player
|
||||||
Line <75> equal =
|
Line <75> parao (
|
||||||
Line <75> true true
|
Line <75> name song
|
||||||
|
Line <75> parac )
|
||||||
Line <75> newline
|
Line <75> newline
|
||||||
Line <75> newline
|
Line <75> newline
|
||||||
|
Line <76> cbracketc }
|
||||||
Line <76> newline
|
Line <76> newline
|
||||||
Line <77> name calm
|
Line <76> newline
|
||||||
Line <77> colon :
|
Line <77> string newSong
|
||||||
Line <77> string ./path/to/file
|
Line <77> cbracketo {
|
||||||
Line <77> newline
|
Line <77> newline
|
||||||
Line <77> newline
|
Line <77> newline
|
||||||
Line <78> name excited
|
Line <78> name song
|
||||||
Line <78> colon :
|
Line <78> dot .
|
||||||
Line <78> string ./path/to/file
|
Line <78> name stop
|
||||||
|
Line <78> parao (
|
||||||
|
Line <78> parac )
|
||||||
Line <78> newline
|
Line <78> newline
|
||||||
Line <78> newline
|
Line <78> newline
|
||||||
|
Line <79> name player
|
||||||
|
Line <79> parao (
|
||||||
|
Line <79> name song
|
||||||
|
Line <79> parac )
|
||||||
Line <79> newline
|
Line <79> newline
|
||||||
Line <79> newline
|
Line <79> newline
|
||||||
Line <80> bracketo [
|
Line <80> cbracketc }
|
||||||
Line <80> name John
|
|
||||||
Line <80> colon :
|
|
||||||
Line <80> name char
|
|
||||||
Line <80> bracketc ]
|
|
||||||
Line <80> newline
|
Line <80> newline
|
||||||
Line <80> newline
|
Line <80> newline
|
||||||
Line <81> name lname
|
Line <81> string quit
|
||||||
Line <81> equal =
|
Line <81> exit
|
||||||
Line <81> string Johnson
|
Line <81> number 0
|
||||||
Line <81> newline
|
Line <81> newline
|
||||||
Line <81> newline
|
Line <81> newline
|
||||||
Line <82> name age
|
Line <82> cbracketc }
|
||||||
Line <82> equal =
|
|
||||||
Line <82> number 16
|
|
||||||
Line <82> newline
|
Line <82> newline
|
||||||
Line <82> newline
|
Line <82> newline
|
||||||
Line <83> name money
|
|
||||||
Line <83> equal =
|
|
||||||
Line <83> number 100000
|
|
||||||
Line <83> newline
|
Line <83> newline
|
||||||
Line <83> newline
|
Line <83> newline
|
||||||
Line <84> name known
|
Line <84> bracketo [
|
||||||
Line <84> equal =
|
Line <84> name Ryan
|
||||||
Line <84> true true
|
Line <84> colon :
|
||||||
|
Line <84> name char
|
||||||
|
Line <84> bracketc ]
|
||||||
Line <84> newline
|
Line <84> newline
|
||||||
Line <84> newline
|
Line <84> newline
|
||||||
|
Line <85> name age
|
||||||
|
Line <85> equal =
|
||||||
|
Line <85> number 21
|
||||||
Line <85> newline
|
Line <85> newline
|
||||||
Line <85> newline
|
Line <85> newline
|
||||||
Line <86> bracketo [
|
Line <86> name money
|
||||||
Line <86> name Bob
|
Line <86> equal =
|
||||||
Line <86> colon :
|
Line <86> number 1000
|
||||||
Line <86> name char
|
|
||||||
Line <86> bracketc ]
|
|
||||||
Line <86> newline
|
Line <86> newline
|
||||||
Line <86> newline
|
Line <86> newline
|
||||||
|
Line <87> name lname
|
||||||
|
Line <87> equal =
|
||||||
|
Line <87> string Ward
|
||||||
Line <87> newline
|
Line <87> newline
|
||||||
|
Line <87> newline
|
||||||
|
Line <88> name known
|
||||||
|
Line <88> equal =
|
||||||
|
Line <88> true true
|
||||||
|
Line <88> newline
|
||||||
Line <88> newline
|
Line <88> newline
|
||||||
Line <89> name lname
|
|
||||||
Line <89> equal =
|
|
||||||
Line <89> string Johnson
|
|
||||||
Line <89> newline
|
Line <89> newline
|
||||||
Line <90> name unknown
|
Line <90> name calm
|
||||||
Line <90> equal =
|
Line <90> colon :
|
||||||
Line <90> string Some Random Guy
|
Line <90> string ./path/to/file
|
||||||
Line <90> newline
|
Line <90> newline
|
||||||
Line <90> newline
|
Line <90> newline
|
||||||
Line <91> name age
|
Line <91> name excited
|
||||||
Line <91> equal =
|
Line <91> colon :
|
||||||
Line <91> number 24
|
Line <91> string ./path/to/file
|
||||||
Line <91> newline
|
Line <91> newline
|
||||||
Line <91> newline
|
Line <91> newline
|
||||||
Line <92> name money
|
|
||||||
Line <92> equal =
|
|
||||||
Line <92> number 100
|
|
||||||
Line <92> newline
|
Line <92> newline
|
||||||
Line <92> newline
|
Line <92> newline
|
||||||
Line <93> name excited
|
Line <93> bracketo [
|
||||||
|
Line <93> name John
|
||||||
Line <93> colon :
|
Line <93> colon :
|
||||||
Line <93> string path/to/file
|
Line <93> name char
|
||||||
|
Line <93> bracketc ]
|
||||||
Line <93> newline
|
Line <93> newline
|
||||||
Line <93> newline
|
Line <93> newline
|
||||||
Line <93> eof
|
Line <94> name lname
|
||||||
|
Line <94> equal =
|
||||||
|
Line <94> string Johnson
|
||||||
|
Line <94> newline
|
||||||
|
Line <94> newline
|
||||||
|
Line <95> name age
|
||||||
|
Line <95> equal =
|
||||||
|
Line <95> number 16
|
||||||
|
Line <95> newline
|
||||||
|
Line <95> newline
|
||||||
|
Line <96> name money
|
||||||
|
Line <96> equal =
|
||||||
|
Line <96> number 100000
|
||||||
|
Line <96> newline
|
||||||
|
Line <96> newline
|
||||||
|
Line <97> name known
|
||||||
|
Line <97> equal =
|
||||||
|
Line <97> true true
|
||||||
|
Line <97> newline
|
||||||
|
Line <97> newline
|
||||||
|
Line <98> newline
|
||||||
|
Line <98> newline
|
||||||
|
Line <99> bracketo [
|
||||||
|
Line <99> name Bob
|
||||||
|
Line <99> colon :
|
||||||
|
Line <99> name char
|
||||||
|
Line <99> bracketc ]
|
||||||
|
Line <99> newline
|
||||||
|
Line <99> newline
|
||||||
|
Line <100> newline
|
||||||
|
Line <101> newline
|
||||||
|
Line <102> name lname
|
||||||
|
Line <102> equal =
|
||||||
|
Line <102> string Johnson
|
||||||
|
Line <102> newline
|
||||||
|
Line <103> name unknown
|
||||||
|
Line <103> equal =
|
||||||
|
Line <103> string Some Random Guy
|
||||||
|
Line <103> newline
|
||||||
|
Line <103> newline
|
||||||
|
Line <104> name age
|
||||||
|
Line <104> equal =
|
||||||
|
Line <104> number 24
|
||||||
|
Line <104> newline
|
||||||
|
Line <104> newline
|
||||||
|
Line <105> name money
|
||||||
|
Line <105> equal =
|
||||||
|
Line <105> number 100
|
||||||
|
Line <105> newline
|
||||||
|
Line <105> newline
|
||||||
|
Line <106> name excited
|
||||||
|
Line <106> colon :
|
||||||
|
Line <106> string path/to/file
|
||||||
|
Line <106> newline
|
||||||
|
Line <106> newline
|
||||||
|
Line <106> eof
|
||||||
|
|||||||
125
DMS/gui.h
125
DMS/gui.h
@ -6,12 +6,11 @@
|
|||||||
#include <SFML/System.hpp>
|
#include <SFML/System.hpp>
|
||||||
#include "multibase.h"
|
#include "multibase.h"
|
||||||
namespace gui {
|
namespace gui {
|
||||||
|
struct gframe;
|
||||||
|
struct gtext;
|
||||||
|
struct gimage;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace dms;
|
using namespace dms;
|
||||||
/// <summary>
|
|
||||||
/// This is the number of gui elements that exist! It isn't constant, but set as a read only variable.
|
|
||||||
/// </summary>
|
|
||||||
const int GuiElementCount = 0;
|
|
||||||
/*
|
/*
|
||||||
textbox
|
textbox
|
||||||
textbutton
|
textbutton
|
||||||
@ -31,11 +30,14 @@ namespace gui {
|
|||||||
struct Dim {
|
struct Dim {
|
||||||
const float x = 0;
|
const float x = 0;
|
||||||
const float y = 0;
|
const float y = 0;
|
||||||
Dim() : x(0), y(0) {}
|
void init() {
|
||||||
Dim(const Dim &d) : x(d.x),y(d.y) {}
|
OnValueChanged = multi::connection<Dim*>("DimConnection");
|
||||||
Dim(float x, float y) : x(x),y(y) {}
|
}
|
||||||
inline void Set(Dim d) { const_cast<float&>(x) = d.x; const_cast<float&>(y) = d.y; OnValueChanged.fire(this); }
|
Dim() : x(0), y(0) { init(); }
|
||||||
inline void Set(float x, float y) { const_cast<float&>(this->x) = x; const_cast<float&>(this->y) = y; OnValueChanged.fire(this);}
|
Dim(const Dim &d) : x(d.x),y(d.y) { init(); }
|
||||||
|
Dim(float x, float y) : x(x),y(y) { init(); }
|
||||||
|
inline void Set(Dim d) { if (x == d.x && y == d.y) return; const_cast<float&>(x) = d.x; const_cast<float&>(y) = d.y; OnValueChanged.fire(this); }
|
||||||
|
inline void Set(float x, float y) { if (this->x == x && this->y == y) return; const_cast<float&>(this->x) = x; const_cast<float&>(this->y) = y; OnValueChanged.fire(this);}
|
||||||
void operator=(const Dim& dd) {
|
void operator=(const Dim& dd) {
|
||||||
Set(dd);
|
Set(dd);
|
||||||
}
|
}
|
||||||
@ -54,10 +56,13 @@ namespace gui {
|
|||||||
Dim Position;
|
Dim Position;
|
||||||
Dim Size;
|
Dim Size;
|
||||||
void init() {
|
void init() {
|
||||||
|
OnValueChanged = multi::connection<DualDim*>("DualDimConnection");
|
||||||
Position.OnValueChanged += [&](Dim* d) {
|
Position.OnValueChanged += [&](Dim* d) {
|
||||||
|
std::cout << "Hi ddp" << std::endl;
|
||||||
OnValueChanged.fire(this);
|
OnValueChanged.fire(this);
|
||||||
};
|
};
|
||||||
Size.OnValueChanged += [&](Dim* d) {
|
Size.OnValueChanged += [&](Dim* d) {
|
||||||
|
std::cout << "Hi dds" << std::endl;
|
||||||
OnValueChanged.fire(this);
|
OnValueChanged.fire(this);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -65,11 +70,12 @@ namespace gui {
|
|||||||
DualDim(const DualDim& d) : Position(d.Position.x,d.Position.y), Size(d.Size.x,d.Size.y) {init(); }
|
DualDim(const DualDim& d) : Position(d.Position.x,d.Position.y), Size(d.Size.x,d.Size.y) {init(); }
|
||||||
DualDim(Dim pos, Dim size) : Position(pos.x,pos.y), Size(size.x,size.y) { init(); }
|
DualDim(Dim pos, Dim size) : Position(pos.x,pos.y), Size(size.x,size.y) { init(); }
|
||||||
DualDim(float x, float y, float x2, float y2) : Position(x,y),Size(x2,y2) { init(); }
|
DualDim(float x, float y, float x2, float y2) : Position(x,y),Size(x2,y2) { init(); }
|
||||||
inline void Set(DualDim d){ Position.Set(d.Position); Size.Set(d.Size);OnValueChanged.fire(this);}
|
inline void Set(DualDim d){ if (d.Position.x == this->Position.x && d.Position.y == this->Position.y && d.Size.x == this->Size.x && d.Size.y == this->Size.y) return; Position.Set(d.Position); Size.Set(d.Size);}
|
||||||
inline void Set(Dim pos, Dim size) { Position.Set(pos); Size.Set(size); OnValueChanged.fire(this);}
|
inline void Set(Dim pos, Dim size) { Position.Set(pos); Size.Set(size);}
|
||||||
inline void Set(float x, float y, float x2, float y2) { Position.Set(x, y), Size.Set(x2, y2); OnValueChanged.fire(this);}
|
inline void Set(float x, float y, float x2, float y2) { Position.Set(x, y), Size.Set(x2, y2); }
|
||||||
DualDim operator=(const DualDim& dd) {
|
DualDim operator=(const DualDim& dd) {
|
||||||
Set(dd);
|
Set(dd);
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
multi::connection<DualDim*> OnValueChanged;
|
multi::connection<DualDim*> OnValueChanged;
|
||||||
};
|
};
|
||||||
@ -112,44 +118,37 @@ namespace gui {
|
|||||||
gui* Parent = nullptr;
|
gui* Parent = nullptr;
|
||||||
vector<gui*> Children;
|
vector<gui*> Children;
|
||||||
bool Visible = true;
|
bool Visible = true;
|
||||||
|
bool Active = true;
|
||||||
|
|
||||||
//map<string, gui*> Named;
|
//map<string, gui*> Named;
|
||||||
|
|
||||||
gui() {
|
gui();
|
||||||
const_cast<int&>(GuiElementCount) += 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
gui(DualDim offset, DualDim scale) : gui() { Offset.Set(offset); Scale.Set(scale);}
|
gui(DualDim offset, DualDim scale) : gui() { Offset.Set(offset); Scale.Set(scale);}
|
||||||
gui(float x,float y,float w,float h,float sx,float sy,float sw,float sh) : gui() {
|
gui(float x,float y,float w,float h,float sx,float sy,float sw,float sh) : gui() {
|
||||||
Offset.Set(x, y, w, h);
|
Offset.Set(x, y, w, h);
|
||||||
Scale.Set(sx, sy, sw, sh);
|
Scale.Set(sx, sy, sw, sh);
|
||||||
}
|
}
|
||||||
void SetDualDim(DualDim offset,DualDim scale) {Offset = offset;Scale.Set(scale);}
|
|
||||||
|
|
||||||
virtual void Draw(sf::RenderWindow* window) {
|
virtual void Draw(sf::RenderWindow* window) {
|
||||||
return; // Override this.
|
return; // Override this.
|
||||||
}
|
}
|
||||||
|
virtual void updateValues(DualDim offset, DualDim scale) {
|
||||||
inline vector<gui*>& GetChildren() {return Children;}
|
return; // Override this.
|
||||||
inline void GetAllChildren(vector<gui*>& ref) {
|
}
|
||||||
auto temp = GetChildren();
|
inline vector<gui*>* GetChildren() {return &Children;}
|
||||||
for (int i = 0; i < temp.size(); i++) {
|
inline void GetAllChildren(vector<gui*>* ref) {
|
||||||
ref.push_back(temp[i]);
|
vector<gui*>* temp = GetChildren();
|
||||||
temp[i]->GetAllChildren(ref);
|
for (size_t i = 0; i < temp->size(); i++) {
|
||||||
|
ref->push_back((*temp)[i]);
|
||||||
|
(*temp)[i]->GetAllChildren(ref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inline vector<gui*> GetAllChildren() {
|
// Constructors
|
||||||
auto temp = GetChildren();
|
gframe& newFrame(DualDim offset, DualDim scale = { 0,0,0,0 });
|
||||||
vector<gui*> everything;
|
|
||||||
everything.reserve(GuiElementCount); // Reserve Space for all the current elements that exist
|
|
||||||
for (int i = 0; i < temp.size(); i++) {
|
|
||||||
everything.push_back(temp[i]);
|
|
||||||
temp[i]->GetAllChildren(everything);
|
|
||||||
}
|
|
||||||
return everything;
|
|
||||||
}
|
|
||||||
|
|
||||||
gui& newFrame(DualDim offset, DualDim scale);
|
//Standard mathods
|
||||||
|
virtual void setColor(sf::Color c) {};
|
||||||
|
void SetDualDim(DualDim offset, DualDim scale) { Offset.Set(offset); Scale.Set(scale); }
|
||||||
|
|
||||||
//Connections and objects to inheret
|
//Connections and objects to inheret
|
||||||
multi::connection<MouseStats> OnPressed;
|
multi::connection<MouseStats> OnPressed;
|
||||||
@ -162,35 +161,51 @@ namespace gui {
|
|||||||
multi::connection<MouseStats> OnMouseEnter;
|
multi::connection<MouseStats> OnMouseEnter;
|
||||||
multi::connection<MouseStats> OnMouseExit;
|
multi::connection<MouseStats> OnMouseExit;
|
||||||
|
|
||||||
|
|
||||||
multi::connection<gui*> OnUpdate;
|
multi::connection<gui*> OnUpdate;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct framebase : public gui {
|
struct gframe : public gui {
|
||||||
sf::RectangleShape rect;
|
sf::RectangleShape rect;
|
||||||
framebase(DualDim offset, DualDim scale) : gui(offset,scale) {
|
gframe(DualDim offset, DualDim scale, gui* parent) : gui(offset, scale) {
|
||||||
|
Parent = parent;
|
||||||
Type = gui_types::frame;
|
Type = gui_types::frame;
|
||||||
rect.setFillColor(sf::Color(120, 120, 120, 255));
|
updateValues(Offset, Scale);
|
||||||
rect.setOutlineColor(sf::Color::Red);
|
//rect.setSize(offset.Size);
|
||||||
rect.setSize(offset.Size);
|
//rect.setPosition(offset.Position);
|
||||||
rect.setPosition(offset.Position);
|
|
||||||
Offset.OnValueChanged += [&](DualDim* o) {
|
|
||||||
rect.setSize(o->Size);
|
|
||||||
rect.setPosition(o->Position);
|
|
||||||
};
|
|
||||||
Scale.OnValueChanged += [](DualDim* s) {
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
void Draw(sf::RenderWindow* window) override {
|
inline void SetColor(sf::Color& c) {
|
||||||
window->draw(rect);
|
rect.setFillColor(c);
|
||||||
|
}
|
||||||
|
inline void SetBorderColor(sf::Color& c) {
|
||||||
|
rect.setOutlineColor(c);
|
||||||
|
}
|
||||||
|
inline void SetBorderSize(float bs) {
|
||||||
|
rect.setOutlineThickness(bs);
|
||||||
|
}
|
||||||
|
inline void SetAlpha(float alpha) {
|
||||||
|
auto c = rect.getFillColor();
|
||||||
|
c.a = alpha;
|
||||||
|
SetColor(c);
|
||||||
|
c = rect.getOutlineColor();
|
||||||
|
c.a = alpha;
|
||||||
|
SetBorderColor(c);
|
||||||
|
}
|
||||||
|
inline void Draw(sf::RenderWindow* window) override {
|
||||||
|
window->draw(this->rect);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
void updateValues(DualDim offset, DualDim scale) override {
|
||||||
|
AbsolutePosition = Dim(Parent->AbsolutePosition.x*scale.Position.x+offset.Position.x,Parent->AbsolutePosition.y*scale.Position.y+offset.Position.y);
|
||||||
|
AbsoluteSize = Dim(Parent->AbsoluteSize.x * scale.Size.x + offset.Size.x, Parent->AbsoluteSize.y * scale.Size.y + offset.Size.y);
|
||||||
|
rect.setPosition(AbsolutePosition);
|
||||||
|
rect.setSize(AbsoluteSize);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
struct imagebase : public framebase {
|
struct gimage : public gframe {
|
||||||
sf::Texture texture;
|
sf::Texture texture;
|
||||||
imagebase(std::string imagepath, DualDim offset, DualDim scale) : framebase(offset,scale) {
|
gimage(std::string imagepath, DualDim offset, DualDim scale, gui* parent) : gframe(offset,scale,parent) {
|
||||||
Type = gui_types::image;
|
Type = gui_types::image;
|
||||||
texture.loadFromFile(imagepath);
|
texture.loadFromFile(imagepath);
|
||||||
sf::Sprite sprite;
|
sf::Sprite sprite;
|
||||||
@ -199,8 +214,8 @@ namespace gui {
|
|||||||
sprite.setOrigin(0, 0);
|
sprite.setOrigin(0, 0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
struct textbase : public framebase {
|
struct gtext : public gframe {
|
||||||
textbase(std::string text, sf::Font font, DualDim offset, DualDim scale) : framebase(offset, scale) {
|
gtext(std::string text, sf::Font font, DualDim offset, DualDim scale,gui* parent) : gframe(offset, scale, parent) {
|
||||||
Type = gui_types::text;
|
Type = gui_types::text;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,21 +1,54 @@
|
|||||||
|
#include "pch.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
|
#include "actors.h"
|
||||||
|
#include <thread>
|
||||||
namespace gui {
|
namespace gui {
|
||||||
gui& gui::newFrame(DualDim offset, DualDim scale) {
|
int GuiElementCount = 0;
|
||||||
gui* fb = new framebase(offset, scale);
|
const size_t ANChilds = 128;
|
||||||
fb->Parent = this;
|
gui::gui() {
|
||||||
|
GuiElementCount += 1;
|
||||||
|
Offset.OnValueChanged.connect([&](DualDim* d) {
|
||||||
|
std::cout << "hey hey hey" << std::endl;
|
||||||
|
updateValues(Offset, Scale);
|
||||||
|
});
|
||||||
|
Scale.OnValueChanged.connect([&](DualDim* d) {
|
||||||
|
std::cout << "hey hey hey" << std::endl;
|
||||||
|
updateValues(Offset, Scale);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
gframe& gui::newFrame(DualDim offset, DualDim scale) {
|
||||||
|
gframe* fb = new gframe(offset, scale,this);
|
||||||
Children.push_back(fb);
|
Children.push_back(fb);
|
||||||
return *fb;
|
return *fb;
|
||||||
}
|
}
|
||||||
// Draw Everything
|
// Draw Everything
|
||||||
gui _Root;
|
gui _Root;
|
||||||
std::vector<gui*> childs; // This tends to always grow, rarely strinking. So make it once so we arent allocating meme each loop!
|
int lastcount = -1;
|
||||||
|
std::vector<gui*>* childs = new std::vector<gui*>(ANChilds); // This tends to always grow, rarely strinking. So make it once so we arent allocating memes each loop!
|
||||||
void Draw(sf::RenderWindow* window) {
|
void Draw(sf::RenderWindow* window) {
|
||||||
_Root.AbsoluteSize = window->getSize();
|
_Root.AbsoluteSize = window->getSize();
|
||||||
childs = _Root.GetAllChildren();
|
if (lastcount != GuiElementCount) {
|
||||||
for (int i = 0; i < childs.size(); i++) {
|
std::cout << "New Element Added/Removed!" << std::endl;
|
||||||
childs[i]->Draw(window);
|
lastcount = GuiElementCount;
|
||||||
|
childs->clear();
|
||||||
|
_Root.GetAllChildren(childs);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < childs->size(); i++) {
|
||||||
|
if ((*childs)[i]->Visible);
|
||||||
|
(*childs)[i]->Draw(window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*multi::runner runner;
|
||||||
|
multi::loop updateloop(&runner, [](multi::loop* loop) {
|
||||||
|
_Root.GetAllChildren(childs);
|
||||||
|
for (int i = 0; i < childs.size(); i++) {
|
||||||
|
if (childs[i]->Active)
|
||||||
|
childs[i]->OnUpdate.fire(childs[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
std::thread thread([]() {
|
||||||
|
runner.mainloop();
|
||||||
|
});*/
|
||||||
gui& Root() {
|
gui& Root() {
|
||||||
return _Root;
|
return _Root;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
#include "pch.h"
|
||||||
#include "actors.h"
|
#include "actors.h"
|
||||||
namespace multi {
|
namespace multi {
|
||||||
bool runner::update() {
|
bool runner::update() {
|
||||||
|
|||||||
25
DMS/test.dms
25
DMS/test.dms
@ -12,16 +12,29 @@ version 0.2
|
|||||||
using extendedDefine
|
using extendedDefine
|
||||||
// this code will reside within
|
// this code will reside within
|
||||||
|
|
||||||
music = loadMusic("test2.ogg")
|
music2 = loadMusic("test2.ogg")
|
||||||
music2 = loadMusic("test.ogg")
|
music = loadMusic("test.ogg")
|
||||||
|
|
||||||
[main]
|
[main]
|
||||||
// Let's extend the base feature set
|
// Let's extend the base feature set
|
||||||
music.play()
|
//music.play()
|
||||||
music.setVolume(5)
|
//music.setVolume(50)
|
||||||
while(music.getStatus()!="stopped"){}
|
//while(music.getStatus()!="stopped"){}
|
||||||
print("Sound finished!")
|
//print("Sound finished!")
|
||||||
|
wait 1
|
||||||
|
setBG("background2.jpg")
|
||||||
|
|
||||||
|
Ryan: "Hello how are you?"
|
||||||
|
wait 2
|
||||||
|
Bob: "I'm good how are you?"
|
||||||
|
wait 2
|
||||||
|
Ryan: "I am great :D"
|
||||||
|
|
||||||
|
a=0
|
||||||
|
// {} Still errors out, this needs to be fixed!!!
|
||||||
|
while(true){
|
||||||
|
a=a+1
|
||||||
|
}
|
||||||
// a = 0
|
// a = 0
|
||||||
// while (true){
|
// while (true){
|
||||||
// asm {
|
// asm {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user