#include <SFML/Graphics.hpp>
#include <iostream>
#include <sstream>
#include "item.h"
Item::Item(sf::RenderWindow *App, sf::Sprite &Sprite, unsigned int x, unsigned int y, int ItemNumber,
unsigned int ItemMaxNumber, unsigned int ID, sf::Font &Font)
: Game(App)
{
//Dem Item das Sprite übergeben, die Position und die ID setzen
ItemSprite = Sprite;
X = x; Y = y; ItemID = ID;
ItemSprite.SetPosition(X*50.0f, Y*50.0f);
//Anzahl und maximale Anzahl festlegen
Number = ItemNumber;
MaxNumber = ItemMaxNumber;
//Font übergeben und die Anzahl vom ItemStack als Text erstellen
MyFont = Font;
NumberText = sf::Text("", MyFont, 12);
NumberText.SetColor(sf::Color::White);
NumberText.SetPosition(ItemSprite.GetPosition().x + 10, ItemSprite.GetPosition().y + 10);
//Das Item exisitert und es bewegt sich nicht (ist nicht ausgewählt)
Life = true;
Move = false;
}
Item::~Item()
{
//new löschen!
}
void Item::Update(sf::Clock &Clock, sf::Font &MyFont)
{
NumberText = sf::Text(NumberText.GetString(), MyFont, 12);
}
void Item::Render()
{
//Das Item und die Anzahl davon zeichnen (wenn nur 1 da is, soll keine Zahl dabei sein)
Game->Draw(ItemSprite);
if(Number > 1)
Game->Draw(NumberText);
}
void Item::SetColor(sf::Uint8 Red, sf::Uint8 Green, sf::Uint8 Blue)
{
ItemSprite.SetColor(sf::Color(Red, Green, Blue));
}
void Item::SetNumber(unsigned int x, unsigned int y)
{
X = x; Y = y;
}
void Item::SetNumber(unsigned int NewNumber)
{
Number = NewNumber;
}
void Item::SetPosition(float xPos, float yPos, std::stringstream &stream)
{
//Die Position vom Item und von der Anzahl des Stacks setzen
ItemSprite.SetPosition(xPos, yPos);
//Stream bekommt die Anzahl der Items und lässt es dann als Text erscheinen
stream.str("");
stream<<Number;
NumberText.SetString(stream.str());
NumberText.SetPosition(ItemSprite.GetPosition().x+12-(int)(NumberText.GetLocalBounds().Width/2), ItemSprite.GetPosition().y+10);
}
void Item::SetLife(bool NewLife)
{
Life = NewLife;
}
void Item::SetMove(bool NewMove)
{
Move = NewMove;
}
void Item::ChangeNumber(unsigned int Value, bool Change)
{
//Wenn Change true ist, wird addiert, bei false wird subtrahiert
if(Change == true)
Number += Value;
else
Number -= Value;
}
const unsigned int Item::GetX() const
{
return X;
}
const unsigned int Item::GetY() const
{
return Y;
}
const unsigned int Item::GetItemID() const
{
return ItemID;
}
const unsigned int Item::GetNumber() const
{
return Number;
}
const unsigned int Item::GetMaxNumber() const
{
return MaxNumber;
}
const bool Item::GetLife() const
{
return Life;
}
const bool Item::GetMove() const
{
return Move;
}