From 7b13161036928c58a85ccb8e1b5239d9f94a87c3 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Fri, 19 Aug 2011 10:23:35 -0300 Subject: [PATCH] draw health bars but still incorrect --- src/framework/util/color.h | 14 ++- src/otclient/core/const.h | 144 ++++++++++++++++++++++++++++ src/otclient/core/creature.cpp | 166 +++++---------------------------- 3 files changed, 176 insertions(+), 148 deletions(-) diff --git a/src/framework/util/color.h b/src/framework/util/color.h index 2d7f4709..c81cd2a2 100644 --- a/src/framework/util/color.h +++ b/src/framework/util/color.h @@ -21,10 +21,16 @@ public: RGBA rgba() const { return color; } const uint8* rgbaPtr() const { return (const uint8*)&color; } - void setAlpha(uint8 a) { color = ((a & 0xff)<<24) | (color & 0x00ffffff); } - void setBlue(uint8 b) { color = ((b & 0xff)<<16) | (color & 0xff00ffff); } - void setGreen(uint8 g) { color = ((g & 0xff)<<8) | (color & 0xffff00ff); } - void setRed(uint8 r) { color = (r & 0xff) | (color & 0xffffff00); } + void setRed(int r) { color = (r & 0xff) | (color & 0xffffff00); } + void setGreen(int g) { color = ((g & 0xff)<<8) | (color & 0xffff00ff); } + void setBlue(int b) { color = ((b & 0xff)<<16) | (color & 0xff00ffff); } + void setAlpha(int a) { color = ((a & 0xff)<<24) | (color & 0x00ffffff); } + + void setRed(float r) { setRed(int(r*255.0f)); } + void setGreen(float g) { setGreen(int(g*255.0f)); } + void setBlue(float b) { setBlue(int(b*255.0f)); } + void setAlpha(float a) { setAlpha(int(a*255.0f)); } + void setRGBA(uint8 r, uint8 g, uint8 b, uint8 a = 0xFF) { color = ((a & 0xff)<<24) | ((b & 0xff)<<16) | ((g & 0xff)<<8) | (r & 0xff); } void setABGR(uint32 abgr) { color = ((abgr>>24) & 0xff) | ((abgr>>16) & 0xff) << 8 | ((abgr>>8) & 0xff) << 16 | (abgr & 0xff) << 24; } void setRGBA(uint32 rgba) { color = rgba; } diff --git a/src/otclient/core/const.h b/src/otclient/core/const.h index 569835b9..409db5f5 100644 --- a/src/otclient/core/const.h +++ b/src/otclient/core/const.h @@ -1,6 +1,8 @@ #ifndef OTCLIENT_CORE_CONST_H #define OTCLIENT_CORE_CONST_H +#include + enum ThingAttributesGroup { THING_GROUP_NONE = 0, THING_GROUP_GROUND, @@ -41,4 +43,146 @@ enum SpriteMask { SpriteMaskNone = 255 }; +static const Color OutfitColors[] = { + Color(255,255,255), + Color(255,212,191), + Color(255,233,191), + Color(255,255,191), + Color(233,255,191), + Color(212,255,191), + Color(191,255,191), + Color(191,255,212), + Color(191,255,233), + Color(191,255,255), + Color(191,233,255), + Color(191,212,255), + Color(191,191,255), + Color(212,191,255), + Color(233,191,255), + Color(255,191,255), + Color(255,191,233), + Color(255,191,212), + Color(255,191,191), + + Color(128,128,128), + Color(191,159,143), + Color(191,175,143), + Color(191,191,143), + Color(175,191,143), + Color(159,191,143), + Color(143,191,143), + Color(143,191,159), + Color(143,191,175), + Color(143,191,191), + Color(143,175,191), + Color(143,159,191), + Color(143,143,191), + Color(159,143,191), + Color(175,143,191), + Color(191,143,191), + Color(191,143,175), + Color(191,143,159), + Color(191,143,143), + + Color(182,182,182), + Color(191,127,95), + Color(191,159,95), + Color(191,191,95), + Color(159,191,95), + Color(127,191,95), + Color(95,191,95), + Color(95,191,127), + Color(95,191,159), + Color(95,191,191), + Color(95,159,191), + Color(95,127,191), + Color(95,95,191), + Color(127,95,191), + Color(159,95,191), + Color(191,95,191), + Color(191,95,159), + Color(191,95,127), + Color(191,95,95), + + Color(145,145,145), + Color(191,106,63), + Color(191,148,63), + Color(191,191,63), + Color(148,191,63), + Color(107,191,63), + Color(63,191,63), + Color(63,191,106), + Color(63,191,148), + Color(63,191,191), + Color(63,148,191), + Color(63,106,191), + Color(63,63,191), + Color(106,63,191), + Color(148,63,191), + Color(191,63,191), + Color(191,63,148), + Color(191,63,106), + Color(191,63,63), + + Color(109,109,109), + Color(255,85,0), + Color(255,170,0), + Color(255,255,0), + Color(170,255,0), + Color(84,255,0), + Color(0,255,0), + Color(0,255,84), + Color(0,255,170), + Color(0,255,255), + Color(0,169,255), + Color(0,85,255), + Color(0,0,255), + Color(85,0,255), + Color(169,0,255), + Color(254,0,255), + Color(255,0,170), + Color(255,0,85), + Color(255,0,0), + + Color(72,72,72), + Color(191,63,0), + Color(191,127,0), + Color(191,191,0), + Color(127,191,0), + Color(63,191,0), + Color(0,191,0), + Color(0,191,63), + Color(0,191,127), + Color(0,191,191), + Color(0,127,191), + Color(0,63,191), + Color(0,0,191), + Color(63,0,191), + Color(127,0,191), + Color(191,0,191), + Color(191,0,127), + Color(191,0,63), + Color(191,0,0), + + Color(36,36,36), + Color(127,42,0), + Color(127,85,0), + Color(127,127,0), + Color(85,127,0), + Color(42,127,0), + Color(0,127,0), + Color(0,127,42), + Color(0,127,85), + Color(0,127,127), + Color(0,84,127), + Color(0,42,127), + Color(0,0,127), + Color(42,0,127), + Color(84,0,127), + Color(127,0,127), + Color(191,0,85), + Color(127,0,42), + Color(127,0,0) +}; + #endif diff --git a/src/otclient/core/creature.cpp b/src/otclient/core/creature.cpp index 082346ba..bfe5f2e9 100644 --- a/src/otclient/core/creature.cpp +++ b/src/otclient/core/creature.cpp @@ -18,149 +18,6 @@ void Creature::draw(int x, int y) // draw outfit internalDraw(x, y, 0, m_direction, 0, 0, anim); - // TODO: move this shit hahaha - static const Color outfitColors[] = { - Color(255,255,255), - Color(255,212,191), - Color(255,233,191), - Color(255,255,191), - Color(233,255,191), - Color(212,255,191), - Color(191,255,191), - Color(191,255,212), - Color(191,255,233), - Color(191,255,255), - Color(191,233,255), - Color(191,212,255), - Color(191,191,255), - Color(212,191,255), - Color(233,191,255), - Color(255,191,255), - Color(255,191,233), - Color(255,191,212), - Color(255,191,191), - - Color(128,128,128), - Color(191,159,143), - Color(191,175,143), - Color(191,191,143), - Color(175,191,143), - Color(159,191,143), - Color(143,191,143), - Color(143,191,159), - Color(143,191,175), - Color(143,191,191), - Color(143,175,191), - Color(143,159,191), - Color(143,143,191), - Color(159,143,191), - Color(175,143,191), - Color(191,143,191), - Color(191,143,175), - Color(191,143,159), - Color(191,143,143), - - Color(182,182,182), - Color(191,127,95), - Color(191,159,95), - Color(191,191,95), - Color(159,191,95), - Color(127,191,95), - Color(95,191,95), - Color(95,191,127), - Color(95,191,159), - Color(95,191,191), - Color(95,159,191), - Color(95,127,191), - Color(95,95,191), - Color(127,95,191), - Color(159,95,191), - Color(191,95,191), - Color(191,95,159), - Color(191,95,127), - Color(191,95,95), - - Color(145,145,145), - Color(191,106,63), - Color(191,148,63), - Color(191,191,63), - Color(148,191,63), - Color(107,191,63), - Color(63,191,63), - Color(63,191,106), - Color(63,191,148), - Color(63,191,191), - Color(63,148,191), - Color(63,106,191), - Color(63,63,191), - Color(106,63,191), - Color(148,63,191), - Color(191,63,191), - Color(191,63,148), - Color(191,63,106), - Color(191,63,63), - - Color(109,109,109), - Color(255,85,0), - Color(255,170,0), - Color(255,255,0), - Color(170,255,0), - Color(84,255,0), - Color(0,255,0), - Color(0,255,84), - Color(0,255,170), - Color(0,255,255), - Color(0,169,255), - Color(0,85,255), - Color(0,0,255), - Color(85,0,255), - Color(169,0,255), - Color(254,0,255), - Color(255,0,170), - Color(255,0,85), - Color(255,0,0), - - Color(72,72,72), - Color(191,63,0), - Color(191,127,0), - Color(191,191,0), - Color(127,191,0), - Color(63,191,0), - Color(0,191,0), - Color(0,191,63), - Color(0,191,127), - Color(0,191,191), - Color(0,127,191), - Color(0,63,191), - Color(0,0,191), - Color(63,0,191), - Color(127,0,191), - Color(191,0,191), - Color(191,0,127), - Color(191,0,63), - Color(191,0,0), - - Color(36,36,36), - Color(127,42,0), - Color(127,85,0), - Color(127,127,0), - Color(85,127,0), - Color(42,127,0), - Color(0,127,0), - Color(0,127,42), - Color(0,127,85), - Color(0,127,127), - Color(0,84,127), - Color(0,42,127), - Color(0,0,127), - Color(42,0,127), - Color(84,0,127), - Color(127,0,127), - Color(191,0,85), - Color(127,0,42), - Color(127,0,0) - }; - const ThingAttributes& attributes = getAttributes(); if(attributes.blendframes > 1) { g_graphics.bindBlendFunc(BLEND_COLORIZING); @@ -177,13 +34,34 @@ void Creature::draw(int x, int y) else if(mask == SpriteMaskGreen) outfitColorId = m_outfit.feet; - g_graphics.bindColor(outfitColors[outfitColorId]); + g_graphics.bindColor(OutfitColors[outfitColorId]); internalDraw(x, y, 1, m_direction, 0, 0, anim, (SpriteMask)mask); } g_graphics.bindBlendFunc(BLEND_NORMAL); g_graphics.bindColor(Color::white); } + + // health bar + // TODO: draw outside framebuffer + Color healthColor = Color::black; + if(m_healthPercent > 60 && m_healthPercent <= 100) { + healthColor.setRed(0.0f); + healthColor.setGreen(0.75f); + } else if(m_healthPercent > 30 && m_healthPercent <= 60) { + healthColor.setRed(0.75f); + healthColor.setGreen(0.75f); + } else if(m_healthPercent > 10 && m_healthPercent <= 30) { + healthColor.setRed(0.75f); + healthColor.setGreen(0.00f); + } else if(m_healthPercent > 0 && m_healthPercent <= 10) { + healthColor.setRed(0.25f); + healthColor.setGreen(0.00f); + } + + Rect healthRect = Rect(x - 14, y - 11, 27, 4); + g_graphics.drawBoundingRect(healthRect, Color::black); + g_graphics.drawFilledRect(healthRect.expanded(-1), healthColor); } const ThingAttributes& Creature::getAttributes()