Page MenuHomePhabricator (Chris)

No OneTemporary

Size
19 KB
Referenced Files
None
Subscribers
None
diff --git a/boardelem.cpp b/boardelem.cpp
index 41165f0..dffa9aa 100644
--- a/boardelem.cpp
+++ b/boardelem.cpp
@@ -1,33 +1,36 @@
#include "boardelem.h"
BoardElem::BoardElem(TextureHolder *textures,int pos, int type, const sf::Texture *textureElem)
{
// this->textureElem = textureElem;
this->pos = pos;
this->textures = textures;
this->type = type;
// setPosition()
- int y = (int) pos / efc::TILE_SIZE;
- int x = pos % efc::TILE_SIZE;
+ int y = (int) pos / 16;
+ int x = pos % 16;
- int y_type = (int) type / 16;
- int x_type = type % 16;
+ int y_type = (int) type / 40;
+ int x_type = type % 40 ;
this->textureElem = std::move(textureElem);
- std::cout << "POS " << pos << " x" << x << " : " << x * efc::TILE_SIZE << " y" << y << " : " << y * efc::TILE_SIZE << std::endl;
+ std::cout << "TYPE " << type << " x_type " << x_type << " : " << x_type * efc::TILE_SIZE << " y " << y_type << " : " << y_type * efc::TILE_SIZE << std::endl;
//std::cout << "x_type " << x_type << " : " << x_type * efc::TILE_SIZE << " y_type " << y_type << " : " << y_type * efc::TILE_SIZE << std::endl;
setPosition(x*efc::TILE_SIZE,y*efc::TILE_SIZE);
+
+// setPosition(375,375);
+
setTexture(myHolder.textureTiles);
setTextureRect(sf::IntRect(x_type*efc::TILE_SIZE, y_type*efc::TILE_SIZE, efc::TILE_SIZE, efc::TILE_SIZE));
}
diff --git a/boardelem.h b/boardelem.h
index 9a5136e..5bf9e3a 100644
--- a/boardelem.h
+++ b/boardelem.h
@@ -1,29 +1,26 @@
#ifndef BOARDELEM_H
#define BOARDELEM_H
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include "tilemap.h"
#include "textureholder.h"
class BoardElem: public sf::Sprite
{
public:
BoardElem();
BoardElem(TextureHolder *textures,int pos, int type, const sf::Texture *textureElem);
-
-
int pos;
int type;
-
private:
-// sf::Sprite spriteElem;
+
const sf::Texture* textureElem;
static const sf::Texture& textureElem2;
TextureHolder *textures;
TextureHolder myHolder;
};
#endif // BOARDELEM_H
diff --git a/game.cpp b/game.cpp
index c4878f7..bfc1f73 100644
--- a/game.cpp
+++ b/game.cpp
@@ -1,172 +1,172 @@
#include <stdlib.h>
#include <iostream>
#include "game.h"
#include <time.h> /* time */
namespace efc {
void Game::initBoard()
{
// Grass tile starts at 342 and has 11 tiles
// int level[256];
// int level[256];
// Structure of the board
/*
{
342, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
80, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0,
1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3 }
*/
// Fill the array
for (int i=0;i<256;i++)
{
int grass = (rand() % 10) + 1;
level[i] = 342 + grass;
level[i] = level[i];
}
// level[0] = 441;
// level[240] = 0;
// level[255] = 0;
// level[15] = 0;
level[8] = 813;
level[24] = 803;
level[40] = 803;
level[56] = 803;
level[72] = 803;
level[88] = 801;
level[167] = 809;
level[183] = 803;
level[199] = 803;
level[215] = 803;
level[231] = 803;
level[247] = 812;
level[112] = 811;
for (int i=113;i<117;i++)
level[i] = 816;
level[117] = 815;
level[138] = 800;
for (int i=139;i<143;i++)
level[i] = 816;
level[143] = 814;
- map.load(&textureTiles, sf::Vector2u(efc::TILE_SIZE, efc::TILE_SIZE), level, mapSize, mapSize);
+ map.load(&textures, sf::Vector2u(efc::TILE_SIZE, efc::TILE_SIZE), level, mapSize, mapSize);
- PlayerHud playerHud1(&textures, std::rand() % 80, &textureFaces, &textureTiles, &gameFont, 32,0);
- PlayerHud playerHud2(&textures, std::rand() % 30, &textureFaces, &textureTiles, &gameFont, 32,1);
- PlayerHud playerHud3(&textures, std::rand() % 60, &textureFaces, &textureTiles, &gameFont, 32,2);
- PlayerHud playerHud4(&textures, std::rand() % 50, &textureFaces, &textureTiles, &gameFont, 32,3);
+ PlayerHud playerHud1(&textures, std::rand() % 80, &gameFont, 32,0);
+ PlayerHud playerHud2(&textures, std::rand() % 30, &gameFont, 32,1);
+ PlayerHud playerHud3(&textures, std::rand() % 60, &gameFont, 32,2);
+ PlayerHud playerHud4(&textures, std::rand() % 50, &gameFont, 32,3);
players[0] = playerHud1;
players[1] = playerHud2;
players[2] = playerHud3;
players[3] = playerHud4;
}
void Game::loadAssets()
{
if (!textureFaces.loadFromFile("assets/img/faces.jpg"))
std::exit(1);
if (!textureTiles.loadFromFile("assets/img/zw-tilesets/_MAP.png"))
std::exit(1);
if (!gameFont.loadFromFile("assets/fnt/8bitOperatorPlus-Regular.ttf"))
{
std::exit(1);
}
}
Game::Game()
{
mapSize = 16;
std::srand (time(NULL));
int turn = 0;
loadAssets();
sf::RenderWindow window(sf::VideoMode(512, 400), "EnFuCraft");
sf::View viewGui(sf::FloatRect(00, 00, 112, 400));
viewGui.setViewport(sf::FloatRect(0.8f,0, 1.0f, 1.0f));
sf::View viewTiles(sf::FloatRect(00, 00, 400, 400));
viewTiles.setViewport(sf::FloatRect(0,0, 0.8f, 1.0f));
Selector selector(efc::TILE_SIZE);
selector.changeColor(turn); //This is only for the test TODO: remove
// TileMap mapElem;
// if (!mapElem.load(&textureTiles, sf::Vector2u(tileSize, tileSize), levelElems, mapSize, mapSize))
// std::exit(1);
initBoard();
// run the main loop
while (window.isOpen())
{
// handle events
sf::Event event;
while (window.pollEvent(event))
{
if(event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::MouseButtonPressed)
{
if (event.mouseButton.button == sf::Mouse::Left)
{
std::cout << "the right button was pressed" << std::endl;
std::cout << "mouse x: " << event.mouseButton.x << std::endl;
std::cout << "mouse y: " << event.mouseButton.y << std::endl;
turn++;
if (turn==4)
turn = 0;
selector.changeColor(turn);
}
}
}
//
sf::Vector2i localPositionTmp = sf::Mouse::getPosition(window);
sf::Vector2f localPosition = window.mapPixelToCoords(localPositionTmp,viewTiles);
if ((localPosition.x>=0) && (localPosition.y>=0) && (localPosition.x<=mapSize*efc::TILE_SIZE) && (localPosition.y<=mapSize*efc::TILE_SIZE))
{
// std::cout << localPosition.x << " " << localPosition.y << " " << localPosition.x / efc::TILE_SIZE << " " << localPosition.y / efc::TILE_SIZE << std::endl;
selector.setPosition((int) (localPosition.x / efc::TILE_SIZE)*efc::TILE_SIZE, ((int) localPosition.y / efc::TILE_SIZE)*efc::TILE_SIZE);
}
// draw the map
window.clear();
window.setView(viewTiles);
window.draw(map);
// window.draw(mapElem);
for (int i=0;i<4;i++)
{
window.draw(players[i].elems);
}
window.draw(selector);
window.setView(viewGui);
for (int i=0;i<4;i++)
{
window.draw(players[i]);
}
window.display();
}
}
}
diff --git a/playerhud.cpp b/playerhud.cpp
index 29b3ddb..0ac1841 100644
--- a/playerhud.cpp
+++ b/playerhud.cpp
@@ -1,125 +1,98 @@
#include "playerhud.h"
#include "textureholder.h"
PlayerHud::PlayerHud()
{
}
-PlayerHud::PlayerHud(TextureHolder *textures, int faceNumber, sf::Texture *faces, sf::Texture *textureTiles, sf::Font *gameFont, int faceSize, int pos)
+PlayerHud::PlayerHud(TextureHolder *textures, int faceNumber, sf::Font *gameFont, int faceSize, int pos)
{
-
- // level[0] = 441;
- // level[240] = 0;
- // level[255] = 0;
- // level[15] = 0;
-
int startPositions[4] = {0,15,240, 255};
-
this->textures = textures;
-
-
- BoardElem startElem(textures, startPositions[pos],441, std::move(textureTiles));
-
-// const sf::Texture& refTexture = sf::Texture(*textureTiles);
+ BoardElem startElem(textures, startPositions[pos],441, &this->textures->textureTiles);
startElem.setTexture(this->textures->textureTiles);
-
elems.items.push_back(startElem);
this->faceSize = faceSize;
spriteFace.setTexture(textures->textureFaces);
this->pos = pos;
food = 0;
cash = 0;
energy = 0;
- int x = faceNumber % 10;
+ int x = faceNumber % 10;
int y = (int) faceNumber /10;
txtCash.setFont(*gameFont);
txtFood.setFont(*gameFont);
txtEnergy.setFont(*gameFont);
txtCash.setPosition(1,(pos*100)+40);
txtCash.setString("Cash: " + std::to_string(cash));
txtCash.setCharacterSize(10);
txtCash.setScale(sf::Vector2f(0.25f, 1.f));
txtFood.setPosition(1,(pos*100)+55);
txtFood.setString("Food: " + std::to_string(food));
txtFood.setCharacterSize(10);
txtFood.setScale(sf::Vector2f(0.25f, 1.f));
-
txtEnergy.setPosition(1,(pos*100)+70);
txtEnergy.setString("Enrg: " + std::to_string(energy));
txtEnergy.setString("Enrg: " + std::to_string(energy));
txtEnergy.setCharacterSize(10);
txtEnergy.setScale(sf::Vector2f(0.25f, 1.f));
std::cout << "playerHud" << faceNumber << " " << x << " " << y << std::endl;
spriteFace.setTextureRect(sf::IntRect(x*faceSize, y*faceSize, faceSize, faceSize));
spriteFace.setScale(sf::Vector2f(0.25f, 1.f));
spriteFace.setPosition(0,pos*100);
}
void PlayerHud::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
-// // apply the transform
- states.transform *= getTransform();
-
-
+ // // apply the transform
+ states.transform *= getTransform();
+ // Color rectangles making the gui on the right side
sf::RectangleShape rectangle(sf::Vector2f(faceSize, faceSize));
-
sf::RectangleShape rectangle2(sf::Vector2f(faceSize, (faceSize*2)+3));
-
if (pos==0)
{
- rectangle.setFillColor(sf::Color(50, 50, 150,168));
- rectangle2.setFillColor(sf::Color(100, 100, 150,168));
- rectangle.setOutlineColor(sf::Color(0,0,128));
+ rectangle.setFillColor(sf::Color(50, 50, 150,168));
+ rectangle2.setFillColor(sf::Color(100, 100, 150,168));
+ rectangle.setOutlineColor(sf::Color(0,0,128));
}
else if (pos==1)
{
- rectangle.setFillColor(sf::Color(50, 150, 50,168));
- rectangle2.setFillColor(sf::Color(100, 150,100,168));
-
- rectangle.setOutlineColor(sf::Color(0,128,0));
+ rectangle.setFillColor(sf::Color(50, 150, 50,168));
+ rectangle2.setFillColor(sf::Color(100, 150,100,168));
+ rectangle.setOutlineColor(sf::Color(0,128,0));
}
else if (pos==2)
{
- rectangle.setFillColor(sf::Color(150, 50, 50,168));
- rectangle2.setFillColor(sf::Color(150, 100,100,168));
-
- rectangle.setOutlineColor(sf::Color(128,0,0));
-
+ rectangle.setFillColor(sf::Color(150, 50, 50,168));
+ rectangle2.setFillColor(sf::Color(150, 100,100,168));
+ rectangle.setOutlineColor(sf::Color(128,0,0));
}
else if (pos==3)
{
- rectangle.setFillColor(sf::Color(150, 150, 150,168));
- rectangle2.setFillColor(sf::Color(200, 200,200,168));
-
- rectangle.setOutlineColor(sf::Color(128,128,128));
-
+ rectangle.setFillColor(sf::Color(150, 150, 150,168));
+ rectangle2.setFillColor(sf::Color(200, 200,200,168));
+ rectangle.setOutlineColor(sf::Color(128,128,128));
}
rectangle.setOutlineThickness(1);
rectangle.setPosition(0, pos*100);
rectangle2.setPosition(0, (pos*100)+faceSize+1);
+
target.draw(rectangle, states);
target.draw(rectangle2, states);
target.draw(txtCash, states);
target.draw(txtFood, states);
target.draw(txtEnergy, states);
target.draw(spriteFace, states);
-
- for (const BoardElem &i: elems.items)
- {
-// std::cout << i.pos << std::endl;
-
- }
-
}
diff --git a/playerhud.h b/playerhud.h
index e3e33b4..91025fb 100644
--- a/playerhud.h
+++ b/playerhud.h
@@ -1,40 +1,40 @@
#ifndef PLAYERHUD_H
#define PLAYERHUD_H
#include <iostream>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include "boardelems.h"
#include "textureholder.h"
class PlayerHud : public sf::Drawable, public sf::Transformable
{
public:
PlayerHud();
- PlayerHud(TextureHolder *textures, int faceNumber, sf::Texture *faces, sf::Texture *textureTiles, sf::Font *gameFont, int tileSize, int pos);
+ PlayerHud(TextureHolder *textures, int faceNumber, sf::Font *gameFont, int tileSize, int pos);
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
int pos;
int cash;
int energy;
int food;
BoardElems elems;
std::vector<int> properties;
private:
// sf::Font gameFont;
sf::Sprite spriteFace;
sf::Text txtCash;
sf::Text txtEnergy;
sf::Text txtFood;
int faceSize;
int tileSize;
TextureHolder *textures;
};
#endif // PLAYERHUD_H
diff --git a/selector.cpp b/selector.cpp
index 09e02b8..1d4c9d5 100644
--- a/selector.cpp
+++ b/selector.cpp
@@ -1,61 +1,44 @@
#include "selector.h"
Selector::Selector(int squareSize)
:rectangle(sf::Vector2f(squareSize, squareSize))
{
this->squareSize = squareSize;
rectangle.setFillColor(sf::Color(150, 250, 150,168));
rectangle.setOutlineThickness(1);
rectangle.setOutlineColor(sf::Color(0,255,0));
changeColor(3);
-
}
void Selector::changeColor(int colorNumber)
{
if (colorNumber==0)
{
rectangle.setFillColor(sf::Color(150, 150, 250,168));
rectangle.setOutlineColor(sf::Color(0,0,255));
}
else if (colorNumber==1)
{
rectangle.setFillColor(sf::Color(150, 250, 150,168));
rectangle.setOutlineColor(sf::Color(0,255,0));
}
else if (colorNumber==2)
{
rectangle.setFillColor(sf::Color(250, 150, 150,168));
rectangle.setOutlineColor(sf::Color(255,0,0));
}
else if (colorNumber==3)
{
rectangle.setFillColor(sf::Color(200, 200, 200,168));
rectangle.setOutlineColor(sf::Color(200,200,200));
}
-
-
-
}
void Selector::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
// // apply the transform
states.transform *= getTransform();
-
- // // apply the tileset texture
- // states.texture = &m_tileset;
-
- // // draw the vertex array
- // target.draw(m_vertices, states);
-
-
-// sf::RectangleShape rectangle(sf::Vector2f(squareSize, squareSize));
-
-
target.draw(rectangle, states);
-
-
}
diff --git a/tilemap.cpp b/tilemap.cpp
index b67f6ec..4d6cf91 100644
--- a/tilemap.cpp
+++ b/tilemap.cpp
@@ -1,58 +1,55 @@
#include "tilemap.h"
TileMap::TileMap()
{
}
- bool TileMap::load(sf::Texture *m_tileset, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height)
- {
- this->m_tileset = m_tileset;
- // resize the vertex array to fit the level size
- m_vertices.setPrimitiveType(sf::Quads);
- m_vertices.resize(width * height * 4);
-
- // populate the vertex array, with one quad per tile
- for (unsigned int i = 0; i < width; ++i)
- for (unsigned int j = 0; j < height; ++j)
- {
- // get the current tile number
- int tileNumber = tiles[i + j * width];
-
- // find its position in the tileset texture
- int tu = tileNumber % (m_tileset->getSize().x / tileSize.x);
- int tv = tileNumber / (m_tileset->getSize().x / tileSize.x);
-
-// std::cout << "tu " << tu << " tv " << tv << std::endl;
-
- // get a pointer to the current tile's quad
- sf::Vertex* quad = &m_vertices[(i + j * width) * 4];
-
- // define its 4 corners
- quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
- quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
- quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
- quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);
-
- // define its 4 texture coordinates
- quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
- quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
- quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
- quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);
- }
-
- return true;
- }
-
- void TileMap::draw(sf::RenderTarget& target, sf::RenderStates states) const
- {
- // apply the transform
- states.transform *= getTransform();
- // apply the tileset texture
- states.texture = m_tileset;
-
- // draw the vertex array
- target.draw(m_vertices, states);
- }
-
- sf::VertexArray m_vertices;
- sf::Texture m_tileset;
+bool TileMap::load(TextureHolder *textures, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height)
+{
+ this->m_tileset = &textures->textureTiles;
+ // resize the vertex array to fit the level size
+ m_vertices.setPrimitiveType(sf::Quads);
+ m_vertices.resize(width * height * 4);
+
+ // populate the vertex array, with one quad per tile
+ for (unsigned int i = 0; i < width; ++i)
+ for (unsigned int j = 0; j < height; ++j)
+ {
+ // get the current tile number
+ int tileNumber = tiles[i + j * width];
+
+ // find its position in the tileset texture
+ int tu = tileNumber % (m_tileset->getSize().x / tileSize.x);
+ int tv = tileNumber / (m_tileset->getSize().x / tileSize.x);
+
+ // get a pointer to the current tile's quad
+ sf::Vertex* quad = &m_vertices[(i + j * width) * 4];
+
+ // define its 4 corners
+ quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
+ quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
+ quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
+ quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);
+
+ // define its 4 texture coordinates
+ quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
+ quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
+ quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
+ quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);
+ }
+ return true;
+}
+
+void TileMap::draw(sf::RenderTarget& target, sf::RenderStates states) const
+{
+ // apply the transform
+ states.transform *= getTransform();
+ // apply the tileset texture
+ states.texture = m_tileset;
+
+ // draw the vertex array
+ target.draw(m_vertices, states);
+}
+
+sf::VertexArray m_vertices;
+sf::Texture m_tileset;
diff --git a/tilemap.h b/tilemap.h
index a914e2f..7f0feed 100644
--- a/tilemap.h
+++ b/tilemap.h
@@ -1,25 +1,28 @@
#ifndef TILEMAP_H
#define TILEMAP_H
#include <iostream>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
+#include "textureholder.h"
namespace efc {
enum {
TILE_SIZE = 25
};
}
class TileMap : public sf::Drawable, public sf::Transformable
{
public:
- bool load(sf::Texture *m_tileset, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height);
+ bool load(TextureHolder *textures, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height);
TileMap();
private:
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
sf::VertexArray m_vertices;
sf::Texture *m_tileset;
+ TextureHolder *textures;
+
};
#endif // TILEMAP_H

File Metadata

Mime Type
text/x-diff
Expires
Mon, Feb 2, 9:11 PM (1 d, 19 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
55586
Default Alt Text
(19 KB)

Event Timeline