6#include "ColorPalette.h"
8#include "SpeechBalloon.h"
9#include "faces/Faces.h"
13namespace stackchan::display
29 Display() : canvas_(&M5.Lcd), expression_weight_(), speech_balloon_()
38 void setFace(
Face *face)
45 return expression_weight_;
50 return speech_balloon_;
55 return color_palette_;
70 canvas_.createSprite(320, 240);
71 face_->draw(canvas_, expression_weight_, *color_palette_);
72 drawEmotionalDecorator(expression_weight_, *color_palette_);
73 speech_balloon_.draw(canvas_, *color_palette_);
81 face_->updateState(expression_weight_);
82 this->draw(expression_weight_, *color_palette_);
83 canvas_.pushSprite(0, 0);
84 canvas_.deleteSprite();
88 void Display::drawEmotionalDecorator(ExpressionWeight &expression_weight, ColorPalette &color_palette)
92 uint16_t color = canvas_.getColorDepth() == 1
94 : color_palette_->get(DrawingLocation::kBalloonBackground);
95 uint16_t background_color = canvas_.getColorDepth() == 1
97 : color_palette_->get(DrawingLocation::kBalloonForeground);
100 if (expression_weight.get(Expression::kSleepy) > 128)
102 drawBubble(canvas_, x, y, 20, color);
104 if (expression_weight.get(Expression::kAngry) > 128)
106 drawAngerMark(canvas_, x, y, 20, color, background_color);
108 if (expression_weight.get(Expression::kUpset) > 128)
110 drawWaterDrop(canvas_, x, y, 20, color);
112 if (expression_weight.get(Expression::kSad) > 128)
114 drawPaleMark(canvas_, x, y, 20, color);
116 if (expression_weight.get(Expression::kSmile) > 128)
118 drawHeart(canvas_, x, y, 20, color);
Definition ColorPalette.h:48
virtual void update()
Update avatar, trigger all elements, decorators and modifiers to update.
Definition Display.h:79
Definition Expression.h:39
Definition SpeechBalloon.h:25