/**************************************************************************** * Copyright (C) 2010 * by Dimok * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any * damages arising from the use of this software. * * Permission is granted to anyone to use this software for any * purpose, including commercial applications, and to alter it and * redistribute it freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you * must not claim that you wrote the original software. If you use * this software in a product, an acknowledgment in the product * documentation would be appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and * must not be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source * distribution. ***************************************************************************/ #ifndef BOX_COVER_HPP_ #define BOX_COVER_HPP_ #include "GUI/gui.h" #define EFFECT_BOX_FLY_CENTRE 0x2000000 #define EFFECT_BOX_FLY_BACK 0x4000000 #define EFFECT_BOX_ROTATE_X 0x8000000 class BoxCover : public GuiImage { public: BoxCover(GuiImageData * img, bool flat = false); virtual ~BoxCover(); //! Colors: //! Gray Box (Default): r:233 g:233 b:233 //! Red Box (NSMB): r:198 g:34 b:4 void SetBoxColor(GXColor c) { LOCK(this); boxColor = c; }; void SetPosition(f32 x, f32 y, f32 z) { LOCK(this); PosXOrig = PosX = x; PosYOrig = PosY = y; PosZOrig = PosZ = z; }; void SetEffect(int eff, int amount, int target = 0); void SetImage(GuiImageData *img); //forbid this call void SetZoomable(bool z) { LOCK(this); Zoomable = z; }; void Draw(); void Update(GuiTrigger * t); void UpdateEffects(); private: void WiiPADControl(GuiTrigger *t); f32 RotX; f32 RotY; f32 RotZ; f32 PosX; f32 PosY; f32 PosZ; f32 PosXOrig; f32 PosYOrig; f32 PosZOrig; f32 AnimRotate; f32 Animation; f32 Animation2; u32 last_manual_move_frame; int moveStartPosX; int moveStartPosY; f32 movePosX; f32 movePosY; int moveChan; bool flatCover; bool Zoomable; Mtx44 projection; GuiImageData boxBorder; GuiImageData *defaultBox; GuiImageData *NormalPointers[4]; GuiImageData *GrabPointers[4]; Mtx view; GXTexObj coverTex; GXTexObj boxBorderTex; GXTexObj defaultBoxTex; GXColor boxColor; }; #endif