Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML/Graphics.hpp>
- #include <iostream>
- #include <list>
- #include <vector>
- using namespace std;
- int main()
- {
- sf::RenderWindow window(sf::VideoMode(800, 600), "Tile Editor");
- sf::Event event;
- sf::Mouse mouse;
- sf::Clock clock;
- sf::Time time;
- sf::View scrollScreen;
- list<sf::Sprite> setTile;
- list<sf::Sprite>::iterator iter;
- vector<sf::Sprite> spr_Vector;
- vector<vector<sf::Sprite> > Grid;
- int GridSizeX = 40;
- int GridSizeY = 20;
- window.setFramerateLimit(60);
- scrollScreen.reset(sf::FloatRect(0, 0, window.getSize().x, window.getSize().y));
- sf::Texture blankGridTexture;
- sf::Sprite blankGridSprite;
- if(!blankGridTexture.loadFromFile("Resources/Tiles/Grid.png"))
- {
- }
- blankGridSprite.setTexture(blankGridTexture);
- blankGridSprite.setOrigin(16, 16);
- //Input grid into vector
- Grid.resize(GridSizeY);
- for(int y = 0; y < GridSizeY; y++)//Column
- {
- for(int x = 0; x < GridSizeX; x++)//Row
- {
- Grid[y].push_back(blankGridSprite);
- }
- }
- while(window.isOpen())
- {
- while(window.pollEvent(event))
- {
- switch(event.type)
- {
- case sf::Event::Closed:
- {
- window.close();
- }break;
- case sf::Event::Resized:
- {
- sf::FloatRect viewArea(0, 0, event.size.width, event.size.height);
- window.setView(sf::View(viewArea));
- scrollScreen.reset(sf::FloatRect(0, 0, window.getSize().x, window.getSize().y));
- }break;
- }
- }
- window.clear(sf::Color::White);
- time = clock.getElapsedTime();
- sf::Vector2i pixel_pos = sf::Mouse::getPosition(window);
- sf::Vector2f coord_pos = window.mapPixelToCoords(pixel_pos);
- cout << "Row: " << rint(coord_pos.x / 32) << ",";
- cout << "Column: " << rint(coord_pos.y / 32) << endl;
- scrollScreen.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
- //Load Grass
- sf::Texture tileTexture;
- sf::Sprite tileSprite;
- if(!tileTexture.loadFromFile("Resources/Tiles/Grass.png"))
- {
- }
- tileSprite.setTexture(tileTexture);
- tileSprite.setOrigin(16, 16);
- if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
- {
- scrollScreen.move(-10, 0);
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
- {
- scrollScreen.move(10, 0);
- }
- if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
- {
- scrollScreen.move(0, -10);
- }
- else if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
- {
- scrollScreen.move(0, 10);
- }
- //Draw map
- for(int y = 0; y < Grid.size(); y++)
- {
- for(int x = 0; x < Grid[y].size(); x++)
- {
- window.draw(Grid[y][x]);
- }
- }
- int indexX = rint(coord_pos.x / 32);
- int indexY = rint(coord_pos.y / 32);
- if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
- {
- if(indexY < Grid.size())
- {
- Grid[GridSizeY][GridSizeX].setTexture(tileTexture);
- }
- if(indexX < Grid[indexY].size())
- {
- Grid[GridSizeX][GridSizeY].setTexture(tileTexture);
- }
- else
- {
- cout << "Out of bounds" << endl;
- }
- }
- window.setView(scrollScreen);
- clock.restart();
- window.display();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement