usbloadergx/source/BoxCover/BoxCover.hpp

85 lines
2.7 KiB
C++
Raw Normal View History

/****************************************************************************
* 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);
~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