Grid - widget for holding multi-layer map data
This commit is contained in:
parent
6d05f8bc63
commit
2c1946c29b
4 changed files with 216 additions and 11 deletions
|
|
@ -1,6 +1,7 @@
|
|||
#include "UITestScene.h"
|
||||
#include "ActionCode.h"
|
||||
#include <math.h>
|
||||
#include <random>
|
||||
|
||||
sf::Texture texture;
|
||||
|
||||
|
|
@ -19,7 +20,7 @@ void setSpriteTexture(int ti)
|
|||
}
|
||||
|
||||
UITestScene::UITestScene(GameEngine* g)
|
||||
: Scene(g)
|
||||
: Scene(g), grid(30, 10, 16, 20, 20, 400, 320)
|
||||
{
|
||||
// demo sprites from texture file
|
||||
texture.loadFromFile("./assets/kenney_tinydungeon.png");
|
||||
|
|
@ -27,10 +28,39 @@ UITestScene::UITestScene(GameEngine* g)
|
|||
|
||||
// Show one texture at a time
|
||||
test_sprite.setTexture(texture);
|
||||
test_sprite.setPosition(sf::Vector2f(50.0f, 50.0f));
|
||||
test_sprite.setPosition(sf::Vector2f(20.0f, 20.0f));
|
||||
test_sprite.setScale(sf::Vector2f(4.0f, 4.0f));
|
||||
setSpriteTexture(0);
|
||||
|
||||
// random for this test
|
||||
//std::default_random_engine generator(42);
|
||||
//std::normal_distribution<double> distribution(0, 131);
|
||||
std::random_device rd; // Will be used to obtain a seed for the random number engine
|
||||
std::mt19937 gen(rd()); // Standard mersenne_twister_engine seeded with rd()
|
||||
std::uniform_int_distribution<> distrib(0, 131);
|
||||
// Use distrib to transform the random unsigned int
|
||||
// generated by gen into an int in [1, 6]
|
||||
//for (int n = 0; n != 10; ++n)
|
||||
// std::cout << distrib(gen) << ' ';
|
||||
// std::cout << '\n';
|
||||
|
||||
|
||||
// Test grid with random sprite noise
|
||||
|
||||
for (int _x = 0; _x < 30; _x++)
|
||||
for (int _y = 0; _y < 10; _y++)
|
||||
//grid.at(_x, _y).tilesprite = _y*11 + _x;
|
||||
//if (!_x % 2 || _y == 0) grid.at(_x, _y).tilesprite = 121;
|
||||
//else
|
||||
grid.at(_x, _y).tilesprite = distrib(gen);
|
||||
|
||||
for (int _x = 0; _x < 30; _x++)
|
||||
{
|
||||
grid.at(_x, 0).tilesprite = 121;
|
||||
grid.at(_x, 5).tilesprite = 123;
|
||||
grid.at(_x, 9).tilesprite = 10;
|
||||
}
|
||||
|
||||
// Load sound
|
||||
buffer.loadFromFile("./assets/boom.wav");
|
||||
sound.setBuffer(buffer);
|
||||
|
|
@ -187,13 +217,33 @@ void UITestScene::doAction(std::string name, std::string type)
|
|||
|
||||
if (ACTION("sound_test", "start")) { sound.play(); }
|
||||
|
||||
if (ACTION("left", "start")) { viewport.move(-10, 0); }
|
||||
if (ACTION("right", "start")) { viewport.move(10, 0); }
|
||||
if (ACTION("up", "start")) { viewport.move(0, -10); }
|
||||
if (ACTION("down", "start")) { viewport.move(0, 10); }
|
||||
if (ACTION("down", "start")) { viewport.move(0, 10); }
|
||||
if (ACTION("zoom_down", "start")) { if (zoom > 0.2f) zoom -= 0.1f; viewport.zoom(zoom); }
|
||||
if (ACTION("zoom_up", "start")) { if (zoom < 10.0f) zoom += 0.1f; viewport.zoom(zoom); }
|
||||
if (ACTION("left", "start")) {
|
||||
//viewport.move(-10, 0);
|
||||
grid.center_x -= 0.5;
|
||||
}
|
||||
if (ACTION("right", "start")) {
|
||||
//viewport.move(10, 0);
|
||||
grid.center_x += 0.5;
|
||||
}
|
||||
if (ACTION("up", "start")) {
|
||||
//viewport.move(0, -10);
|
||||
grid.center_y -= 0.5;
|
||||
}
|
||||
if (ACTION("down", "start")) {
|
||||
//viewport.move(0, 10);
|
||||
grid.center_y += 0.5;
|
||||
}
|
||||
//if (ACTION("down", "start")) {
|
||||
// viewport.move(0, 10);
|
||||
//}
|
||||
if (ACTION("zoom_down", "start")) {
|
||||
//if (zoom > 0.2f) zoom -= 0.1f; viewport.zoom(zoom);
|
||||
if (grid.zoom > 0.75f) grid.zoom -= 0.25f;
|
||||
}
|
||||
if (ACTION("zoom_up", "start")) {
|
||||
//if (zoom < 10.0f) zoom += 0.1f; viewport.zoom(zoom);
|
||||
if (grid.zoom < 5.0f) grid.zoom += 0.25f;
|
||||
}
|
||||
//std::cout << "viewport: " << viewport.getCenter().x << ", " << viewport.getCenter().y << std::endl;
|
||||
|
||||
if (type.compare("resize")) // get center coordinate from game coordinate viewport, apply to new window viewport, restore zoom level
|
||||
|
|
@ -273,6 +323,8 @@ void UITestScene::sRender()
|
|||
game->getWindow().draw(text);
|
||||
|
||||
|
||||
//draw grid
|
||||
grid.render(game->getWindow());
|
||||
|
||||
//test_button.render(game->getWindow());
|
||||
//if (test_menu.visible) test_menu.render(game->getWindow());
|
||||
|
|
@ -286,12 +338,13 @@ void UITestScene::sRender()
|
|||
}
|
||||
|
||||
// test Python sprite code
|
||||
McRFPy_API::executePyString("mcrfpy.drawSprite(123, 10, 10)");
|
||||
McRFPy_API::executePyString("mcrfpy.drawSprite(121, 15, 15)");
|
||||
McRFPy_API::executePyString("mcrfpy.drawSprite(123, 36, 10)");
|
||||
//McRFPy_API::executePyString("mcrfpy.drawSprite(121, 15, 15)");
|
||||
|
||||
//game->api->executePyString("mcrfpy.drawSprite(123, 10, 10)")
|
||||
//game->api->executePyString("mcrfpy.drawSprite(121, 15, 15)")
|
||||
|
||||
|
||||
// draw test sprite on top of everything
|
||||
game->getWindow().draw(test_sprite);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue