mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-23 14:46:53 +00:00
172 lines
4.6 KiB
C++
172 lines
4.6 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// XBOX_LOADER.H
|
|
//
|
|
// Master Include
|
|
//=====================================================================================//
|
|
|
|
#pragma once
|
|
|
|
#include <xtl.h>
|
|
#include <XBApp.h>
|
|
#include <XBFont.h>
|
|
#include <XBHelp.h>
|
|
#include <xgraphics.h>
|
|
#include <xfont.h>
|
|
#include <xmv.h>
|
|
#include <xbdm.h>
|
|
#include <math.h>
|
|
#include "XBResource.h"
|
|
#include "xmvhelper.h"
|
|
#include "toollib.h"
|
|
#include "scriplib.h"
|
|
#include "loader.h"
|
|
#include "jcalg1.h"
|
|
#include "xbox/xbox_launch.h"
|
|
|
|
#define XBOX_FORENSIC_LOG
|
|
|
|
#define SCREEN_WIDTH 640
|
|
#define SCREEN_HEIGHT 480
|
|
#define MAX_FILES 500
|
|
#define MAX_SLIDESHOW_TEXTURES 9
|
|
|
|
#define LEGAL_DISPLAY_TIME 6000
|
|
#define LOADINGBAR_UPTIME 500.0f // slid up or down
|
|
#define LOADINGBAR_SLIDETIME 1500.0f // progress speed
|
|
#define LOADINGBAR_WAITTIME 500.0f // delay after up to begin slide
|
|
#define SLIDESHOW_SLIDETIME 7000
|
|
#define SLIDESHOW_FLIPTIME 1000
|
|
|
|
#define LEGAL_MAIN 0
|
|
#define LEGAL_SOURCE 1
|
|
|
|
#define FOOTER_W 512
|
|
|
|
#define SEGMENT_W 10
|
|
#define SEGMENT_GAP 1
|
|
#define SEGMENT_COUNT 26
|
|
|
|
#define PROGRESS_Y 405
|
|
#define PROGRESS_W (SEGMENT_COUNT*(SEGMENT_W+SEGMENT_GAP))
|
|
#define PROGRESS_H 15
|
|
#define PROGRESS_X 124
|
|
|
|
#define PROGRESS_FOOTER_COLOR 0x88FFFFFF
|
|
#define PROGRESS_INSET_COLOR 0xFF222222
|
|
#define PROGRESS_SEGMENT_COLOR 0xFFCC6C00
|
|
#define PROGRESS_TEXT_COLOR 0xFFFFFFFF
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Main class to run this application. Most functionality is inherited
|
|
// from the CXBApplication base class.
|
|
//-----------------------------------------------------------------------------
|
|
class CXBoxLoader : public CXBApplication
|
|
{
|
|
public:
|
|
CXBoxLoader();
|
|
|
|
virtual HRESULT Initialize( void );
|
|
virtual HRESULT Render( void );
|
|
virtual HRESULT FrameMove( void );
|
|
|
|
void DrawRect( int x, int y, int w, int h, DWORD color );
|
|
void DrawLegals();
|
|
void DrawDebug();
|
|
BOOL PlayVideoFrame();
|
|
HRESULT StartVideo( const CHAR* strFilename, bool bFromMemory, bool bFatalOnError );
|
|
void StopVideo();
|
|
bool StartInstall( void );
|
|
bool LoadInstallScript( void );
|
|
D3DTexture *LoadTexture( int resourceID );
|
|
HRESULT LoadFont( CXBFont *pFont, int resourceID );
|
|
void DrawTexture( D3DTexture *pD3DTexture, int x, int y, int w, int h, int color );
|
|
void StartLegalScreen( int legal );
|
|
void DrawProgressBar();
|
|
void DrawLoadingMarquee();
|
|
void DrawSlideshow();
|
|
bool VerifyInstall();
|
|
void StartDashboard( bool bGotoMemory );
|
|
void LoadLogFile();
|
|
void DrawLog();
|
|
void FatalMediaError();
|
|
void LaunchHL2( unsigned int contextCode );
|
|
void TickVideo();
|
|
|
|
private:
|
|
IDirect3DTexture8 *m_pLastMovieFrame;
|
|
D3DTexture *m_pFooterTexture;
|
|
D3DTexture *m_pLoadingIconTexture;
|
|
D3DTexture *m_pMainLegalTexture;
|
|
D3DTexture *m_pSourceLegalTexture;
|
|
D3DTexture *m_pLegalTexture;
|
|
D3DTexture *m_pSlideShowTextures[MAX_SLIDESHOW_TEXTURES];
|
|
|
|
CXMVPlayer m_player;
|
|
|
|
D3DVertexBuffer *m_pVB;
|
|
CXBPackedResource m_xprResource;
|
|
|
|
CXBFont m_Font;
|
|
|
|
int m_contextCode;
|
|
|
|
char *m_fileSrc[MAX_FILES];
|
|
char *m_fileDest[MAX_FILES];
|
|
xCompressHeader *m_fileCompressionHeaders[MAX_FILES];
|
|
DWORD m_fileDestSizes[MAX_FILES];
|
|
int m_numFiles;
|
|
|
|
bool m_bAllowAttractAbort;
|
|
bool m_bDrawLoading;
|
|
bool m_bDrawProgress;
|
|
bool m_bDrawDebug;
|
|
bool m_bLaunch;
|
|
DWORD m_dwLoading;
|
|
bool m_bDrawLegal;
|
|
HANDLE m_installThread;
|
|
DWORD m_LegalTime;
|
|
int m_State;
|
|
DWORD m_LoadingBarStartTime;
|
|
DWORD m_LoadingBarEndTime;
|
|
DWORD m_LegalStartTime;
|
|
bool m_bInstallComplete;
|
|
int m_Version;
|
|
int m_FrameCounter;
|
|
int m_MovieCount;
|
|
bool m_bMovieErrorIsFatal;
|
|
bool m_bCaptureLastMovieFrame;
|
|
DWORD m_SlideShowStartTime;
|
|
bool m_bDrawSlideShow;
|
|
int m_SlideShowCount;
|
|
bool m_bFinalSlide;
|
|
char *m_pLogData;
|
|
XFONT* m_pDefaultTrueTypeFont;
|
|
};
|
|
|
|
struct CopyStats_t
|
|
{
|
|
char m_srcFilename[MAX_PATH];
|
|
char m_dstFilename[MAX_PATH];
|
|
DWORD m_readSize;
|
|
DWORD m_writeSize;
|
|
DWORD m_bytesCopied;
|
|
DWORD m_totalReadTime;
|
|
DWORD m_totalWriteTime;
|
|
DWORD m_totalReadSize;
|
|
DWORD m_totalWriteSize;
|
|
DWORD m_bufferReadSize;
|
|
DWORD m_bufferWriteSize;
|
|
DWORD m_bufferReadTime;
|
|
DWORD m_bufferWriteTime;
|
|
DWORD m_inflateSize;
|
|
DWORD m_inflateTime;
|
|
DWORD m_copyTime;
|
|
DWORD m_copyErrors;
|
|
DWORD m_numReadBuffers;
|
|
DWORD m_numWriteBuffers;
|
|
};
|
|
|
|
extern bool CopyFileOverlapped( const char *pSrc, const char *pDest, xCompressHeader *pxcHeader, CopyStats_t *pCopyStats );
|
|
extern bool CreateFilePath( const char *inPath );
|