summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIra Rice <irarice@gmail.com>2008-10-31 04:05:51 +0000
committerIra Rice <irarice@gmail.com>2008-10-31 04:05:51 +0000
commitc22fc71adacaf6222f7e6fb70f83758298f25904 (patch)
tree55a19ec517139aee1c8c3b966058b5958e62509d /src
parent4d96a14a3922a21be3f93773c26a42a82c49b589 (diff)
downloadmana-c22fc71adacaf6222f7e6fb70f83758298f25904.tar.gz
mana-c22fc71adacaf6222f7e6fb70f83758298f25904.tar.bz2
mana-c22fc71adacaf6222f7e6fb70f83758298f25904.tar.xz
mana-c22fc71adacaf6222f7e6fb70f83758298f25904.zip
Added critical notifications to the client. While I had originally
planned to do this (I still did it my way), TMW beat me to implementing, so I'll credit them with their commit reminding me to do it. This is not done the exact same way, as I prefer to see an actual "crit!" show above the being, instead of an ambiguous particle.
Diffstat (limited to 'src')
-rw-r--r--src/being.cpp24
-rw-r--r--src/being.h5
-rw-r--r--src/gui/gui.cpp4
-rw-r--r--src/net/beinghandler.cpp5
4 files changed, 31 insertions, 7 deletions
diff --git a/src/being.cpp b/src/being.cpp
index 19c2224d..3214b491 100644
--- a/src/being.cpp
+++ b/src/being.cpp
@@ -189,10 +189,6 @@ void Being::takeDamage(int amount)
}
else
{
- // Hit particle effect
- controlParticle(particleEngine->addEffect(
- "graphics/particles/hit.particle.xml", 0, 0));
-
if (getType() == MONSTER)
{
font = hitBlueFont;
@@ -208,6 +204,26 @@ void Being::takeDamage(int amount)
mPx + 16, mPy + 16);
}
+void Being::showCrit()
+{
+ gcn::Font *font;
+ std::string text = "crit!";
+
+ // Selecting the right color
+ if (getType() == MONSTER)
+ {
+ font = hitBlueFont;
+ }
+ else
+ {
+ font = hitRedFont;
+ }
+
+ // Show crit notice
+ particleEngine->addTextRiseFadeOutEffect(text, font,
+ mPx + 16, mPy - 16);
+}
+
void Being::handleAttack(Being *victim, int damage)
{
setAction(Being::ATTACK);
diff --git a/src/being.h b/src/being.h
index b0c5b49e..62a1c937 100644
--- a/src/being.h
+++ b/src/being.h
@@ -166,6 +166,11 @@ class Being : public Sprite
virtual void takeDamage(int amount);
/**
+ * Puts a crit notification bubble above this being.
+ */
+ virtual void showCrit();
+
+ /**
* Handles an attack of another being by this being.
*
* @param victim The attacked being.
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index edc25152..6d70d532 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -180,9 +180,9 @@ Gui::Gui(Graphics *graphics):
// Load hits' colourful fonts
try {
hitRedFont = new gcn::ImageFont("graphics/gui/hits_red.png",
- "0123456789");
+ "0123456789crit! ");
hitBlueFont = new gcn::ImageFont("graphics/gui/hits_blue.png",
- "0123456789");
+ "0123456789crit! ");
hitYellowFont = new gcn::ImageFont("graphics/gui/hits_yellow.png",
"0123456789misxp ");
}
diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp
index baca0cfc..85e18e5a 100644
--- a/src/net/beinghandler.cpp
+++ b/src/net/beinghandler.cpp
@@ -237,9 +237,12 @@ void BeingHandler::handleMessage(MessageIn *msg)
switch (type)
{
- case 0x00: // Damage
case 0x0a: // Critical Damage
if (dstBeing) {
+ dstBeing->showCrit();
+ }
+ case 0x00: // Damage
+ if (dstBeing) {
dstBeing->takeDamage(param1);
}
if (srcBeing) {