Advertisement
vovan333

Gowno Game

Jul 11th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.59 KB | None | 0 0
  1. #include <SFML\Graphics.hpp>
  2. #include <fstream>
  3. #include <iostream>
  4. #include <string>
  5. #define string std::string
  6.  
  7. namespace App
  8. {
  9.     string Map;
  10.     string MapLoadedName;
  11.     int CurrentSpriteOffset;
  12.     int PlayerPosX = 0;
  13.     int PlayerPosY = 0;
  14.     sf::Image textureImageCache[10];
  15.     const string MapDirectory = "D:/FUCKING_MARIO_MAPS/";
  16.     const string MapExtension = ".txt";
  17.     const string TextureDirectory = "D:/FUCKING_MARIO_TEXTURES/";
  18.     const string TextureExtension = ".png";
  19.     const int SpriteSizeX = 50;
  20.     const int SpriteSizeY = 50;
  21.  
  22.     sf::RenderWindow* createWindow(int width, int height, char title[])
  23.     {
  24.         sf::RenderWindow* window = new sf::RenderWindow(sf::VideoMode(width, height), title, sf::Style::Close);
  25.         window->setFramerateLimit(60);
  26.         return window;
  27.     }
  28.  
  29.     void checkWindowEvent(sf::RenderWindow* window, sf::Event windowEvent)
  30.     {
  31.         if (windowEvent.type == sf::Event::Closed)
  32.         {
  33.             window->close();
  34.         }
  35.     }
  36.  
  37.     void print(string data)
  38.     {
  39.         std::cout << data << std::endl;
  40.     }
  41.  
  42.     void print(int data)
  43.     {
  44.         std::cout << data << std::endl;
  45.     }
  46.  
  47.     string getTexturePathBySign(char sign)
  48.     {
  49.         string value;
  50.         switch (sign)
  51.         {
  52.             case 'w':
  53.                 value = "wood";
  54.                 break;
  55.             case 'd':
  56.                 value = "dirt";
  57.                 break;
  58.             default:
  59.                 value = "empty";
  60.         }
  61.         value = App::TextureDirectory + value + App::TextureExtension;
  62.         return value;
  63.     }
  64.  
  65.     sf::Image getTextureImageByPath(string path)
  66.     {
  67.         sf::Image textureImage;
  68.         textureImage.loadFromFile(path);
  69.         return textureImage;
  70.     }
  71.  
  72.     void incrementSpritePositions(int& currentPosX, int& currentPosY)
  73.     {
  74.         if (App::CurrentSpriteOffset == 16)
  75.         {
  76.             currentPosY += App::SpriteSizeY;
  77.             currentPosX = 0;
  78.             App::CurrentSpriteOffset = 0;
  79.         } else
  80.         {
  81.             currentPosX += App::SpriteSizeX;
  82.             App::CurrentSpriteOffset++;
  83.         }
  84.     }
  85.  
  86.     void drawMap(sf::RenderWindow* window)
  87.     {
  88.         int spritePosX = 0;
  89.         int spritePosY = 0;
  90.  
  91.         for (char sign : App::Map)
  92.         {
  93.             sf::Sprite sprite;
  94.             sf::Texture texture;
  95.  
  96.             texture.loadFromImage(App::getTextureImageByPath(App::getTexturePathBySign(sign)));
  97.             sprite.setTexture(texture);
  98.             sprite.setPosition(spritePosX, spritePosY);
  99.  
  100.             App::incrementSpritePositions(spritePosX, spritePosY);
  101.             window->draw(sprite);
  102.         }
  103.  
  104.         spritePosX, spritePosY = 0;
  105.     }
  106.  
  107.     string readMap(string mapname)
  108.     {
  109.         string mapDir = App::MapDirectory;
  110.         string mapExt = App::MapExtension;
  111.         string filename = mapDir + mapname + mapExt;
  112.         string line;
  113.         string map;
  114.  
  115.         std::ifstream mapFile;
  116.         mapFile.open(filename);
  117.  
  118.         while (std::getline(mapFile, line))
  119.         {
  120.             map += line + "\n";
  121.         }
  122.  
  123.         return map;
  124.     }
  125.  
  126.     void loadMap(string mapname)
  127.     {
  128.         if (App::MapLoadedName != mapname)
  129.         {
  130.             App::Map = App::readMap(mapname);
  131.             App::MapLoadedName = mapname;
  132.         }
  133.     }
  134.  
  135.     void drawPlayer()
  136.     {
  137.         sf::Texture playerTexture;
  138.         playerTexture.loadFromFile(App::getPlayerTexturePath());
  139.     }
  140.  
  141.     void pollingLoopCallback(sf::RenderWindow* window)
  142.     {
  143.         App::loadMap("default");
  144.         App::drawMap(window);
  145.         App::drawPlayer(); // Player drawing doesn't work yet.
  146.     }
  147.  
  148.     void initPollingLoop(sf::RenderWindow* window, void(*callback)(sf::RenderWindow*))
  149.     {
  150.         while (window->isOpen())
  151.         {
  152.             sf::Event windowEvent;
  153.             while (window->pollEvent(windowEvent))
  154.             {
  155.                 App::checkWindowEvent(window, windowEvent);
  156.             }
  157.             window->clear(sf::Color::White);
  158.             callback(window);
  159.             window->display();
  160.         }
  161.     }
  162.  
  163.     int init()
  164.     {
  165.         sf::RenderWindow* appWindow = App::createWindow(800, 600, "Mario Game");
  166.         App::initPollingLoop(appWindow, App::pollingLoopCallback);
  167.         return 0;
  168.     }
  169. }
  170.  
  171. int main()
  172. {
  173.     App::init();
  174.     return 0;
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement