summaryrefslogtreecommitdiff
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
parent4d96a14a3922a21be3f93773c26a42a82c49b589 (diff)
downloadmana-client-c22fc71adacaf6222f7e6fb70f83758298f25904.tar.gz
mana-client-c22fc71adacaf6222f7e6fb70f83758298f25904.tar.bz2
mana-client-c22fc71adacaf6222f7e6fb70f83758298f25904.tar.xz
mana-client-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.
-rw-r--r--data/graphics/gui/hits_blue.pngbin589 -> 884 bytes
-rw-r--r--data/graphics/gui/hits_red.pngbin561 -> 813 bytes
-rw-r--r--data/graphics/gui/hits_yellow.pngbin894 -> 907 bytes
-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
7 files changed, 31 insertions, 7 deletions
diff --git a/data/graphics/gui/hits_blue.png b/data/graphics/gui/hits_blue.png
index 59458485..cfb04ab8 100644
--- a/data/graphics/gui/hits_blue.png
+++ b/data/graphics/gui/hits_blue.png
Binary files differ
diff --git a/data/graphics/gui/hits_red.png b/data/graphics/gui/hits_red.png
index da765dc4..150f1c1e 100644
--- a/data/graphics/gui/hits_red.png
+++ b/data/graphics/gui/hits_red.png
Binary files differ
diff --git a/data/graphics/gui/hits_yellow.png b/data/graphics/gui/hits_yellow.png
index d77b7c05..6975dfd5 100644
--- a/data/graphics/gui/hits_yellow.png
+++ b/data/graphics/gui/hits_yellow.png
Binary files differ
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) {