22#ifndef SCUMM_BASE_COSTUME_H
23#define SCUMM_BASE_COSTUME_H
25#include "common/scummsys.h"
26#include "scumm/actor.h"
30#include "common/pack-start.h"
38#include "common/pack-end.h"
41extern const byte smallCostumeScaleTable[256];
42extern const byte bigCostumeScaleTable[768];
57 virtual void loadCostume(
int id) = 0;
58 virtual bool increaseAnims(
Actor *a) = 0;
59 virtual void costumeDecodeData(
Actor *a,
int frame, uint usemask) = 0;
61 virtual bool hasManyDirections(
int id) {
return false; }
78 byte _scaleX, _scaleY;
80 int _drawTop, _drawBottom;
83 bool _actorDrawVirScr;
103 bool _drawActorToRight;
111 uint16 _palette[256] = {};
118 const byte *scaleTable;
127 int scaleXIndex, scaleYIndex;
129#ifdef SCUMM_OPTIMISED_CODE
137 _shadowTable =
nullptr;
138 _actorX = _actorY = 0;
140 _scaleX = _scaleY = 0;
141 _drawTop = _drawBottom = 0;
144 _akosRendering = akosRendering;
149 _drawActorToRight =
false;
150 _width = _height = 0;
153 _actorDrawVirScr =
false;
158 virtual void setPalette(uint16 *palette) = 0;
159 virtual void setFacing(
const Actor *a) = 0;
160 virtual void setCostume(
int costume,
int shadow) = 0;
163 byte drawCostume(
const VirtScreen &vs,
int numStrips,
const Actor *a,
bool drawToBackBuf);
166 virtual byte drawLimb(
const Actor *a,
int limb) = 0;
168 byte paintCelByleRLECommon(
175 ByleRLEData &compData,
178 void byleRLEDecode(ByleRLEData &compData, int16 actorHitX = 0, int16 actorHitY = 0,
bool *actorHitResult =
nullptr,
const uint8 *xmap =
nullptr);
179#ifdef SCUMM_OPTIMISED_CODE
180 void byleRLEDecodeFast(ByleRLEData &compData,
const byte *xmap);
182 void skipCelLines(ByleRLEData &compData,
int num);
186 virtual void clipBoundsRect(
Common::Rect &boundsRect) {}
187 virtual void markAsDirty(
const Common::Rect &rect, ByleRLEData &compData,
bool &decode) {}
Definition: base-costume.h:49
Definition: base-costume.h:68
Definition: base-costume.h:114
Definition: base-costume.h:32