// kuromeku's messy c0de <3
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <string>
template<typename T>
void PrintMessage(T msg) {
std::cout << msg << std::endl;
};
// this is where we draw shit lul
void drawMain(sf::Clock &myClock) {
// i'll look into these in more detail later
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.f, 0.f, -200.f);
glRotatef(myClock.GetElapsedTime() * 50, 1.f, 0.f, 0.f);
glRotatef(myClock.GetElapsedTime() * 30, 0.f, 1.f, 0.f);
glRotatef(myClock.GetElapsedTime() * 90, 0.f, 0.f, 1.f);
// draw a pretty cube :D (l2vertex bro)
glBegin(GL_QUADS);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, -50.f);
glVertex3f( 50.f, -50.f, -50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f( 50.f, 50.f, 50.f);
glVertex3f( 50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(50.f, -50.f, -50.f);
glVertex3f(50.f, 50.f, -50.f);
glVertex3f(50.f, 50.f, 50.f);
glVertex3f(50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f( 50.f, -50.f, -50.f);
glVertex3f( 50.f, -50.f, 50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, 50.f);
glEnd();
};
// the main func duurrrr
int main()
{
sf::WindowSettings kuroSettings;
sf::Image myScreen;
sf::Image mySprite;
sf::Clock myClock;
// wrryyyyyyyyyyyyyyyyy
if ( !mySprite.LoadFromFile("sprite.tga") ) {
PrintMessage("FML");
};
// now we can make the real sprite.
sf::Sprite myRealSprite;
myRealSprite.SetColor( sf::Color(255, 255, 255, 255) );
myRealSprite.SetX(200.f);
myRealSprite.SetY(100.f);
myRealSprite.SetImage(mySprite);
myRealSprite.SetPosition(200.f, 100.f);
myRealSprite.SetRotation(30.f);
myRealSprite.SetCenter(0, 0);
myRealSprite.SetScaleX(2.f);
myRealSprite.SetScaleY(0.5f);
myRealSprite.SetScale(2.f, 0.5f);
myRealSprite.SetBlendMode(sf::Blend::Multiply);
// set some settings for mah openGL
kuroSettings.DepthBits = 24;
kuroSettings.StencilBits = 8;
kuroSettings.AntialiasingLevel = 2;
// maek a motherfucking window homie
sf::RenderWindow kuroApp(sf::VideoMode(800, 600, 32), "kuroApp", sf::Style::Close, kuroSettings);
/*
// Set color and depth clear value
glClearDepth(1.f);
glClearColor(0.f, 0.f, 0.f, 0.f);
// Enable Z-buffer read and write
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
// Setup a perspective projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.f, 1.f, 1.f, 500.f);
*/
// i like vertical sync - it makes me smile :))))))
kuroApp.UseVerticalSync(true);
// Let's get out application input, ftwwwww
const sf::Input& appInput = kuroApp.GetInput();
while ( kuroApp.IsOpened() ) {
sf::Event eventCapture;
// this is the frame time and shit
float theFrameTime = kuroApp.GetFrameTime();
// some basic movement shit you no the score bruv
if (appInput.IsKeyDown(sf::Key::Space)) {
PrintMessage("STOP HOLDING DOWN SPACE WTF");
};
if (appInput.IsKeyDown(sf::Key::A) ) {
myRealSprite.Move(-100 * theFrameTime, 0);
};
if (appInput.IsKeyDown(sf::Key::D) ) {
myRealSprite.Move(100 * theFrameTime, 0);
};
if (appInput.IsKeyDown(sf::Key::W) ) {
myRealSprite.Move(0, -100 * theFrameTime);
};
if (appInput.IsKeyDown(sf::Key::S) ) {
myRealSprite.Move(0, 100 * theFrameTime);
};
if (appInput.IsKeyDown(sf::Key::Left) ) {
myRealSprite.Rotate(-100 * theFrameTime);
};
if (appInput.IsKeyDown(sf::Key::Right) ) {
myRealSprite.Rotate(100 * theFrameTime);
};
while (kuroApp.GetEvent(eventCapture)) {
if (eventCapture.Type == sf::Event::Closed) {
kuroApp.Close();
}else if (eventCapture.Type == sf::Event::Resized) {
glViewport(0, 0, eventCapture.Size.Width, eventCapture.Size.Height);
}else if (eventCapture.Type == sf::Event::KeyPressed) {
switch(eventCapture.Key.Code) {
case sf::Key::Escape:
kuroApp.Close();
break;
case sf::Key::Return:
PrintMessage( myClock.GetElapsedTime() );
break;
case sf::Key::F1:
myScreen = kuroApp.Capture();
myScreen.SaveToFile("screenshot.jpg");
break;
default:
break;
};
};
};
// clear the previous frame.
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
/*
// let's make some random colors so we can rave.
int randomR = sf::Randomizer::Random(0, 255);
int randomG = sf::Randomizer::Random(0, 255);
int randomB = sf::Randomizer::Random(0, 255);
// clear it and display it... with random colors.
kuroApp.Clear( sf::Color(randomR, randomG, randomB) );
*/
kuroApp.Clear();
// call our main draw function.
//drawMain(myClock);
// display the window for epic justice
kuroApp.Draw(myRealSprite);
kuroApp.Display();
};
return EXIT_SUCCESS;
}