Attempt implement menu (unresolved symbol error)
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
|||||||
|
#include "Button.h"
|
||||||
|
#include <string>
|
||||||
|
#include "Util.h"
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
|
Button::Button(std::string & text, Vec2f position, float width, float height) : MenuElement(position)
|
||||||
|
{
|
||||||
|
this->width = width;
|
||||||
|
this->height = height;
|
||||||
|
this->text = text;
|
||||||
|
|
||||||
|
background = Vec3f(10, 10, 10);
|
||||||
|
foreground = Vec3f(255, 255, 255);
|
||||||
|
}
|
||||||
|
|
||||||
|
Button::~Button()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Button::draw(void)
|
||||||
|
{
|
||||||
|
glColor4f(background.x, background.y, background.z, 1.0f);
|
||||||
|
|
||||||
|
glBegin(GL_QUADS);
|
||||||
|
glVertex2f(position.x, position.y);
|
||||||
|
glVertex2f(position.x, position.y + height);
|
||||||
|
glVertex2f(position.x + width, position.y + height);
|
||||||
|
glVertex2f(position.x + width, position.y);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
glColor4f(foreground.x, foreground.y, foreground.z, 1.0f);
|
||||||
|
Util::glutBitmapString(text, position.x + (width / 2), position.y + (height / 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Button::update(int x, int y)
|
||||||
|
{
|
||||||
|
//Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
void Button::setForeground(Vec3f color)
|
||||||
|
{
|
||||||
|
foreground = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Button::setBackground(Vec3f color)
|
||||||
|
{
|
||||||
|
background = color;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "MenuElement.h"
|
||||||
|
|
||||||
|
class Button : public MenuElement
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
std::string text;
|
||||||
|
float width, height;
|
||||||
|
Vec3f foreground;
|
||||||
|
Vec3f background;
|
||||||
|
public:
|
||||||
|
Button(std::string &text, Vec2f position, float width, float height);
|
||||||
|
~Button();
|
||||||
|
|
||||||
|
void draw(void);
|
||||||
|
void update(int x, int y);
|
||||||
|
|
||||||
|
void setForeground(Vec3f color);
|
||||||
|
void setBackground(Vec3f color);
|
||||||
|
};
|
||||||
|
|
||||||
+11
-7
@@ -5,6 +5,10 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include "WorldHandler.h"
|
#include "WorldHandler.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#include "Cursor.h"
|
||||||
|
#include "Menu.h"
|
||||||
|
#include "Text.h"
|
||||||
|
#include "Vector.h"
|
||||||
|
|
||||||
int CrystalPoint::width = 0;
|
int CrystalPoint::width = 0;
|
||||||
int CrystalPoint::height = 0;
|
int CrystalPoint::height = 0;
|
||||||
@@ -15,13 +19,14 @@ void CrystalPoint::init()
|
|||||||
{
|
{
|
||||||
player = Player::getInstance();
|
player = Player::getInstance();
|
||||||
worldhandler = WorldHandler::getInstance();
|
worldhandler = WorldHandler::getInstance();
|
||||||
//cursor = Cursor::getInstance();
|
cursor = Cursor::getInstance();
|
||||||
|
|
||||||
|
menu = new Menu();
|
||||||
|
menu->AddMenuElement(new Text("Hello", Vec2f(10, 10)));
|
||||||
|
|
||||||
lastFrameTime = 0;
|
lastFrameTime = 0;
|
||||||
|
|
||||||
glClearColor(0.7f, 0.7f, 1.0f, 1.0f);
|
glClearColor(0.7f, 0.7f, 1.0f, 1.0f);
|
||||||
|
|
||||||
mousePosition = Vec2f(width / 2, height / 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -40,8 +45,7 @@ void CrystalPoint::draw()
|
|||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
|
|
||||||
worldhandler->draw();
|
worldhandler->draw();
|
||||||
|
menu->draw();
|
||||||
//cursor->draw();
|
|
||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
}
|
}
|
||||||
@@ -86,8 +90,8 @@ void CrystalPoint::update()
|
|||||||
|
|
||||||
worldhandler->update(deltaTime);
|
worldhandler->update(deltaTime);
|
||||||
|
|
||||||
mousePosition = mousePosition + mouseOffset;
|
cursor->update(cursor->mousePosition + mouseOffset);
|
||||||
//cursor->update(mousePosition);
|
menu->update();
|
||||||
|
|
||||||
mouseOffset = Vec2f(0, 0);
|
mouseOffset = Vec2f(0, 0);
|
||||||
prevKeyboardState = keyboardState;
|
prevKeyboardState = keyboardState;
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
class WorldHandler;
|
class WorldHandler;
|
||||||
class SoundSystem;
|
class SoundSystem;
|
||||||
class Player;
|
class Player;
|
||||||
|
class Cursor;
|
||||||
|
class Menu;
|
||||||
#include "Vector.h"
|
#include "Vector.h"
|
||||||
#include "SoundSystem.h"
|
#include "SoundSystem.h"
|
||||||
|
|
||||||
@@ -25,6 +27,9 @@ public:
|
|||||||
|
|
||||||
WorldHandler* worldhandler;
|
WorldHandler* worldhandler;
|
||||||
Player* player;
|
Player* player;
|
||||||
|
Cursor* cursor;
|
||||||
|
|
||||||
|
Menu* menu;
|
||||||
|
|
||||||
static int width, height;
|
static int width, height;
|
||||||
KeyboardState keyboardState;
|
KeyboardState keyboardState;
|
||||||
|
|||||||
@@ -154,6 +154,7 @@
|
|||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Button.cpp" />
|
||||||
<ClCompile Include="Crystal.cpp" />
|
<ClCompile Include="Crystal.cpp" />
|
||||||
<ClCompile Include="CrystalPoint.cpp" />
|
<ClCompile Include="CrystalPoint.cpp" />
|
||||||
<ClCompile Include="Cursor.cpp" />
|
<ClCompile Include="Cursor.cpp" />
|
||||||
@@ -164,17 +165,22 @@
|
|||||||
<ClCompile Include="json.cpp" />
|
<ClCompile Include="json.cpp" />
|
||||||
<ClCompile Include="LevelObject.cpp" />
|
<ClCompile Include="LevelObject.cpp" />
|
||||||
<ClCompile Include="Main.cpp" />
|
<ClCompile Include="Main.cpp" />
|
||||||
|
<ClCompile Include="Menu.cpp" />
|
||||||
|
<ClCompile Include="MenuElement.cpp" />
|
||||||
<ClCompile Include="Model.cpp" />
|
<ClCompile Include="Model.cpp" />
|
||||||
<ClCompile Include="Sound.cpp" />
|
<ClCompile Include="Sound.cpp" />
|
||||||
<ClCompile Include="SoundSystem.cpp" />
|
<ClCompile Include="SoundSystem.cpp" />
|
||||||
<ClCompile Include="Player.cpp" />
|
<ClCompile Include="Player.cpp" />
|
||||||
<ClCompile Include="Skybox.cpp" />
|
<ClCompile Include="Skybox.cpp" />
|
||||||
|
<ClCompile Include="Text.cpp" />
|
||||||
|
<ClCompile Include="Util.cpp" />
|
||||||
<ClCompile Include="Vector.cpp" />
|
<ClCompile Include="Vector.cpp" />
|
||||||
<ClCompile Include="Vertex.cpp" />
|
<ClCompile Include="Vertex.cpp" />
|
||||||
<ClCompile Include="World.cpp" />
|
<ClCompile Include="World.cpp" />
|
||||||
<ClCompile Include="WorldHandler.cpp" />
|
<ClCompile Include="WorldHandler.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Button.h" />
|
||||||
<ClInclude Include="Crystal.h" />
|
<ClInclude Include="Crystal.h" />
|
||||||
<ClInclude Include="CrystalPoint.h" />
|
<ClInclude Include="CrystalPoint.h" />
|
||||||
<ClInclude Include="Cursor.h" />
|
<ClInclude Include="Cursor.h" />
|
||||||
@@ -185,12 +191,16 @@
|
|||||||
<ClInclude Include="json.h" />
|
<ClInclude Include="json.h" />
|
||||||
<ClInclude Include="LevelObject.h" />
|
<ClInclude Include="LevelObject.h" />
|
||||||
<ClInclude Include="Main.h" />
|
<ClInclude Include="Main.h" />
|
||||||
|
<ClInclude Include="Menu.h" />
|
||||||
|
<ClInclude Include="MenuElement.h" />
|
||||||
<ClInclude Include="Model.h" />
|
<ClInclude Include="Model.h" />
|
||||||
<ClInclude Include="Sound.h" />
|
<ClInclude Include="Sound.h" />
|
||||||
<ClInclude Include="SoundSystem.h" />
|
<ClInclude Include="SoundSystem.h" />
|
||||||
<ClInclude Include="Player.h" />
|
<ClInclude Include="Player.h" />
|
||||||
<ClInclude Include="Skybox.h" />
|
<ClInclude Include="Skybox.h" />
|
||||||
<ClInclude Include="stb_image.h" />
|
<ClInclude Include="stb_image.h" />
|
||||||
|
<ClInclude Include="Text.h" />
|
||||||
|
<ClInclude Include="Util.h" />
|
||||||
<ClInclude Include="vector.h" />
|
<ClInclude Include="vector.h" />
|
||||||
<ClInclude Include="Vertex.h" />
|
<ClInclude Include="Vertex.h" />
|
||||||
<ClInclude Include="World.h" />
|
<ClInclude Include="World.h" />
|
||||||
|
|||||||
@@ -22,6 +22,9 @@
|
|||||||
<Filter Include="Source Files\json">
|
<Filter Include="Source Files\json">
|
||||||
<UniqueIdentifier>{9c655946-3f99-44ea-bc97-2817656954e0}</UniqueIdentifier>
|
<UniqueIdentifier>{9c655946-3f99-44ea-bc97-2817656954e0}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
<Filter Include="Source Files\Menu">
|
||||||
|
<UniqueIdentifier>{6843c8c9-b70f-40a3-a112-d9506726e5ed}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Main.cpp">
|
<ClCompile Include="Main.cpp">
|
||||||
@@ -33,9 +36,6 @@
|
|||||||
<ClCompile Include="json.cpp">
|
<ClCompile Include="json.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="WorldHandler.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Entity.cpp">
|
<ClCompile Include="Entity.cpp">
|
||||||
<Filter>Source Files\Object</Filter>
|
<Filter>Source Files\Object</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -79,10 +79,28 @@
|
|||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Sound.cpp">
|
<ClCompile Include="Sound.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Crystal.cpp">
|
<ClCompile Include="Crystal.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="WorldHandler.cpp">
|
||||||
|
<Filter>Source Files\World</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Menu.cpp">
|
||||||
|
<Filter>Source Files\Menu</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="MenuElement.cpp">
|
||||||
|
<Filter>Source Files\Menu</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Button.cpp">
|
||||||
|
<Filter>Source Files\Menu</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Text.cpp">
|
||||||
|
<Filter>Source Files\Menu</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Util.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -138,7 +156,7 @@
|
|||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Sound.h">
|
<ClInclude Include="Sound.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Crystal.h">
|
<ClInclude Include="Crystal.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
@@ -146,6 +164,21 @@
|
|||||||
<ClInclude Include="Skybox.h">
|
<ClInclude Include="Skybox.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Menu.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="MenuElement.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Button.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Text.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Util.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="worlds\worlds.json">
|
<None Include="worlds\worlds.json">
|
||||||
|
|||||||
+13
@@ -8,6 +8,7 @@ Cursor* Cursor::instance = NULL;
|
|||||||
Cursor::Cursor()
|
Cursor::Cursor()
|
||||||
{
|
{
|
||||||
enabled = false;
|
enabled = false;
|
||||||
|
mousePosition = Vec2f(CrystalPoint::width / 2, CrystalPoint::height / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
Cursor::~Cursor()
|
Cursor::~Cursor()
|
||||||
@@ -54,5 +55,17 @@ void Cursor::draw(void)
|
|||||||
|
|
||||||
void Cursor::update(Vec2f newPosition)
|
void Cursor::update(Vec2f newPosition)
|
||||||
{
|
{
|
||||||
|
if (newPosition.x < 0)
|
||||||
|
newPosition.x = 0;
|
||||||
|
|
||||||
|
if (newPosition.y < 0)
|
||||||
|
newPosition.y = 0;
|
||||||
|
|
||||||
|
if (newPosition.x > CrystalPoint::width)
|
||||||
|
newPosition.x = CrystalPoint::width;
|
||||||
|
|
||||||
|
if (newPosition.y > CrystalPoint::height)
|
||||||
|
newPosition.y = CrystalPoint::height;
|
||||||
|
|
||||||
mousePosition = newPosition;
|
mousePosition = newPosition;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,8 @@ private:
|
|||||||
|
|
||||||
static Cursor* instance;
|
static Cursor* instance;
|
||||||
bool enabled;
|
bool enabled;
|
||||||
Vec2f mousePosition;
|
|
||||||
public:
|
public:
|
||||||
|
Vec2f mousePosition;
|
||||||
~Cursor();
|
~Cursor();
|
||||||
|
|
||||||
static Cursor* getInstance(void);
|
static Cursor* getInstance(void);
|
||||||
|
|||||||
+2
-13
@@ -5,9 +5,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#include "Util.h"
|
||||||
//Prototype
|
|
||||||
void glutBitmapString(std::string str, int x, int y);
|
|
||||||
|
|
||||||
Interface::Interface()
|
Interface::Interface()
|
||||||
{
|
{
|
||||||
@@ -78,7 +76,7 @@ void Interface::draw()
|
|||||||
|
|
||||||
//Text: level
|
//Text: level
|
||||||
glColor4f(1.0f, 1.0f, 0.1f, 1.0);
|
glColor4f(1.0f, 1.0f, 0.1f, 1.0);
|
||||||
glutBitmapString("Level: " + std::to_string(player->level), 490, 900);
|
Util::glutBitmapString("Level: " + std::to_string(player->level), 490, 900);
|
||||||
|
|
||||||
int cw, ch, offset;
|
int cw, ch, offset;
|
||||||
cw = 20;
|
cw = 20;
|
||||||
@@ -105,12 +103,3 @@ void Interface::update(float deltaTime)
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void glutBitmapString(std::string str, int x, int y)
|
|
||||||
{
|
|
||||||
glRasterPos2f(x, y);
|
|
||||||
for (int i = 0; i < str.size(); i++)
|
|
||||||
{
|
|
||||||
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, str[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,9 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "Vector.h"
|
#include "Vector.h"
|
||||||
|
|
||||||
|
#define STB_IMAGE_IMPLEMENTATION
|
||||||
|
#include "stb_image.h"
|
||||||
|
|
||||||
void configureOpenGL(void);
|
void configureOpenGL(void);
|
||||||
|
|
||||||
CrystalPoint* app;
|
CrystalPoint* app;
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
#include <GL\freeglut.h>
|
||||||
|
#include "Menu.h"
|
||||||
|
|
||||||
|
Menu::Menu()
|
||||||
|
{
|
||||||
|
cursor = Cursor::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Menu::~Menu()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::draw(void)
|
||||||
|
{
|
||||||
|
//Switch view to Ortho
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
glOrtho(0, 1000, 1000, 0, -10, 10);
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
glDisable(GL_LIGHTING);
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
|
||||||
|
for (MenuElement* e : elements)
|
||||||
|
{
|
||||||
|
e->draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
cursor->draw();
|
||||||
|
|
||||||
|
glEnable(GL_LIGHTING);
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::update()
|
||||||
|
{
|
||||||
|
for (MenuElement* e : elements)
|
||||||
|
{
|
||||||
|
e->update(cursor->mousePosition.x, cursor->mousePosition.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::AddMenuElement(MenuElement * e)
|
||||||
|
{
|
||||||
|
elements.push_back(e);
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <vector>
|
||||||
|
#include "MenuElement.h"
|
||||||
|
#include "Cursor.h"
|
||||||
|
|
||||||
|
class Menu
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
std::vector<MenuElement*> elements;
|
||||||
|
Cursor* cursor;
|
||||||
|
public:
|
||||||
|
Menu();
|
||||||
|
~Menu();
|
||||||
|
|
||||||
|
void draw(void);
|
||||||
|
void update(void);
|
||||||
|
|
||||||
|
void AddMenuElement(MenuElement* e);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#include "MenuElement.h"
|
||||||
|
|
||||||
|
MenuElement::MenuElement(Vec2f position)
|
||||||
|
{
|
||||||
|
hover = false;
|
||||||
|
this->position = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MenuElement::~MenuElement()
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Vector.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class MenuElement
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
bool hover;
|
||||||
|
Vec2f position;
|
||||||
|
public:
|
||||||
|
MenuElement(Vec2f position);
|
||||||
|
~MenuElement();
|
||||||
|
|
||||||
|
virtual void draw(void) = 0;
|
||||||
|
virtual void update(int x, int y) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
#include "Model.h"
|
#include "Model.h"
|
||||||
|
|
||||||
#define STB_IMAGE_IMPLEMENTATION
|
|
||||||
#include "stb_image.h"
|
#include "stb_image.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|||||||
+7
-34
@@ -1,6 +1,7 @@
|
|||||||
#include "cmath"
|
#include "cmath"
|
||||||
#include <GL/freeglut.h>
|
#include <GL/freeglut.h>
|
||||||
|
|
||||||
|
#include "Util.h"
|
||||||
#include "stb_image.h"
|
#include "stb_image.h"
|
||||||
#include "Skybox.h"
|
#include "Skybox.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
@@ -21,12 +22,12 @@ Skybox::~Skybox()
|
|||||||
|
|
||||||
void Skybox::init()
|
void Skybox::init()
|
||||||
{
|
{
|
||||||
skybox[SKY_LEFT] = loadTexture(folder + "left.png");
|
skybox[SKY_LEFT] = Util::loadTexture(folder + "left.png");
|
||||||
skybox[SKY_BACK] = loadTexture(folder + "back.png");
|
skybox[SKY_BACK] = Util::loadTexture(folder + "back.png");
|
||||||
skybox[SKY_RIGHT] = loadTexture(folder + "right.png");
|
skybox[SKY_RIGHT] = Util::loadTexture(folder + "right.png");
|
||||||
skybox[SKY_FRONT] = loadTexture(folder + "front.png");
|
skybox[SKY_FRONT] = Util::loadTexture(folder + "front.png");
|
||||||
skybox[SKY_TOP] = loadTexture(folder + "top.png");
|
skybox[SKY_TOP] = Util::loadTexture(folder + "top.png");
|
||||||
skybox[SKY_BOTTOM] = loadTexture(folder + "bottom.png");
|
skybox[SKY_BOTTOM] = Util::loadTexture(folder + "bottom.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Skybox::draw()
|
void Skybox::draw()
|
||||||
@@ -114,31 +115,3 @@ void Skybox::draw()
|
|||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLuint Skybox::loadTexture(const std::string & fileName) //load the filename named texture
|
|
||||||
{
|
|
||||||
int width, height, bpp;
|
|
||||||
|
|
||||||
stbi_set_flip_vertically_on_load(true);
|
|
||||||
unsigned char* imgData = stbi_load(fileName.c_str(), &width, &height, &bpp, 4);
|
|
||||||
GLuint num;
|
|
||||||
glGenTextures(1, &num);
|
|
||||||
glBindTexture(GL_TEXTURE_2D, num);
|
|
||||||
|
|
||||||
glTexImage2D(GL_TEXTURE_2D,
|
|
||||||
0, //level
|
|
||||||
GL_RGBA, //internal format
|
|
||||||
width, //width
|
|
||||||
height, //height
|
|
||||||
0, //border
|
|
||||||
GL_RGBA, //data format
|
|
||||||
GL_UNSIGNED_BYTE, //data type
|
|
||||||
imgData); //data
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
|
||||||
|
|
||||||
stbi_image_free(imgData);
|
|
||||||
return num;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,5 +12,4 @@ public:
|
|||||||
|
|
||||||
void init();
|
void init();
|
||||||
void draw();
|
void draw();
|
||||||
GLuint loadTexture(const std::string &fileName);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#include "Text.h"
|
||||||
|
|
||||||
|
|
||||||
|
Text::Text(const std::string &text, Vec2f position) : MenuElement(position)
|
||||||
|
{
|
||||||
|
this->text = text;
|
||||||
|
color = Vec3f(50, 150, 150);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Text::~Text()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Text::draw()
|
||||||
|
{
|
||||||
|
glColor4f(color.x, color.y, color.z, 1.0f);
|
||||||
|
Util::glutBitmapString(text, position.x, position.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Text::update(int x, int y)
|
||||||
|
{
|
||||||
|
//Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
void Text::setColor(Vec3f color)
|
||||||
|
{
|
||||||
|
this->color = color;
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "MenuElement.h"
|
||||||
|
#include "Vector.h"
|
||||||
|
#include "Util.h"
|
||||||
|
|
||||||
|
class Text : public MenuElement
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
std::string text;
|
||||||
|
Vec3f color;
|
||||||
|
public:
|
||||||
|
Text(const std::string &text, Vec2f position);
|
||||||
|
~Text();
|
||||||
|
|
||||||
|
void draw();
|
||||||
|
void update(int x, int y);
|
||||||
|
|
||||||
|
void setColor(Vec3f color);
|
||||||
|
};
|
||||||
|
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
#include "Util.h"
|
||||||
|
#include "stb_image.h"
|
||||||
|
|
||||||
|
Util::Util()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Util::~Util()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
GLuint Util::loadTexture(const std::string &filename)
|
||||||
|
{
|
||||||
|
int width, height, bpp;
|
||||||
|
|
||||||
|
stbi_set_flip_vertically_on_load(true);
|
||||||
|
unsigned char* imgData = stbi_load(filename.c_str(), &width, &height, &bpp, 4);
|
||||||
|
GLuint num;
|
||||||
|
glGenTextures(1, &num);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, num);
|
||||||
|
|
||||||
|
glTexImage2D(GL_TEXTURE_2D,
|
||||||
|
0, //level
|
||||||
|
GL_RGBA, //internal format
|
||||||
|
width, //width
|
||||||
|
height, //height
|
||||||
|
0, //border
|
||||||
|
GL_RGBA, //data format
|
||||||
|
GL_UNSIGNED_BYTE, //data type
|
||||||
|
imgData); //data
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
||||||
|
|
||||||
|
stbi_image_free(imgData);
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Util::glutBitmapString(std::string str, int x, int y)
|
||||||
|
{
|
||||||
|
glRasterPos2f(x, y);
|
||||||
|
for (int i = 0; i < str.size(); i++)
|
||||||
|
{
|
||||||
|
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, str[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user