diff options
author | Ira Rice <irarice@gmail.com> | 2008-10-31 04:05:51 +0000 |
---|---|---|
committer | Ira Rice <irarice@gmail.com> | 2008-10-31 04:05:51 +0000 |
commit | c22fc71adacaf6222f7e6fb70f83758298f25904 (patch) | |
tree | 55a19ec517139aee1c8c3b966058b5958e62509d /src | |
parent | 4d96a14a3922a21be3f93773c26a42a82c49b589 (diff) | |
download | mana-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.cpp | 24 | ||||
-rw-r--r-- | src/being.h | 5 | ||||
-rw-r--r-- | src/gui/gui.cpp | 4 | ||||
-rw-r--r-- | src/net/beinghandler.cpp | 5 |
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) { |