Planeshift
entitylabels.h
Go to the documentation of this file.
1 /*
2  * entitylabels.h - Author: Ondrej Hurt
3  *
4  * Copyright (C) 2003 Atomic Blue (info@planeshift.it, http://www.atomicblue.org)
5  *
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation (version 2 of the License)
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17  *
18  */
19 
20 
21 
22 #ifndef ENTITYLABEL_HEADER
23 #define ENTITYLABEL_HEADER
24 
25 // CS INCLUDES
26 #include <cstypes.h>
27 #include <csutil/ref.h>
28 #include <imesh/sprite2d.h>
29 #include <ivideo/fontserv.h>
30 #include <csutil/leakguard.h>
31 
32 // PS INCLUDES
33 #include "pscelclient.h"
34 #include "util/genericevent.h"
35 
36 struct iPluginManager;
37 struct iFont;
38 struct iEventQueue;
39 struct iEvent;
40 
43  {
48  };
51  {
63  };
64 
70 {
71 public:
73  virtual ~psEntityLabels();
74 
78  virtual void RemoveObject( GEMClientObject* object );
79 
80  // from iEventHandle:
81 
85  bool HandleEvent (iEvent &Event);
86 
87 
88  bool Initialize(iObjectRegistry * object_reg, psCelClient * celClient);
89 
94 
98  void GetConfiguration(psEntityLabelVisib & visCreatures, psEntityLabelVisib & visItems, bool & showGuild, int* colors);
99 
103  bool LoadFromFile();
104 
108  bool SaveToFile();
109 
113  void OnObjectArrived( GEMClientObject* object );
114 
118  void RepaintAllLabels();
119  void RepaintObjectLabel(GEMClientObject* object);
120 
122  void LoadAllEntityLabels();
123 
124 protected:
125 
127  void UpdateVisibility();
128 
130  void UpdateMouseover();
131 
133  void UpdateTarget();
134 
138  typedef struct
139  {
140  csString text;
141  int x, y;
142  int width, height;
143  int r,g,b; //addes by jacob to complete task
144  } labelRow;
145 
149  void SetObjectText( GEMClientObject* object);
150 
154  void CreateLabelOfObject( GEMClientObject* object );
155 
161  void ShowLabelOfObject( GEMClientObject* object, bool show );
162 
164  void HideAllLabels();
165 
167  void RefreshGuildLabels();
168 
172  void DeleteLabelOfObject( GEMClientObject* object );
173 
174 
181  bool showGuild; // should the label contain name of character's guild ?
182 
185 
190 
195 
199  csRef<iEventQueue> eventQueue;
200  iVFS* vfs;
202 
204  DeclareGenericEventHandler(EventHandler,psEntityLabels,"planeshift.entityevent");
205  csRef<EventHandler> eventhandler;
206 };
207 
208 #endif
void UpdateTarget()
Updates label visibility for targeted entities.
csRef< iEventQueue > eventQueue
References to some system-wide objects that we use.
Definition: entitylabels.h:199
no labels are visible
Definition: entitylabels.h:47
class psEntityLabels serves for creation and management of 2D sprites hanging above cel-entities that...
Definition: entitylabels.h:69
bool HandleEvent(iEvent &Event)
This is called before the scene is painted on screen:
psEntityLabelVisib visCreatures
Configuration options.
Definition: entitylabels.h:179
void UpdateVisibility()
Updates label visibility based on range.
grouped-with-you chars
Definition: entitylabels.h:60
NPCs.
Definition: entitylabels.h:54
DeclareGenericEventHandler(EventHandler, psEntityLabels,"planeshift.entityevent")
Declare our event handler.
labels of all entities are visible
Definition: entitylabels.h:44
GM 1.
Definition: entitylabels.h:56
psEntityLabelVisib visItems
Definition: entitylabels.h:180
void UpdateMouseover()
Updates label visibility for entities under the cursor.
only label of the targeted entity is visible
Definition: entitylabels.h:46
Client version of the Cel Manager Requests world loading.
Definition: pscelclient.h:108
virtual ~psEntityLabels()
dead bodies
Definition: entitylabels.h:55
testers
Definition: entitylabels.h:58
bool MatchVisibility(GEMOBJECT_TYPE type, psEntityLabelVisib vis)
void OnObjectArrived(GEMClientObject *object)
This must be called when client receives cel entity from server:
GEMOBJECT_TYPE
Definition: pscelclient.h:361
void RepaintAllLabels()
Used to repaint labels.
bool LoadFromFile()
Reads options for label behaviour from file:
void GetConfiguration(psEntityLabelVisib &visCreatures, psEntityLabelVisib &visItems, bool &showGuild, int *colors)
Gets options for label behaviour:
csRef< EventHandler > eventhandler
Definition: entitylabels.h:205
default or unmovable entities
Definition: entitylabels.h:52
GEMClientObject * underTarget
Entity which was targeted (or NULL)
Definition: entitylabels.h:194
GEMClientObject * underMouse
Entity that is under mouse cursor (or NULL)
Definition: entitylabels.h:189
developers
Definition: entitylabels.h:59
bool SaveToFile()
Saves options for label behaviour to file:
void Configure(psEntityLabelVisib visCreatures, psEntityLabelVisib visItems, bool showGuild, int *colors)
Sets options for label behaviour:
void CreateLabelOfObject(GEMClientObject *object)
Creates label and its texture.
int entityColors[ENTITY_TYPES_AMOUNT]
Entity labels colors.
Definition: entitylabels.h:184
An object that the client knows about.
Definition: pscelclient.h:373
amount of entity types
Definition: entitylabels.h:62
bool Initialize(iObjectRegistry *object_reg, psCelClient *celClient)
psCelClient * celClient
Definition: entitylabels.h:201
only label of the entity under mouse is visible
Definition: entitylabels.h:45
This describes one row of text displayed on entity label.
Definition: entitylabels.h:138
void ShowLabelOfObject(GEMClientObject *object, bool show)
Shows or hides label of given entity (only sets visibility, doesn&#39;t create/destruct it) This is used ...
void RefreshGuildLabels()
Refreshes just the actors with guild names (used on showGuild change)
void HideAllLabels()
Hides all labels.
void SetObjectText(GEMClientObject *object)
Determines what will be written in label.
GM 2-5.
Definition: entitylabels.h:57
void LoadAllEntityLabels()
(re)loads all entity labels
grouped-with-you-and-the-same-guild chars
Definition: entitylabels.h:61
psEntityLabelType
psRntityLabelType defines types of entities that have own color
Definition: entitylabels.h:50
virtual void RemoveObject(GEMClientObject *object)
This is called before some entity is deleted.
void DeleteLabelOfObject(GEMClientObject *object)
Deletes label from entity.
players
Definition: entitylabels.h:53
psEntityLabelVisib
psEntityLabelVisib defines possible visibility modes of labels
Definition: entitylabels.h:42
void RepaintObjectLabel(GEMClientObject *object)