Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML\Graphics.hpp>
- #include <fstream>
- #include <iostream>
- #include <string>
- #define string std::string
- namespace App
- {
- string Map;
- string MapLoadedName;
- int CurrentSpriteOffset;
- int PlayerPosX = 0;
- int PlayerPosY = 0;
- sf::Image textureImageCache[10];
- const string MapDirectory = "D:/FUCKING_MARIO_MAPS/";
- const string MapExtension = ".txt";
- const string TextureDirectory = "D:/FUCKING_MARIO_TEXTURES/";
- const string TextureExtension = ".png";
- const int SpriteSizeX = 50;
- const int SpriteSizeY = 50;
- sf::RenderWindow* createWindow(int width, int height, char title[])
- {
- sf::RenderWindow* window = new sf::RenderWindow(sf::VideoMode(width, height), title, sf::Style::Close);
- window->setFramerateLimit(60);
- return window;
- }
- void checkWindowEvent(sf::RenderWindow* window, sf::Event windowEvent)
- {
- if (windowEvent.type == sf::Event::Closed)
- {
- window->close();
- }
- }
- void print(string data)
- {
- std::cout << data << std::endl;
- }
- void print(int data)
- {
- std::cout << data << std::endl;
- }
- string getTexturePathBySign(char sign)
- {
- string value;
- switch (sign)
- {
- case 'w':
- value = "wood";
- break;
- case 'd':
- value = "dirt";
- break;
- default:
- value = "empty";
- }
- value = App::TextureDirectory + value + App::TextureExtension;
- return value;
- }
- sf::Image getTextureImageByPath(string path)
- {
- sf::Image textureImage;
- textureImage.loadFromFile(path);
- return textureImage;
- }
- void incrementSpritePositions(int& currentPosX, int& currentPosY)
- {
- if (App::CurrentSpriteOffset == 16)
- {
- currentPosY += App::SpriteSizeY;
- currentPosX = 0;
- App::CurrentSpriteOffset = 0;
- } else
- {
- currentPosX += App::SpriteSizeX;
- App::CurrentSpriteOffset++;
- }
- }
- void drawMap(sf::RenderWindow* window)
- {
- int spritePosX = 0;
- int spritePosY = 0;
- for (char sign : App::Map)
- {
- sf::Sprite sprite;
- sf::Texture texture;
- texture.loadFromImage(App::getTextureImageByPath(App::getTexturePathBySign(sign)));
- sprite.setTexture(texture);
- sprite.setPosition(spritePosX, spritePosY);
- App::incrementSpritePositions(spritePosX, spritePosY);
- window->draw(sprite);
- }
- spritePosX, spritePosY = 0;
- }
- string readMap(string mapname)
- {
- string mapDir = App::MapDirectory;
- string mapExt = App::MapExtension;
- string filename = mapDir + mapname + mapExt;
- string line;
- string map;
- std::ifstream mapFile;
- mapFile.open(filename);
- while (std::getline(mapFile, line))
- {
- map += line + "\n";
- }
- return map;
- }
- void loadMap(string mapname)
- {
- if (App::MapLoadedName != mapname)
- {
- App::Map = App::readMap(mapname);
- App::MapLoadedName = mapname;
- }
- }
- void drawPlayer()
- {
- sf::Texture playerTexture;
- playerTexture.loadFromFile(App::getPlayerTexturePath());
- }
- void pollingLoopCallback(sf::RenderWindow* window)
- {
- App::loadMap("default");
- App::drawMap(window);
- App::drawPlayer(); // Player drawing doesn't work yet.
- }
- void initPollingLoop(sf::RenderWindow* window, void(*callback)(sf::RenderWindow*))
- {
- while (window->isOpen())
- {
- sf::Event windowEvent;
- while (window->pollEvent(windowEvent))
- {
- App::checkWindowEvent(window, windowEvent);
- }
- window->clear(sf::Color::White);
- callback(window);
- window->display();
- }
- }
- int init()
- {
- sf::RenderWindow* appWindow = App::createWindow(800, 600, "Mario Game");
- App::initPollingLoop(appWindow, App::pollingLoopCallback);
- return 0;
- }
- }
- int main()
- {
- App::init();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement