From bb9810d704a2f81da41e99cd9a1b03593dbe3a1c Mon Sep 17 00:00:00 2001
From: Eugenio Favalli <elvenprogrammer@gmail.com>
Date: Sun, 10 Apr 2005 20:59:34 +0000
Subject: Adding player names and fixing emoticon position

---
 src/being.cpp  | 13 +++++++++++++
 src/being.h    | 15 +++++++++++----
 src/engine.cpp |  8 ++++++--
 src/game.cpp   | 10 ++++++++--
 4 files changed, 38 insertions(+), 8 deletions(-)

(limited to 'src')

diff --git a/src/being.cpp b/src/being.cpp
index ed2a62f5..51728f80 100644
--- a/src/being.cpp
+++ b/src/being.cpp
@@ -24,6 +24,7 @@
 #include "being.h"
 #include "game.h"
 #include "net/protocol.h"
+#include "net/network.h"
 
 Being *player_node = NULL;
 
@@ -36,6 +37,13 @@ PATH_NODE::PATH_NODE(unsigned short x, unsigned short y):
 
 void add_node(Being *being) {
     beings.push_back(being);
+    // If the being is a player, request the name
+    //if (being-> job < 10) {
+                        WFIFOW(0) = net_w_value(0x0094);
+                        WFIFOL(2) = net_l_value(RFIFOL(2));
+                        WFIFOSET(6);
+    //                }
+
 }
 
 void remove_node(unsigned int id) {
@@ -166,6 +174,11 @@ void Being::setDamage(const std::string &text, int time)
     damage_y = 0;
 }
 
+void Being::setName(char *text)
+{
+    strcpy(name, text);
+}
+
 void Being::nextStep()
 {
     if (!path.empty())
diff --git a/src/being.h b/src/being.h
index 10d1a47c..16cedb3b 100644
--- a/src/being.h
+++ b/src/being.h
@@ -42,10 +42,9 @@ class Being {
         std::list<PATH_NODE> path;
         std::string speech;
         unsigned char speech_time;
-
-	std::string damage;
-	unsigned char damage_time;
-	float damage_y;			//Y coord of damage text
+        std::string damage;
+        unsigned char damage_time;
+        float damage_y;  // y coord of damage text
 
     public:
         unsigned int id;
@@ -64,6 +63,7 @@ class Being {
         unsigned int text_x, text_y; // temp solution to fix speech position
         unsigned short hair_style, hair_color;
         unsigned short weapon;
+        char name[24];
 
         /**
          * Constructor.
@@ -102,6 +102,13 @@ class Being {
          * @param time The amount of time the text should stay in milliseconds.
          */
         void setDamage(const std::string &text, int time);
+        
+        /**
+         * Sets the name for the being
+         *
+         * @param text The name that should appear.
+         */
+        void setName(char *name);
 
         /**
          * Sets the hair color for this being.
diff --git a/src/engine.cpp b/src/engine.cpp
index 047fa332..563247df 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -386,13 +386,17 @@ void Engine::draw()
 
             if (being->emotion != 0) {
                 emotionset->spriteset[being->emotion - 1]->draw(screen,
-                        sx * 32 - 5 + get_x_offset(being) - offset_x,
-                        sy * 32 - 45 + get_y_offset(being) - offset_y);
+                        sx * 32 + 5 + get_x_offset(being) - offset_x,
+                        sy * 32 - 65 + get_y_offset(being) - offset_y);
                 being->emotion_time--;
                 if (being->emotion_time == 0) {
                     being->emotion = 0;
                 }
             }
+            
+            graphics->drawText(being->name,
+                being->text_x + 15, being->text_y + 30,
+                gcn::Graphics::CENTER);
         }
         else if (being->job == 45) { // Draw a warp
         } else { // Draw a monster
diff --git a/src/game.cpp b/src/game.cpp
index 2b63c023..3def09f5 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -575,11 +575,11 @@ void do_parse() {
             }
             fclose(file);
             */
-#ifdef __DEBUG
+//#ifdef __DEBUG
             FILE *file = fopen("./docs/packet.list", "a");
             fprintf(file, "%x\n", RFIFOW(0));
             fclose(file);
-#endif
+//#endif
             // Parse packet based on their id
             switch (id) {
                 case SMSG_LOGIN_SUCCESS:
@@ -1488,6 +1488,12 @@ void do_parse() {
                             break;
                     }
                     break;
+                // Get being name
+                case 0x0095:
+                    being = find_node(RFIFOL(2));
+                    if (being)
+                        strcpy(being->name, RFIFOP(6));
+                    break;
                     // Manage non implemented packets
                 default:
                     logger.log("Unhandled packet: %x", id);
-- 
cgit v1.2.3-70-g09d2