Files
2026-06-01 12:46:52 +02:00

130 lines
2.6 KiB
C++

#include "stdafx.h"
// sonador #2.1.2.10 중화권 로그인/로고 화면 갱신
#include "SGameImageScene.h"
#include "SGameSceneManager.h"
#include <kfile/KFileManager.h>
#include "KDeviceManager.h"
#include "KViewport.h"
#include "SGameMilesSoundMgr.h"
#include "KResourceManager.h"
#include "KUIWndManager.h"
using namespace rp;
SGameImageScene::SGameImageScene(
SGameSceneManager& sceneMgr
, SGameScene* parent
, const char* sceneName
, const char* imageFile
, const K3DVector& position
, bool registerSelf
, KViewportObject* viewport
, const K3DVector2& size
, const K3DVector2& scale)
: SGameScene ( sceneMgr, parent, sceneName )
, mImageFile ( imageFile )
, mPosition ( position )
, mRegisterSelf ( registerSelf )
, mViewport ( viewport )
, mSize ( size )
, mScale ( scale )
{
}
SGameImageScene::~SGameImageScene()
{
}
void SGameImageScene::onEnter()
{
if( mImageFile.size() == 0 )
return;
NX3LoadPack loadpack;
loadpack.Init();
mTexture = mSceneMgr.textureMgr().GetTexture( mImageFile.c_str(), &loadpack, true, 0 );
assert( mTexture && "image scene's texture was not loaded!!" );
if( mTexture == 0 )
{
//mImageFile
std::string errmsg = "image scene's texture was not loaded!! - ";
errmsg += mImageFile;
MessageBox(NULL, errmsg.c_str(),"error", MB_OK);
return;
}
K3DMatrix worldMatrix;
K3DMatrixIdentity( worldMatrix );
worldMatrix.SetPosVector( mPosition );
mSprite = new KResSprite();
mSprite->SetTexture( mTexture, NULL );
mSprite->SetTransform( worldMatrix );
if(mSize.x > 0)
mSprite->SetSize( mSize.x, mSprite->GetSizeY() );
if(mSize.y > 0)
mSprite->SetSize( mSprite->GetSizeX(), mSize.y );
mSprite->SetSize( mScale.x * mSprite->GetSizeX(), mScale.y * mSprite->GetSizeY() );
mPrimitive.SetRes( mSprite );
}
void SGameImageScene::onLeave()
{
mTexture = 0;
mSprite = 0;
mPrimitive.SetRes( 0 );
}
void SGameImageScene::onActivate()
{
}
void SGameImageScene::onDeactivate()
{
}
void SGameImageScene::onTick()
{
SGameScene::onTick();
updateVisibility();
mPrimitive.SetVisibility( getWorldVisibility() );
}
void SGameImageScene::onRender( KViewportObject* viewport )
{
if( mRegisterSelf && mTexture )
{
if( mViewport )
mViewport->Register( &mPrimitive );
else
viewport->Register( &mPrimitive );
}
}
int SGameImageScene::getWidth() const
{
if( mTexture )
return mTexture->GetWidth();
return 0;
}
int SGameImageScene::getHeight() const
{
if( mTexture )
return mTexture->GetHeight();
return 0;
}
bool SGameImageScene::isImageReady() const
{
return mTexture;
}
void SGameImageScene::SetAdditiveRenderMode(bool useAdditive)
{
mPrimitive.SetAdditiveRenderMode(useAdditive);
}