Jelajahi Sumber

crystal displayed on interface, with fancy gradient and the most beautifull colors for the crystal :)

Remco 9 tahun lalu
induk
melakukan
881b58138c
5 mengubah file dengan 26 tambahan dan 4 penghapusan
  1. 17 0
      Interface.cpp
  2. 1 0
      Player.cpp
  3. 1 0
      Player.h
  4. 2 1
      World.cpp
  5. 5 3
      worlds/small.json

+ 17 - 0
Interface.cpp

@@ -77,6 +77,23 @@ void Interface::draw()
 	glColor4f(1.0f, 1.0f, 0.1f, 1.0);
 	glutBitmapString("Level: " + std::to_string(player->level), 490, 900);
 
+	
+
+	int cw, ch, offset;
+	cw = 20;
+	ch = 50;
+	offset = 5;
+	for (int i = 0; i < player->crystals; i++)
+	{
+		glBegin(GL_QUADS);
+		glColor4f(0, 1.0f, 1.0f, 1.0f);
+		glVertex2f(975 - cw / 2, offset*i + ch*i);
+		glVertex2f(975 - cw    , ch / 2 + offset*i + ch*i);
+		glColor4f(0, 0.8f, 0.8f, 1.0f);
+		glVertex2f(975 - cw / 2, ch + offset*i + ch*i);
+		glVertex2f(975         , ch / 2 + offset*i + ch*i);
+		glEnd();
+	}
 }
 
 void Interface::update(float deltaTime)

+ 1 - 0
Player.cpp

@@ -11,6 +11,7 @@ Player::Player()
 	health = 50;
 	xp = 75;
 	level = 10;
+	crystals = 0;
 }
 
 Player* Player::getInstance()

+ 1 - 0
Player.h

@@ -26,6 +26,7 @@ public:
 	float health;
 	float xp;
 	int level;
+	int crystals;
 
 	float speed;
 };

+ 2 - 1
World.cpp

@@ -220,9 +220,10 @@ void World::update(float elapsedTime)
 	}
 
 	for(auto &crystal : crystals)
-		if (crystal->canCollide && crystal->inObject(player->position))
+		if (crystal->canCollide && crystal->inObject(player->position) && crystal->filled)
 		{
 			crystal->filled = false;
+			player->crystals++;
 			break;
 		}
 }

+ 5 - 3
worlds/small.json

@@ -17,9 +17,11 @@
   "crystals": [
     {
       "file": "models/sphere/sphere.obj",
-      "pos": [ 33, 2, 31 ],
-      "collide": "true"
+      "pos": [ 33, 2, 31 ]
+    },
+    {
+      "file": "models/sphere/sphere.obj",
+      "pos": [ 45, 2, 31 ]      
     }
   ]
-
 }