Voilà je reviens avec un peu de propreté :
Ma classe Game où tout se passe :
#include "Game.h"
Game::Game()
{
sf::RenderWindow window(sf::VideoMode(WIDTH_WINDOW, HEIGHT_WINDOW), "[V0.01]Conquest of the World", sf::Style::Default);
window.setKeyRepeatEnabled(true);
window.setFramerateLimit(200);
Map map;
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape) )
{
window.close();
}
}
window.clear(sf::Color(0, 0, 255, 0));
window.draw(map);
window.display();
}
}
Son header :
#ifndef GAME_H
#define GAME_H
#include <cstdlib>
#include <time.h>
#include <SFML/Graphics.hpp>
#include "Map.h"
#define WIDTH_WINDOW 800
#define HEIGHT_WINDOW 450
class Game
{
public:
Game();
private:
};
#endif // GAME_H
Ma classe Tuile :
#include "Tile.h"
#define TILESIZE 128
Tile::Tile()
{
}
void Tile::addTile(int posX, int posY)
{
vertex.position = sf::Vector2f(posX * TILESIZE, posY * TILESIZE);
vertex.texCoords = sf::Vector2f(128,0);
tiles.append(vertex);
vertex.position = sf::Vector2f(posX * TILESIZE + TILESIZE, posY * TILESIZE);
vertex.texCoords = sf::Vector2f(256,0);
tiles.append(vertex);
vertex.position = sf::Vector2f(posX * TILESIZE + TILESIZE, posY * TILESIZE + TILESIZE);
vertex.texCoords = sf::Vector2f(256,128);
tiles.append(vertex);
vertex.position = sf::Vector2f(posX * TILESIZE, posY * TILESIZE + TILESIZE);
vertex.texCoords = sf::Vector2f(128,128);
tiles.append(vertex);
}
void Tile::loadTexture()
{
tiles.setPrimitiveType(sf::Quads);
if (!textureTileset.loadFromFile("Resources/Tileset.png"))
std::cout << "Error Loading" << std::endl;
}
Son Header :
#ifndef TILE_H
#define TILE_H
#include <SFML/Graphics.hpp>
#include <iostream>
class Tile : public sf::Drawable, public sf::Transformable
{
public:
Tile();
void addTile(int posX, int poxY);
void loadTexture();
private:
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
states.transform *= getTransform();
states.texture = &textureTileset;
target.draw(tiles, states);
}
sf::Vertex vertex;
sf::VertexArray tiles;
sf::Texture textureTileset;
};
#endif // TILE_H
Et pour finir la classe Map : (où j'essaye d'avoir 10 tuiles de long et 10 tuiles de large)
#include "Map.h"
#define MAPSIZE 5
Map::Map()
{
tile.loadTexture();
for(int x = 0; x < MAPSIZE; x++)
{
for(int y = 0; y < MAPSIZE; y++)
{
sizeVector = Tilemap.size();
Tilemap.push_back(tile);
Tilemap[sizeVector].addTile(x, y);
}
}
}
Son header :
#ifndef MAP_H
#define MAP_H
#include <iostream>
#include <SFML/Graphics.hpp>
#include "Tile/Tile.h"
class Map : public sf::Drawable, sf::Transformable
{
public:
Map();
private:
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
{
target.draw(tile, states);
}
int sizeVector = 0;
Tile tile;
std::vector <Tile> Tilemap;
};
#endif // MAP_H
Et voilà mon problème c'est que ça n'affiche rien dans mon application ... Et ensuite au lancement de l'application j'en ai pour 10 secondes à charger ce "rien", j'aurai quelque chose ça irai mieux mais je trouve ça beaucoup trop long pour seulement 100 entités surtout que là j'ai qu'un seul appel à draw.
Donc dites moi si j'ai tout faux déjà, mais j'implore vraiment votre aide, je n'y arrive vraiment pas...