|
From: <iea...@us...> - 2008-04-23 02:15:04
|
Revision: 700
http://seq.svn.sourceforge.net/seq/?rev=700&view=rev
Author: ieatacid
Date: 2008-04-22 19:15:01 -0700 (Tue, 22 Apr 2008)
Log Message:
-----------
ieatacid (4/22/08)
----------------
+ Updated version to 5.12.3.1
+ Some fixes for the handling of spawns outside of your update radius
+ Made it so that spawns outside your update radius have dark gray-colored icons (you can change this in the icon editor)
Modified Paths:
--------------
showeq/trunk/ChangeLog
showeq/trunk/conf/zoneopcodes.xml
showeq/trunk/configure.in
showeq/trunk/src/everquest.h
showeq/trunk/src/interface.cpp
showeq/trunk/src/main.cpp
showeq/trunk/src/main.h
showeq/trunk/src/map.cpp
showeq/trunk/src/mapicon.cpp
showeq/trunk/src/mapicon.h
showeq/trunk/src/s_everquest.h
showeq/trunk/src/spawn.cpp
showeq/trunk/src/spawn.h
showeq/trunk/src/spawnshell.cpp
showeq/trunk/src/spawnshell.h
Modified: showeq/trunk/ChangeLog
===================================================================
--- showeq/trunk/ChangeLog 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/ChangeLog 2008-04-23 02:15:01 UTC (rev 700)
@@ -1,5 +1,11 @@
Version: $Id$ $Name$
+ieatacid (4/22/08)
+----------------
++ Updated version to 5.12.3.1
++ Some fixes for the handling of spawns outside of your update radius
++ Made it so that spawns outside your update radius have dark gray-colored icons (you can change this in the icon editor)
+
ieatacid (4/20/08)
----------------
+ Updated version to 5.12.3
Modified: showeq/trunk/conf/zoneopcodes.xml
===================================================================
--- showeq/trunk/conf/zoneopcodes.xml 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/conf/zoneopcodes.xml 2008-04-23 02:15:01 UTC (rev 700)
@@ -69,10 +69,14 @@
<comment>old NewSpawnCode</comment>
<payload dir="server" typename="spawnStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3164" name="OP_DeleteSpawn" updated="01/17/08">
+ <opcode id="5aac" name="OP_DeleteSpawn" updated="04/17/08">
<comment>old DeleteSpawnCode</comment>
- <payload dir="both" typename="deleteSpawnStruct" sizechecktype="none"/>
+ <payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
+ <opcode id="3164" name="OP_RemoveSpawn" updated="04/17/08">
+ <comment>Remove spawn from update radius</comment>
+ <payload dir="server" typename="removeSpawnStruct" sizechecktype="none"/>
+ </opcode>
<opcode id="1B85" name="OP_Death" updated="01/17/08">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
Modified: showeq/trunk/configure.in
===================================================================
--- showeq/trunk/configure.in 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/configure.in 2008-04-23 02:15:01 UTC (rev 700)
@@ -2,7 +2,7 @@
dnl $Id$ $Name$
AC_PREREQ(2.59)
-AC_INIT(showeq, 5.12.3.0)
+AC_INIT(showeq, 5.12.3.1)
AC_CONFIG_SRCDIR(src/main.cpp)
AC_CANONICAL_SYSTEM
Modified: showeq/trunk/src/everquest.h
===================================================================
--- showeq/trunk/src/everquest.h 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/everquest.h 2008-04-23 02:15:01 UTC (rev 700)
@@ -1589,21 +1589,21 @@
/*
** Delete Self
** Length: 4 Octets
-** OpCode: DeleteSpawnCode
+** OpCode: OP_DeleteSpawn
*/
-struct deleteSpawnSelfStruct
+struct deleteSpawnStruct
{
/*0000*/ uint32_t spawnId; // Spawn ID to delete
};
/*
-** Delete Spawn
+** Remove Spawn
** Length: 5 Octets
-** OpCode: DeleteSpawnCode
+** OpCode: OP_RemoveSpawn
*/
-struct deleteSpawnStruct
+struct removeSpawnStruct
{
/*0000*/ uint32_t spawnId; // Spawn ID to delete
/*0004*/ uint8_t removeSpawn; // 0 if spawn is not in your update radius
Modified: showeq/trunk/src/interface.cpp
===================================================================
--- showeq/trunk/src/interface.cpp 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/interface.cpp 2008-04-23 02:15:01 UTC (rev 700)
@@ -155,7 +155,6 @@
m_selectOnConsider = pSEQPrefs->getPrefBool("SelectOnCon", section, false);
m_selectOnTarget = pSEQPrefs->getPrefBool("SelectOnTarget", section, false);
- m_useUpdateRadius = pSEQPrefs->getPrefBool("UseUpdateRadius", section, true);
const char* player_classes[] = {"Warrior", "Cleric", "Paladin", "Ranger",
"Shadow Knight", "Druid", "Monk", "Bard",
@@ -284,7 +283,6 @@
// Create the spawn shell
m_spawnShell = new SpawnShell(*m_filterMgr, m_zoneMgr, m_player, m_guildmgr);
- m_spawnShell->setUseUpdateRadius(m_useUpdateRadius);
// Create the Category manager
m_categoryMgr = new CategoryMgr();
@@ -993,9 +991,9 @@
this, SLOT(select_opt_conColorBase(int)));
pOptMenu->insertItem("Con &Colors", conColorBaseMenu);
- m_id_opt_useUpdateRadius = pOptMenu->insertItem("&Use Update Radius (buggy if disabled)",
+ m_id_opt_useUpdateRadius = pOptMenu->insertItem("&Use EQ's Update Radius",
this, SLOT(toggle_opt_UseUpdateRadius()));
- menuBar()->setItemChecked (m_id_opt_useUpdateRadius, m_useUpdateRadius);
+ menuBar()->setItemChecked (m_id_opt_useUpdateRadius, showeq_params->useUpdateRadius);
// Network Menu
m_netMenu = new QPopupMenu;
@@ -1944,8 +1942,8 @@
"hpNpcUpdateStruct", SZC_Match,
m_spawnShell, SLOT(updateNpcHP(const uint8_t*)));
m_packet->connect2("OP_DeleteSpawn", SP_Zone, DIR_Server|DIR_Client,
- "deleteSpawnStruct", SZC_None,
- m_spawnShell, SLOT(deleteSpawn(const uint8_t*, size_t)));
+ "deleteSpawnStruct", SZC_Match,
+ m_spawnShell, SLOT(deleteSpawn(const uint8_t*)));
m_packet->connect2("OP_SpawnRename", SP_Zone, DIR_Server,
"spawnRenameStruct", SZC_Match,
m_spawnShell, SLOT(renameSpawn(const uint8_t*)));
@@ -1964,6 +1962,9 @@
m_packet->connect2("OP_Shroud", SP_Zone, DIR_Server,
"spawnShroudSelf", SZC_None,
m_spawnShell, SLOT(shroudSpawn(const uint8_t*, size_t, uint8_t)));
+ m_packet->connect2("OP_RemoveSpawn", SP_Zone, DIR_Server,
+ "removeSpawnStruct", SZC_None,
+ m_spawnShell, SLOT(removeSpawn(const uint8_t*, size_t)));
#if 0 // ZBTEMP
connect(m_packet, SIGNAL(spawnWearingUpdate(const uint8_t*, size_t, uint8_t)),
m_spawnShell, SLOT(spawnWearingUpdate(const uint8_t*)));
@@ -3507,10 +3508,9 @@
void
EQInterface::toggle_opt_UseUpdateRadius (void)
{
- m_useUpdateRadius = !(m_useUpdateRadius);
- m_spawnShell->toggleUseUpdateRadius();
- menuBar()->setItemChecked (m_id_opt_useUpdateRadius, m_useUpdateRadius);
- pSEQPrefs->setPrefBool("UseUpdateRadius", "Interface", m_useUpdateRadius);
+ showeq_params->useUpdateRadius = !(showeq_params->useUpdateRadius);
+ menuBar()->setItemChecked (m_id_opt_useUpdateRadius, showeq_params->useUpdateRadius);
+ pSEQPrefs->setPrefBool("UseUpdateRadius", "Interface", showeq_params->useUpdateRadius);
}
/* Check and uncheck Log menu options & set EQPacket logging flags */
Modified: showeq/trunk/src/main.cpp
===================================================================
--- showeq/trunk/src/main.cpp 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/main.cpp 2008-04-23 02:15:01 UTC (rev 700)
@@ -235,6 +235,7 @@
showeq_params->pvp = pSEQPrefs->getPrefBool("PvPTeamColoring", section, false);
showeq_params->deitypvp = pSEQPrefs->getPrefBool("DeityPvPTeamColoring", section, false);
showeq_params->keep_selected_visible = pSEQPrefs->getPrefBool("KeepSelected", section, true);
+ showeq_params->useUpdateRadius = pSEQPrefs->getPrefBool("UseUpdateRadius", section, true);
section = "Misc";
showeq_params->fast_machine = pSEQPrefs->getPrefBool("FastMachine", section, true);
Modified: showeq/trunk/src/main.h
===================================================================
--- showeq/trunk/src/main.h 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/main.h 2008-04-23 02:15:01 UTC (rev 700)
@@ -44,6 +44,7 @@
bool restoreZoneState;
bool restoreSpawns;
QString saveRestoreBaseFilename;
+ bool useUpdateRadius;
};
extern struct ShowEQParams *showeq_params;
Modified: showeq/trunk/src/map.cpp
===================================================================
--- showeq/trunk/src/map.cpp 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/map.cpp 2008-04-23 02:15:01 UTC (rev 700)
@@ -3591,7 +3591,15 @@
mapIcon = m_mapIcons->icon(tIconTypeSpawnPlayerCorpse);
else if (spawn->isUnknown())
mapIcon = m_mapIcons->icon(tIconTypeSpawnUnknown);
-
+
+ if (spawn->isNotUpdated())
+ {
+ if(spawn->isNPC())
+ mapIcon = m_mapIcons->icon(tIconTypeSpawnNPCNoUpdate);
+ else if (spawn->isOtherPlayer())
+ mapIcon = m_mapIcons->icon(tIconTypeSpawnPlayerNoUpdate);
+ }
+
// if the spawn was considered, note it.
if (m_highlightConsideredSpawns && spawn->considered())
mapIcon.combine(m_mapIcons->icon(tIconTypeSpawnConsidered));
Modified: showeq/trunk/src/mapicon.cpp
===================================================================
--- showeq/trunk/src/mapicon.cpp 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/mapicon.cpp 2008-04-23 02:15:01 UTC (rev 700)
@@ -83,6 +83,8 @@
"SpawnPoint",
"SpawnPointSelected",
"ZoneSafePoint",
+ "SpawnPlayerNoUpdate",
+ "SpawnNPCNoUpdate",
};
static const QString iconTypeNames[] =
@@ -121,6 +123,8 @@
"Spawn Point",
"Selected Spawn Point",
"Zone Safe Point",
+ "Spawn Player No Update",
+ "Spawn NPC No Update",
};
//----------------------------------------------------------------------
@@ -714,6 +718,14 @@
tIconStyleX, tIconSizeSmall,
true, false, false, false);
m_mapIcons[tIconTypeZoneSafePoint].setShowName(true);
+ m_mapIcons[tIconTypeSpawnPlayerNoUpdate]
+ .setImage(QBrush(gray), QPen(darkGray, 1, SolidLine, cap, join),
+ tIconStyleSquare, tIconSizeRegular,
+ true, false, false, false);
+ m_mapIcons[tIconTypeSpawnNPCNoUpdate]
+ .setImage(QBrush(gray), QPen(NoPen, 1, SolidLine, cap, join),
+ tIconStyleCircle, tIconSizeRegular,
+ true, false, false, false);
// setup icon size maps
m_mapIconSizes[tIconSizeNone] = &m_markerNSize; // none should never be drawn
Modified: showeq/trunk/src/mapicon.h
===================================================================
--- showeq/trunk/src/mapicon.h 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/mapicon.h 2008-04-23 02:15:01 UTC (rev 700)
@@ -107,7 +107,9 @@
tIconTypeSpawnPoint,
tIconTypeSpawnPointSelected,
tIconTypeZoneSafePoint,
- tIconTypeMax = tIconTypeZoneSafePoint,
+ tIconTypeSpawnPlayerNoUpdate,
+ tIconTypeSpawnNPCNoUpdate,
+ tIconTypeMax = tIconTypeSpawnNPCNoUpdate,
};
//----------------------------------------------------------------------
Modified: showeq/trunk/src/s_everquest.h
===================================================================
--- showeq/trunk/src/s_everquest.h 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/s_everquest.h 2008-04-23 02:15:01 UTC (rev 700)
@@ -67,8 +67,8 @@
AddStruct(groupFollowStruct);
AddStruct(groupAltFollowStruct);
AddStruct(groupDisbandStruct);
-AddStruct(deleteSpawnSelfStruct);
AddStruct(deleteSpawnStruct);
+AddStruct(removeSpawnStruct);
AddStruct(remDropStruct);
AddStruct(considerStruct);
AddStruct(castOnStruct);
Modified: showeq/trunk/src/spawn.cpp
===================================================================
--- showeq/trunk/src/spawn.cpp 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/spawn.cpp 2008-04-23 02:15:01 UTC (rev 700)
@@ -449,6 +449,8 @@
// just clear the considred flag since data would be outdated
setConsidered(false);
+
+ setNotUpdated(false);
// finally, note when this update occurred.
updateLast();
Modified: showeq/trunk/src/spawn.h
===================================================================
--- showeq/trunk/src/spawn.h 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/spawn.h 2008-04-23 02:15:01 UTC (rev 700)
@@ -245,6 +245,7 @@
bool approximatePosition(bool animating,
const QTime& curTime,
EQPoint& newPos) const;
+ bool isNotUpdated() const { return m_notUpdated; }
// spawn related methods that sub-classes may override
virtual QString lastName() const;
@@ -325,9 +326,9 @@
void setID(uint16_t id) { m_ID = id; }
void setLastName(const char * lastName)
{ m_lastName = QString::fromUtf8(lastName); }
-
void setLastName(const QString& lastName)
{ m_lastName = lastName; }
+ void setNotUpdated(bool notUpdated) { m_notUpdated = notUpdated; }
protected:
@@ -364,6 +365,7 @@
uint8_t m_animation;
uint8_t m_gm;
bool m_considered;
+ bool m_notUpdated;
};
Modified: showeq/trunk/src/spawnshell.cpp
===================================================================
--- showeq/trunk/src/spawnshell.cpp 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/spawnshell.cpp 2008-04-23 02:15:01 UTC (rev 700)
@@ -96,8 +96,7 @@
m_spawns(701),
m_drops(211),
m_doors(307),
- m_players(2),
- m_useUpdateRadius(0)
+ m_players(2)
{
m_cntDeadSpawnIDs = 0;
m_posDeadSpawnIDs = 0;
@@ -483,10 +482,10 @@
void SpawnShell::zoneEntry(const uint8_t* data, size_t len)
{
- const spawnStruct* spawn = (const spawnStruct*)data;
+ const spawnStruct* spawn = (const spawnStruct*)data;
#ifdef SPAWNSHELL_DIAG
- seqDebug("SpawnShell::zoneEntry(spawnStruct *(name='%s'))", spawn->name);
+ seqDebug("SpawnShell::zoneEntry(spawnStruct *(name='%s'))", spawn->name);
#endif
// Zone Entry. This is a semi-filled in spawnStruct that we
// see for ourself when entering a zone. We also get sent this
@@ -494,33 +493,42 @@
// also get sent this sometimes.
/* Now all PCs are 0, including self
- if (spawn->NPC==0)
- {
+ if (spawn->NPC==0)
+ {
// Align the player instance with these values
- m_player->update(spawn);
+ m_player->update(spawn);
- emit changeItem(m_player, tSpawnChangedALL);
- }*/
-
- if(len==sizeof(spawnStruct) || len==sizeof(spawnCampfire))
+ emit changeItem(m_player, tSpawnChangedALL);
+}*/
+ Item *item;
+ if(len==sizeof(spawnStruct) || len==sizeof(spawnCampfire))
+ {
+ if(!strcmp(spawn->name,m_player->name()))
{
- if(!strcmp(spawn->name,m_player->name()))
- {
- // Multiple zoneEntry packets are received for your spawn after you zone.
- m_player->update(spawn);
- emit changeItem(m_player, tSpawnChangedALL);
- }
- else
- {
- // Auras, all other PCs and NPCs
- newSpawn(data);
- }
+ // Multiple zoneEntry packets are received for your spawn after you zone.
+ m_player->update(spawn);
+ emit changeItem(m_player, tSpawnChangedALL);
}
else
{
- seqWarn("OP_ZoneEntry (datalen: %d) doesn't match: sizeof(spawnStruct):%d or sizeof(spawnCampfire):%d",
- len,sizeof(spawnStruct),sizeof(spawnCampfire));
+ if((item=m_spawns.find(spawn->spawnId)))
+ {
+ // Update existing spawn
+ Spawn *s=(Spawn*)item;
+ s->update(spawn);
+ }
+ else
+ {
+ // Create a new spawn
+ newSpawn(data);
+ }
}
+ }
+ else
+ {
+ seqWarn("OP_ZoneEntry (datalen: %d) doesn't match: sizeof(spawnStruct):%d or sizeof(spawnCampfire):%d",
+ len,sizeof(spawnStruct),sizeof(spawnCampfire));
+ }
}
void SpawnShell::newSpawn(const uint8_t* data)
@@ -1120,41 +1128,58 @@
} // else not yourself
} // end consMessage()
-void SpawnShell::deleteSpawn(const uint8_t* data, size_t len)
+void SpawnShell::removeSpawn(const uint8_t* data, size_t len)
{
- const deleteSpawnStruct* delSpawn = (const deleteSpawnStruct*)data;
+ const removeSpawnStruct* rmSpawn = (const removeSpawnStruct*)data;
#ifdef SPAWNSHELL_DIAG
- seqDebug("SpawnShell::deleteSpawn(id=%d)", delSpawn->spawnId);
+ seqDebug("SpawnShell::removeSpawn(id=%d)", rmSpawn->spawnId);
#endif
- if(len==sizeof(deleteSpawnStruct) || len==sizeof(deleteSpawnSelfStruct))
- {
- if(len==sizeof(deleteSpawnStruct))
- {
- if(delSpawn->removeSpawn)
- {
- if (m_posDeadSpawnIDs < (MAX_DEAD_SPAWNIDS - 1))
- m_posDeadSpawnIDs++;
- else
- m_posDeadSpawnIDs = 0;
+ Item *item;
+ if(len==sizeof(removeSpawnStruct))
+ {
+ if(!rmSpawn->removeSpawn)
+ {
+ // Remove a spawn from outside the update radius
+ if(showeq_params->useUpdateRadius)
+ {
+ // Remove it
+ deleteItem(tSpawn, rmSpawn->spawnId);
+ }
+ else
+ {
+ // Set flag to change its icon
+ if((item=m_spawns.find(rmSpawn->spawnId)))
+ {
+ Spawn *s=(Spawn*)item;
+ s->setNotUpdated(true);
+ }
+ }
+ }
+ }
+ else if((len+1)!=sizeof(removeSpawnStruct))
+ {
+ seqWarn("OP_RemoveSpawn (dataLen: %d) doesn't match: sizeof(removeSpawnStruct): %d",
+ len,sizeof(removeSpawnStruct));
+ }
+}
- if (m_cntDeadSpawnIDs < MAX_DEAD_SPAWNIDS)
- m_cntDeadSpawnIDs++;
+void SpawnShell::deleteSpawn(const uint8_t* data)
+{
+ const deleteSpawnStruct* delspawn = (const deleteSpawnStruct*)data;
+#ifdef SPAWNSHELL_DIAG
+ seqDebug("SpawnShell::deleteSpawn(id=%d)", delspawn->spawnId);
+#endif
+ if (m_posDeadSpawnIDs < (MAX_DEAD_SPAWNIDS - 1))
+ m_posDeadSpawnIDs++;
+ else
+ m_posDeadSpawnIDs = 0;
- m_deadSpawnID[m_posDeadSpawnIDs] = delSpawn->spawnId;
+ if (m_cntDeadSpawnIDs < MAX_DEAD_SPAWNIDS)
+ m_cntDeadSpawnIDs++;
- deleteItem(tSpawn, delSpawn->spawnId);
- }
- else if(!delSpawn->removeSpawn && m_useUpdateRadius)
- {
- deleteItem(tSpawn, delSpawn->spawnId);
- }
- }
- }
- else
- {
- seqWarn("OP_DeleteSpawn (datalen: %d) doesn't match: sizeof(deleteSpawnStruct):%d or sizeof(deleteSpawnSelfStruct):%d",
- len,sizeof(deleteSpawnStruct),sizeof(deleteSpawnSelfStruct));
- }
+ m_deadSpawnID[m_posDeadSpawnIDs] = delspawn->spawnId;
+
+ deleteItem(tSpawn, delspawn->spawnId);
}
void SpawnShell::killSpawn(const uint8_t* data)
Modified: showeq/trunk/src/spawnshell.h
===================================================================
--- showeq/trunk/src/spawnshell.h 2008-04-23 00:52:05 UTC (rev 699)
+++ showeq/trunk/src/spawnshell.h 2008-04-23 02:15:01 UTC (rev 700)
@@ -84,8 +84,6 @@
const ItemMap& spawns(void) const;
const ItemMap& drops(void) const;
const ItemMap& doors(void) const;
- void toggleUseUpdateRadius(void);
- void setUseUpdateRadius(bool useUpdateRadius);
signals:
void addItem(const Item* item);
void delItem(const Item* item);
@@ -124,7 +122,8 @@
void updateNpcHP(const uint8_t* hpupdate);
void spawnWearingUpdate(const uint8_t* wearing);
void consMessage(const uint8_t* con, size_t, uint8_t);
- void deleteSpawn(const uint8_t* delspawn, size_t len);
+ void removeSpawn(const uint8_t* rmSpawn, size_t len);
+ void deleteSpawn(const uint8_t* delSpawn);
void killSpawn(const uint8_t* deadspawn);
void respawnFromHover(const uint8_t* respawn);
void corpseLoc(const uint8_t* corpseLoc);
@@ -163,9 +162,6 @@
// timer for saving spawns
QTimer* m_timer;
-
- // flag for using the update radius
- bool m_useUpdateRadius;
};
inline
@@ -222,18 +218,6 @@
return m_doors;
}
-inline
-void SpawnShell::toggleUseUpdateRadius(void)
-{
- m_useUpdateRadius=!m_useUpdateRadius;
-}
-
-inline
-void SpawnShell::setUseUpdateRadius(bool useUpdateRadius)
-{
- m_useUpdateRadius=useUpdateRadius;
-}
-
//--------------------------------------------------
#endif // SPAWNSHELL_H
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|