Thor Event System
-
SeppJ schrieb:
Zur Kleinschreibung von Funktionen: Es ist die übliche Namenskonvention.
In Java vielleicht.
In C++ Projekten sehe ich viel häufiger PascalCaseFunktionsNamen.
-
Weiß denn keiner was zu den Fehlermeldungen?
-
Du inkludierst irgendwo ne STL Header, und DAVOR hast du Müll stehen. Vermutlich.
Viel mehr lässt sich da nicht rauslesen.
Code der zu diesen Fehlermeldungen führt zeigst du uns ja nicht.
Fehlermeldungen von deutschen VS Versionen sind auch nicht sehr beliebt.
...
Tjo. Viel mehr gibt's dazu nicht zu sagen denke ich.
-
hustbaer schrieb:
SeppJ schrieb:
Zur Kleinschreibung von Funktionen: Es ist die übliche Namenskonvention.
In Java vielleicht.
In C++ Projekten sehe ich viel häufiger PascalCaseFunktionsNamen.Naja, Windows.
-
So hier nochmal der ganze Code.
Main.cpp:
#include "Engine.h" int main() { CEngine engine; sf::RenderWindow window(sf::VideoMode(800, 600), "Tile Engine"); engine.Init(&window); while (window.isOpen()) { engine.Render(); engine.Update(); } }Engine.h:
#pragma once #pragma once #include <SFML\Graphics.hpp> #include "Input.h" class CEngine { public: CEngine(); ~CEngine(); bool Init(sf::RenderWindow *window); void EnterGame(); void Update(); void Input(); void Render(); private: // Render Target sf::RenderWindow* window; CInput inputSystem; void onKeyPress(thor::ActionContext<std::string> context) { if (context.event->key.code == sf::Keyboard::X) { window->close(); } }; };Engine.cpp:
#include "Engine.h" CEngine::CEngine() { CInput temp(window); inputSystem = temp; } CEngine::~CEngine() { } bool CEngine::Init(sf::RenderWindow *window) { this->window = window; inputSystem.AddCallback("keyPressed", &onKeyPress); } void CEngine::Render() { window->clear(); window->display(); }Input.h:
#pragma once #include <SFML/Graphics.hpp> #include <Thor/Input.hpp> class CInput { public: CInput(); CInput(sf::RenderWindow* w); ~CInput(); void AddCallback(std::string trigger, std::function<thor::ActionContext<thor::Action>> unaryListener) { thorSystem.connect(trigger, unaryListener); }; private: sf::RenderWindow window; thor::ActionMap < std::string >::CallbackSystem thorSystem; void InitActions(); };Input.cpp:
#include "Input.h" CInput::CInput(sf::RenderWindow* window) { this->window = *window; } CInput::~CInput() { } void CInput::InitActions() { thor::Action closeRequest(sf::Event::Closed); thor::Action keyPressed(sf::Event::KeyPressed); thor::Action leftMouseButton(sf::Mouse::Left, thor::Action::PressOnce); thor::ActionMap<std::string> actions; actions["close"] = closeRequest; actions["keyPressed"] = keyPressed; actions["leftMouse"] = leftMouseButton; actions.invokeCallbacks(thorSystem, &window); }
-
immer noch nichts?
-
Also es fehlen
#include <functional>
und
#include <string>Kannst ja mal probieren ob es was bringt die einzufügen. Wobei ich anhand der Fehler eher auf ein anderes Problem tippen würde. Der Rest sieht aber soweit richtig aus, also...
Probier' halt selbst ein wenig rum.
Nimm Stück für Sütck Code weg, so lange bis der Fehler verschwindet. So grenzt man Fehler ein die man nicht auf anderem Weg findet.
Irgendwann hast du dann eine Version die geht, und eine davor (mit weniger "weggenommenem" Code) die nicht geht. Dann guckst du dir den Code an der unterschiedlich ist, und überlegst dir was das Problem sein könnte.ps:
Gerade erst gesehen:private: sf::RenderWindow window; // .... this->window = *window;Das kann nicht gehen. Wie du in der Doku sehen kannst
http://sfml-dev.org/documentation/2.0/classsf_1_1RenderWindow.php
istsf::RenderWindownoncopyable.
-
Okay danke.
Wofür ist denn die functional?
ich mein ich benutz nur methoden die ich sonst auch immer ohne die functional benutzt hab.
-
darman96 schrieb:
Wofür ist denn die functional?
ich mein ich benutz nur methoden die ich sonst auch immer ohne die functional benutzt hab.http://en.cppreference.com/w/cpp/utility/functional/function
(Du nutzttstd::function<>in Z.12 von input.h)Kann durchaus sein, dass Dein Programm <functional> irgendwo aufschnappt. Z.B. koennte SFML
<functional>#includen.
Aber der Vollständigkeit halber solltest Du es selber aufführen - kann ja auch sein, dass in der näxten Version das#includein SFML wegfällt und dann kompiliert Dein Programm nicht mehr.
-
Hat nicht viel gebracht es sind immer noch Fehler da...
Hier die Fehler: https://www.dropbox.com/s/zcxfu0lpmgzigsa/Error.PNG?dl=0
-
Das sind die Fehler, schau mal in die Ausgabe. Da sieht man oft mehr, z.B. wo der Fehler in deinem Code herkommt.
-
es liegt auf jedem fall an dem kram mit der Thor Lib.
Wenn ich das rausschmeiße dann geht's.
-
Auch doof.
-
darman96 schrieb:
es liegt auf jedem fall an dem kram mit der Thor Lib.
Wenn ich das rausschmeiße dann geht's.Das sieht trotzdem nach einem fehlenden Include aus. Oder vielleicht ist es auch nicht mit deinem VS kompatibel und du musst den Code etwas anpassen, kommt auch vor.