I want to move keyboard input defs to the Python API. I laid the groundwork for it today. From the JANKFILE: - working on API endpoint `_registerInputAction`. it will add "_py" as a suffix to the action string and register it along with other scene actions. - Adding public Scene methods. These are on the base class with default of return `false`. `bool Scene::registerActionInjected(int code, std::string name)` and `unregisterActionInjected` the PythonScene (and other scenes that support injected user input) can override this method, check existing registrations, and return `true` when succeeding. Also, upgraded to C++20 (g++ `c++2a`), mostly because I want to use map::contains.
53 lines
1.7 KiB
C++
53 lines
1.7 KiB
C++
#include "MenuScene.h"
|
|
#include "ActionCode.h"
|
|
|
|
MenuScene::MenuScene(GameEngine* g) : Scene(g)
|
|
{
|
|
text.setFont(game->getFont());
|
|
text.setString("McRogueFace Engine - r/RoguelikeDev Tutorial 2023");
|
|
text.setCharacterSize(24);
|
|
//std::cout << "MenuScene Initialized. " << game << std::endl;
|
|
//std::cout << "Font: " << game->getFont().getInfo().family << std::endl;
|
|
|
|
text2.setFont(game->getFont());
|
|
text2.setString("Press 'Spacebar' to run demo");
|
|
text2.setCharacterSize(16);
|
|
text2.setPosition(0.0f, 50.0f);
|
|
|
|
text3.setFont(game->getFont());
|
|
text3.setString("use 'W' 'A' 'S' 'D' to move (even when blank; it's a bug)");
|
|
text3.setCharacterSize(16);
|
|
text3.setPosition(0.0f, 80.0f);
|
|
|
|
registerAction(ActionCode::KEY + sf::Keyboard::Space, "start_game");
|
|
registerAction(ActionCode::KEY + sf::Keyboard::Up, "up");
|
|
registerAction(ActionCode::KEY + sf::Keyboard::Down, "down");
|
|
}
|
|
|
|
void MenuScene::update()
|
|
{
|
|
//std::cout << "MenuScene update" << std::endl;
|
|
}
|
|
|
|
void MenuScene::doAction(std::string name, std::string type)
|
|
{
|
|
//std::cout << "MenuScene doAction: " << name << ", " << type << std::endl;
|
|
//if (name.compare("start_game") == 0 and type.compare("start") == 0)
|
|
if(ACTION("start_game", "start"))
|
|
game->changeScene("py");
|
|
/*
|
|
else if(ACTIONONCE("up"))
|
|
game->getWindow().setSize(sf::Vector2u(1280, 800));
|
|
else if(ACTIONONCE("down"))
|
|
game->getWindow().setSize(sf::Vector2u(1024, 768));
|
|
*/
|
|
}
|
|
|
|
void MenuScene::sRender()
|
|
{
|
|
game->getWindow().clear();
|
|
game->getWindow().draw(text);
|
|
game->getWindow().draw(text2);
|
|
game->getWindow().draw(text3);
|
|
game->getWindow().display();
|
|
}
|