cosmetix
[k8-i-v-a-n.git] / src / game / items / item_lantern.cpp
blob066de74e47b372ee29aa07ad5d507bdcdca03109
1 #ifdef HEADER_PHASE
2 ITEM(lantern, item)
4 public:
5 virtual void SignalSquarePositionChange(int);
6 virtual truth AllowAlphaEverywhere() const { return true; }
7 virtual int GetSpecialFlags() const;
8 virtual truth IsLanternOnWall() const { return GetSquarePosition() != CENTER; }
9 protected:
10 virtual int GetClassAnimationFrames() const { return !IsBroken() ? 32 : 1; }
11 virtual col16 GetMaterialColorA(int) const;
12 virtual col16 GetMaterialColorB(int) const;
13 virtual col16 GetMaterialColorC(int) const;
14 virtual col16 GetMaterialColorD(int) const;
15 virtual alpha GetAlphaA(int) const { return 255; }
16 virtual alpha GetAlphaB(int) const;
17 virtual alpha GetAlphaC(int) const;
18 virtual alpha GetAlphaD(int) const;
19 virtual v2 GetBitmapPos(int) const;
23 #else
27 col16 lantern::GetMaterialColorA(int) const { return MakeRGB16(255, 255, 240); }
31 col16 lantern::GetMaterialColorB(int) const { return MakeRGB16(255, 255, 100); }
35 col16 lantern::GetMaterialColorC(int) const { return MakeRGB16(255, 255, 100); }
39 col16 lantern::GetMaterialColorD(int) const { return MakeRGB16(255, 255, 100); }
43 void lantern::SignalSquarePositionChange(int SquarePosition)
45 item::SignalSquarePositionChange(SquarePosition);
46 UpdatePictures();
51 int lantern::GetSpecialFlags() const
53 switch(GetSquarePosition())
55 case LEFT: return ROTATE|MIRROR;
56 case DOWN: return FLIP;
57 case UP: return 0;
58 case RIGHT: return ROTATE;
61 return 0;
66 alpha lantern::GetAlphaB(int Frame) const
68 Frame &= 31;
69 return (Frame * (31 - Frame) >> 1);
74 alpha lantern::GetAlphaC(int Frame) const
76 Frame &= 31;
77 return (Frame * (31 - Frame) >> 2);
82 alpha lantern::GetAlphaD(int Frame) const
84 Frame &= 31;
85 return (Frame * (31 - Frame) >> 3);
90 v2 lantern::GetBitmapPos(int Frame) const
92 return GetSquarePosition() == CENTER
93 ? item::GetBitmapPos(Frame)
94 : item::GetWallBitmapPos(Frame);
96 #endif