|
@@ -22,6 +22,7 @@
|
|
|
* [ ] handle fire bitmap edges better
|
|
|
*/
|
|
|
|
|
|
+#include <AK/Array.h>
|
|
|
#include <LibCore/ElapsedTimer.h>
|
|
|
#include <LibGUI/Action.h>
|
|
|
#include <LibGUI/Application.h>
|
|
@@ -38,22 +39,9 @@
|
|
|
#include <time.h>
|
|
|
#include <unistd.h>
|
|
|
|
|
|
-#define FIRE_WIDTH 320
|
|
|
-#define FIRE_HEIGHT 168
|
|
|
-#define FIRE_MAX 29
|
|
|
-
|
|
|
-static const Color s_palette[] = {
|
|
|
- Color(0x07, 0x07, 0x07), Color(0x1F, 0x07, 0x07), Color(0x2F, 0x0F, 0x07),
|
|
|
- Color(0x47, 0x0F, 0x07), Color(0x57, 0x17, 0x07), Color(0x67, 0x1F, 0x07),
|
|
|
- Color(0x77, 0x1F, 0x07), Color(0x9F, 0x2F, 0x07), Color(0xAF, 0x3F, 0x07),
|
|
|
- Color(0xBF, 0x47, 0x07), Color(0xC7, 0x47, 0x07), Color(0xDF, 0x4F, 0x07),
|
|
|
- Color(0xDF, 0x57, 0x07), Color(0xD7, 0x5F, 0x07), Color(0xD7, 0x5F, 0x07),
|
|
|
- Color(0xD7, 0x67, 0x0F), Color(0xCF, 0x6F, 0x0F), Color(0xCF, 0x7F, 0x0F),
|
|
|
- Color(0xCF, 0x87, 0x17), Color(0xC7, 0x87, 0x17), Color(0xC7, 0x8F, 0x17),
|
|
|
- Color(0xC7, 0x97, 0x1F), Color(0xBF, 0x9F, 0x1F), Color(0xBF, 0xA7, 0x27),
|
|
|
- Color(0xBF, 0xAF, 0x2F), Color(0xB7, 0xAF, 0x2F), Color(0xB7, 0xB7, 0x37),
|
|
|
- Color(0xCF, 0xCF, 0x6F), Color(0xEF, 0xEF, 0xC7), Color(0xFF, 0xFF, 0xFF)
|
|
|
-};
|
|
|
+static constexpr auto FIRE_WIDTH = 320;
|
|
|
+static constexpr auto FIRE_HEIGHT = 168;
|
|
|
+static constexpr auto FIRE_MAX = 29;
|
|
|
|
|
|
class Fire : public GUI::Widget {
|
|
|
C_OBJECT(Fire)
|
|
@@ -80,11 +68,24 @@ private:
|
|
|
|
|
|
Fire::Fire()
|
|
|
{
|
|
|
+ constexpr Array palette = {
|
|
|
+ Color(0x07, 0x07, 0x07), Color(0x1F, 0x07, 0x07), Color(0x2F, 0x0F, 0x07),
|
|
|
+ Color(0x47, 0x0F, 0x07), Color(0x57, 0x17, 0x07), Color(0x67, 0x1F, 0x07),
|
|
|
+ Color(0x77, 0x1F, 0x07), Color(0x9F, 0x2F, 0x07), Color(0xAF, 0x3F, 0x07),
|
|
|
+ Color(0xBF, 0x47, 0x07), Color(0xC7, 0x47, 0x07), Color(0xDF, 0x4F, 0x07),
|
|
|
+ Color(0xDF, 0x57, 0x07), Color(0xD7, 0x5F, 0x07), Color(0xD7, 0x5F, 0x07),
|
|
|
+ Color(0xD7, 0x67, 0x0F), Color(0xCF, 0x6F, 0x0F), Color(0xCF, 0x7F, 0x0F),
|
|
|
+ Color(0xCF, 0x87, 0x17), Color(0xC7, 0x87, 0x17), Color(0xC7, 0x8F, 0x17),
|
|
|
+ Color(0xC7, 0x97, 0x1F), Color(0xBF, 0x9F, 0x1F), Color(0xBF, 0xA7, 0x27),
|
|
|
+ Color(0xBF, 0xAF, 0x2F), Color(0xB7, 0xAF, 0x2F), Color(0xB7, 0xB7, 0x37),
|
|
|
+ Color(0xCF, 0xCF, 0x6F), Color(0xEF, 0xEF, 0xC7), Color(0xFF, 0xFF, 0xFF)
|
|
|
+ };
|
|
|
+
|
|
|
bitmap = Gfx::Bitmap::create(Gfx::BitmapFormat::Indexed8, { 320, 200 });
|
|
|
|
|
|
/* Initialize fire palette */
|
|
|
for (int i = 0; i < 30; i++)
|
|
|
- bitmap->set_palette_color(i, s_palette[i]);
|
|
|
+ bitmap->set_palette_color(i, palette[i]);
|
|
|
|
|
|
/* Set remaining entries to white */
|
|
|
for (int i = 30; i < 256; i++)
|