Advertisement
CH1156

Untitled

Aug 28th, 2014
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.47 KB | None | 0 0
  1. #include <SFML/Graphics.hpp>
  2. #include <iostream>
  3. #include <list>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     sf::RenderWindow window(sf::VideoMode(800, 600), "Tile Editor");
  11.     sf::Event event;
  12.     sf::Mouse mouse;
  13.     sf::Clock clock;
  14.     sf::Time time;
  15.     sf::View scrollScreen;
  16.     list<sf::Sprite> setTile;
  17.     list<sf::Sprite>::iterator iter;
  18.     vector<sf::Sprite> spr_Vector;
  19.     vector<vector<sf::Sprite> > Grid;
  20.     int GridSizeX = 40;
  21.     int GridSizeY = 20;
  22.     window.setFramerateLimit(60);
  23.     scrollScreen.reset(sf::FloatRect(0, 0, window.getSize().x, window.getSize().y));
  24.  
  25.  
  26.     sf::Texture blankGridTexture;
  27.     sf::Sprite blankGridSprite;
  28.     if(!blankGridTexture.loadFromFile("Resources/Tiles/Grid.png"))
  29.     {
  30.  
  31.     }
  32.     blankGridSprite.setTexture(blankGridTexture);
  33.     blankGridSprite.setOrigin(16, 16);
  34.  
  35.     //Input grid into vector
  36.     Grid.resize(GridSizeY);
  37.     for(int y = 0; y < GridSizeY; y++)//Column
  38.     {
  39.         for(int x = 0; x < GridSizeX; x++)//Row
  40.         {
  41.             Grid[y].push_back(blankGridSprite);
  42.         }
  43.     }
  44.  
  45.     while(window.isOpen())
  46.     {
  47.         while(window.pollEvent(event))
  48.         {
  49.             switch(event.type)
  50.             {
  51.                 case sf::Event::Closed:
  52.                 {
  53.                     window.close();
  54.                 }break;
  55.                 case sf::Event::Resized:
  56.                 {
  57.                     sf::FloatRect viewArea(0, 0, event.size.width, event.size.height);
  58.                     window.setView(sf::View(viewArea));
  59.                     scrollScreen.reset(sf::FloatRect(0, 0, window.getSize().x, window.getSize().y));
  60.                 }break;
  61.             }
  62.         }
  63.     window.clear(sf::Color::White);
  64.  
  65.     time = clock.getElapsedTime();
  66.  
  67.     sf::Vector2i pixel_pos = sf::Mouse::getPosition(window);
  68.     sf::Vector2f coord_pos = window.mapPixelToCoords(pixel_pos);
  69.  
  70.     cout << "Row: " << rint(coord_pos.x / 32) << ",";
  71.     cout << "Column: " << rint(coord_pos.y / 32) << endl;
  72.  
  73.     scrollScreen.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
  74.  
  75.     //Load Grass
  76.     sf::Texture tileTexture;
  77.     sf::Sprite tileSprite;
  78.     if(!tileTexture.loadFromFile("Resources/Tiles/Grass.png"))
  79.     {
  80.  
  81.     }
  82.     tileSprite.setTexture(tileTexture);
  83.     tileSprite.setOrigin(16, 16);
  84.  
  85.     if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
  86.     {
  87.         scrollScreen.move(-10, 0);
  88.     }
  89.     else if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  90.     {
  91.         scrollScreen.move(10, 0);
  92.     }
  93.     if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
  94.     {
  95.         scrollScreen.move(0, -10);
  96.     }
  97.     else if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
  98.     {
  99.         scrollScreen.move(0, 10);
  100.     }
  101.  
  102.     //Draw map
  103.     for(int y = 0; y < Grid.size(); y++)
  104.     {
  105.         for(int x = 0; x < Grid[y].size(); x++)
  106.         {
  107.             window.draw(Grid[y][x]);
  108.         }
  109.     }
  110.  
  111.     int indexX = rint(coord_pos.x / 32);
  112.     int indexY = rint(coord_pos.y / 32);
  113.  
  114.     if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
  115.     {
  116.         if(indexY < Grid.size())
  117.         {
  118.             Grid[GridSizeY][GridSizeX].setTexture(tileTexture);
  119.         }
  120.         if(indexX < Grid[indexY].size())
  121.         {
  122.             Grid[GridSizeX][GridSizeY].setTexture(tileTexture);
  123.         }
  124.         else
  125.         {
  126.             cout << "Out of bounds" << endl;
  127.         }
  128.     }
  129.  
  130.     window.setView(scrollScreen);
  131.     clock.restart();
  132.     window.display();
  133.     }
  134.  
  135.     return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement