From 79b41ace2ace1cbc3400b217e498c9097fc6a353 Mon Sep 17 00:00:00 2001 From: auria Date: Mon, 10 Jan 2011 20:08:41 +0000 Subject: [PATCH] Say hello to the new nitro bar, thanks to Dakal (it only goes up to 16, while old one went up to 20, but I don't think it matters, I never reached 20 in real gameplay anyway) git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@7351 178a84e3-b1eb-0310-8ba1-8eac791a3b58 --- data/gui/License.txt | 2 + data/gui/gauge_empty.png | Bin 0 -> 66074 bytes data/gui/gauge_full.png | Bin 0 -> 66301 bytes data/gui/gauge_goal.png | Bin 0 -> 12436 bytes src/karts/controller/player_controller.cpp | 4 +- src/karts/kart.cpp | 4 +- src/karts/moveable.hpp | 5 +- src/states_screens/race_gui.cpp | 105 ++++++++++----------- src/states_screens/race_gui.hpp | 4 + 9 files changed, 60 insertions(+), 64 deletions(-) create mode 100644 data/gui/gauge_empty.png create mode 100644 data/gui/gauge_full.png create mode 100644 data/gui/gauge_goal.png diff --git a/data/gui/License.txt b/data/gui/License.txt index 2048f6068..bd50cfcad 100644 --- a/data/gui/License.txt +++ b/data/gui/License.txt @@ -16,6 +16,8 @@ title_font, by Marianne Gagnon (Auria), released under CC-BY-SA 3+ screen*.png, by Marianne Gagnon (Auria), including elements from the public domain Tango icon set +Gauge by Dakal, release under CC-BY-SA 3 + ==== Glass Skin by Auria, under CC-BY-SA 3+ diff --git a/data/gui/gauge_empty.png b/data/gui/gauge_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..b50d95c01b44d49df9432ee8ae369ab87eb5c365 GIT binary patch literal 66074 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

>jP}pm`aK_*U;4{yFTZgA=DXF`3hNu+G?jh# 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 literal 0 HcmV?d00001 diff --git a/data/gui/gauge_goal.png b/data/gui/gauge_goal.png new file mode 100644 index 0000000000000000000000000000000000000000..2715e392f25db098664cadf75116e316766c9c25 GIT binary patch literal 12436 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 == MAX_ITEMS_COLLECTED) + if(old_energy < MAX_NITRO && + m_kart->getEnergy() == MAX_NITRO) { m_full_sound->play(); } diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index ade113b2a..9f05ac2af 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -604,8 +604,8 @@ void Kart::collectedItem(Item *item, int add_info) race_state->itemCollected(getWorldKartId(), item->getItemId()); } - if ( m_collected_energy > MAX_ITEMS_COLLECTED ) - m_collected_energy = MAX_ITEMS_COLLECTED; + if ( m_collected_energy > MAX_NITRO ) + m_collected_energy = MAX_NITRO; m_controller->collectedItem(*item, add_info, old_energy); } // collectedItem diff --git a/src/karts/moveable.hpp b/src/karts/moveable.hpp index 6907140fd..a687f984c 100644 --- a/src/karts/moveable.hpp +++ b/src/karts/moveable.hpp @@ -32,10 +32,7 @@ using namespace irr; class Material; -/* Limits of Kart performance */ -#define CRASH_PITCH -45.0f - -#define MAX_ITEMS_COLLECTED 20 +const int MAX_NITRO = 16; /** * \ingroup karts diff --git a/src/states_screens/race_gui.cpp b/src/states_screens/race_gui.cpp index a42503552..3b08e05cd 100644 --- a/src/states_screens/race_gui.cpp +++ b/src/states_screens/race_gui.cpp @@ -85,6 +85,10 @@ RaceGUI::RaceGUI() m_plunger_face = material_manager->getMaterial("plungerface.png"); m_music_icon = material_manager->getMaterial("notes.png"); createMarkerTexture(); + + m_gauge_full = irr_driver->getTexture( file_manager->getGUIDir() + "gauge_full.png" ); + m_gauge_empty = irr_driver->getTexture( file_manager->getGUIDir() + "gauge_empty.png" ); + m_gauge_goal = irr_driver->getTexture( file_manager->getGUIDir() + "gauge_goal.png" ); // Translate strings only one in constructor to avoid calling // gettext in each frame. @@ -736,64 +740,52 @@ void RaceGUI::drawEnergyMeter(int x, int y, const Kart *kart, const core::recti &viewport, const core::vector2df &scaling) { - float state = (float)(kart->getEnergy()) / MAX_ITEMS_COLLECTED; - // Don't scale width, it looks too small otherwise - int w = 16; + float state = (float)(kart->getEnergy()) / MAX_NITRO; + if (state < 0.0f) state = 0.0f; + else if (state > 1.0f) state = 1.0f; + int h = (int)(viewport.getHeight()/3); - - // Move energy bar slighty 'into' the speedometer. Leave 10 points - // between right edge of viewport and energy meter, and don't scale. - x -= w+10; - y -= (int)(30*scaling.Y); + int w = h/4; // gauge image is so 1:4 - float coin_target = (float)race_manager->getCoinTarget(); - int th = (int)(h*(coin_target/MAX_ITEMS_COLLECTED)); + x -= w; - video::SColor black_border(255, 0, 0, 0); - video::SColor white_border(255, 255, 255, 255); - video::IVideoDriver *video = irr_driver->getVideoDriver(); -#define LINE(x0,y0,x1,y1, color) video->draw2DLine(core::position2di(x0,y0), \ - core::position2di(x1,y1), color) - - // Left side: - LINE(x-1, y+1, x-1, y-h-1, black_border); - LINE(x, y, x, y-h-2, white_border); - - // Right side: - LINE(x+w, y+1, x+w, y-h-1, black_border); - LINE(x+w+1, y, x+w+1, y-h-2, white_border); - - // Bottom - LINE(x, y+1, x+w, y+1, black_border); - LINE(x+1, y, x+w+1, y, white_border); - - // Top - LINE(x, y-h, x+w, y-h, black_border); - LINE(x, y-h-1, x+w, y-h-1, white_border); - - const int GRADS = (int)(MAX_ITEMS_COLLECTED/5); // each graduation equals 5 items - int gh = (int)(h/GRADS); //graduation height - - // 'Meter marks; - int gh_incr = gh; - for (int i=0; igetVideoDriver()->draw2DImage(m_gauge_empty, core::rect(x, y, x+w, y+h) /* dest rect */, + core::rect(0, 0, 64, 256) /* source rect */, + NULL /* clip rect */, NULL /* colors */, + true /* alpha */); + + // Target + if (race_manager->getCoinTarget() > 0) { - LINE(x+1, y-1-gh, x+1+w, y-1-gh, white_border); - gh+=gh_incr; + float coin_target = (float)race_manager->getCoinTarget() / MAX_NITRO; + + const int EMPTY_TOP_PIXELS = 4; + const int EMPTY_BOTTOM_PIXELS = 3; + int y1 = y + EMPTY_TOP_PIXELS + (h - EMPTY_TOP_PIXELS - EMPTY_BOTTOM_PIXELS)*(1.0f - coin_target); + if (state >= 1.0f) y1 = y; + + core::rect clip(x, y1, x + w, y + h); + irr_driver->getVideoDriver()->draw2DImage(m_gauge_goal, core::rect(x, y, x+w, y+h) /* dest rect */, + core::rect(0, 0, 64, 256) /* source rect */, + &clip, NULL /* colors */, true /* alpha */); } - - //Target line - if (coin_target > 0) + + // Filling (current state) + if (state > 0.0f) { - LINE(x+1, y-1-th, x+1+w, y-1-th, video::SColor(255, 255, 0, 0)); + const int EMPTY_TOP_PIXELS = 4; + const int EMPTY_BOTTOM_PIXELS = 3; + int y1 = y + EMPTY_TOP_PIXELS + (h - EMPTY_TOP_PIXELS - EMPTY_BOTTOM_PIXELS)*(1.0f - state); + if (state >= 1.0f) y1 = y; + + core::rect clip(x, y1, x + w, y + h); + irr_driver->getVideoDriver()->draw2DImage(m_gauge_full, core::rect(x, y, x+w, y+h) /* dest rect */, + core::rect(0, 0, 64, 256) /* source rect */, + &clip, NULL /* colors */, true /* alpha */); } -#undef LINE - - // The actual energy meter - core::rect energy(x+1, y-1-(int)(state*h), x+1+w, y-1); - video::SColor bottom(255, 240, 0, 0); - video::SColor top (160, 240, 200, 0); - video->draw2DRectangle(energy, top, top, bottom, bottom); + + } // drawEnergyMeter //----------------------------------------------------------------------------- @@ -805,17 +797,18 @@ void RaceGUI::drawSpeedAndEnergy(const Kart* kart, const core::recti &viewport, const int SPEEDWIDTH = 128; int meter_width = (int)(SPEEDWIDTH*minRatio); int meter_height = (int)(SPEEDWIDTH*minRatio); - core::vector2df offset; - offset.X = (float)(viewport.LowerRightCorner.X-meter_width) - 15.0f*scaling.X; - offset.Y = viewport.LowerRightCorner.Y-10*scaling.Y; - drawEnergyMeter(viewport.LowerRightCorner.X, - viewport.LowerRightCorner.Y - meter_height, kart, + viewport.LowerRightCorner.Y - meter_height*2, kart, viewport, scaling); // First draw the meter (i.e. the background which contains the numbers etc. // ------------------------------------------------------------------------- + + core::vector2df offset; + offset.X = (float)(viewport.LowerRightCorner.X-meter_width) - 15.0f*scaling.X; + offset.Y = viewport.LowerRightCorner.Y-10*scaling.Y; + video::IVideoDriver *video = irr_driver->getVideoDriver(); const core::rect meter_pos((int)offset.X, (int)(offset.Y-meter_height), diff --git a/src/states_screens/race_gui.hpp b/src/states_screens/race_gui.hpp index 7c96c871c..d6d8c2316 100644 --- a/src/states_screens/race_gui.hpp +++ b/src/states_screens/race_gui.hpp @@ -100,6 +100,10 @@ private: /** Translated strings 'ready', 'set', 'go'. */ core::stringw m_string_ready, m_string_set, m_string_go; + video::ITexture *m_gauge_empty; + video::ITexture *m_gauge_full; + video::ITexture *m_gauge_goal; + // Minimap related variables // ------------------------- /** The mini map of the track. */