Mercurial > mm7
view Engine/Graphics/Texture.h @ 2563:65c97624c047
Saving & loading works from both main menu and game
author | a.parshin |
---|---|
date | Tue, 19 May 2015 22:00:56 +0200 |
parents | c674d547cc7c |
children | d87bfbd3bb3b |
line wrap: on
line source
#pragma once #include <stdio.h> #include <array> /* 194 */ #pragma pack(push, 1) struct RGBTexture { RGBTexture(); void Release(); int LoadPCXFile(const char *Filename, unsigned int a3); unsigned int LoadFromFILE(FILE *pFile, unsigned int mode, unsigned int bCloseFile); int DecodePCX(char *pPcx, unsigned __int16 *pOutPixels, unsigned int uNumPixels); int Load(const char *pContainer, int mode); int Reload(const char *pContainer); char pName[16]; unsigned int uNumPixels; unsigned __int16 uWidth; unsigned __int16 uHeight; __int16 field_18; __int16 field_1A; __int16 field_1C; __int16 field_1E; int _allocation_flags; // & 1 - malloc, else custom allocator unsigned __int16 *pPixels; struct ID3D11ShaderResourceView *d3d11_srv; struct D3D11_TEXTURE2D_DESC *d3d11_desc; }; #pragma pack(pop) #pragma pack(push, 1) struct Texture { Texture(); void Release(); void *UnzipPalette(); char pName[16]; unsigned int uSizeOfMaxLevelOfDetail; unsigned int uTextureSize; unsigned __int16 uTextureWidth; unsigned __int16 uTextureHeight; __int16 uWidthLn2; __int16 uHeightLn2; __int16 uWidthMinus1; __int16 uHeightMinus1; short palette_id1; short palette_id2; unsigned int uDecompressedSize; int pBits; unsigned __int8 *pLevelOfDetail0_prolly_alpha_mask; unsigned __int8 *pLevelOfDetail1; /*unsigned __int8 *pLevelOfDetail2;*/ struct ID3D11ShaderResourceView *d3d11_srv; // replace ol SW stuff with new fields to keep data integrity /*unsigned __int8 *pLevelOfDetail3;*/ struct D3D11_TEXTURE2D_DESC *d3d11_desc; unsigned __int16 *pPalette16; unsigned __int8 *pPalette24; }; #pragma pack(pop) /* 323 */ enum TEXTURE_FRAME_TABLE_FLAGS { TEXTURE_FRAME_TABLE_MORE_FRAMES = 0x1, TEXTURE_FRAME_TABLE_FIRST = 0x2, }; /* 41 */ #pragma pack(push, 1) struct TextureFrame { char pTextureName[12]; __int16 uTextureID; __int16 uAnimTime; __int16 uAnimLength; __int16 uFlags; }; #pragma pack(pop) /* 40 */ #pragma pack(push, 1) struct TextureFrameTable { //----- (0044D4C9) -------------------------------------------------------- inline TextureFrameTable() { pTextures = 0; sNumTextures = 0; } int FromFileTxt(const char *Args); void ToFile(); void FromFile(void *data_mm6, void *data_mm7, void *data_mm8); void LoadAnimationSequenceAndPalettes(signed int uIconID); int GetFrameTexture(int uFrameID, int time); signed int FindTextureByName(const char *Str2); signed int sNumTextures; struct TextureFrame *pTextures; }; #pragma pack(pop) extern struct TextureFrameTable *pTextureFrameTable; extern std::array<struct RGBTexture, 45> pSavegameThumbnails; extern std::array<struct Texture *, 2> pTexture_LloydBeacons; extern struct Texture *pTexture_50635C; extern struct Texture *pTex_book_button8_off; extern struct Texture *pTex_book_button8_on; extern struct Texture *pTex_book_button7_off; extern struct Texture *pTex_book_button7_on; extern struct Texture *pTex_book_button6_off; extern struct Texture *pTex_book_button6_on; extern struct Texture *pTex_book_button5_off; extern struct Texture *pTex_book_button5_on; extern struct Texture *pTex_book_button4_off; extern struct Texture *pTex_book_button4_on; extern struct Texture *pTex_book_button3_off; extern struct Texture *pTex_book_button3_on; extern struct Texture *pTex_book_button2_off; extern struct Texture *pTex_book_button1_off; extern struct Texture *pTex_book_button2_on; extern struct Texture *pTex_book_button1_on; extern std::array<struct Texture *, 6> pTexture_TownPortalIcons; // [0]Harmonale, [1]Pierpont, [2]Nighon, [3]Evenmorn Island, [4]Celestia, [5]The Pit extern std::array<struct Texture *, 12> SBPageCSpellsTextureList; extern std::array<struct Texture *, 12> SBPageSSpellsTextureList; extern struct Texture *pSBQuickSpellBtnTextr; extern struct Texture *pSpellBookClickCloseBtnTextr; extern struct Texture *pSBClickQuickSpellBtnTextr; extern struct Texture *pSpellBookCloseBtnTextr; extern std::array<std::array<struct Texture *, 2>, 9> pTextures_tabs; extern struct Texture *pTexture_mapbordr; // idb extern struct Texture *pTexture_pagemask; // idb extern std::array<struct Texture *, 9> pSpellBookPagesTextr; extern struct Texture *pSpellBookPagesTextr_9; extern struct Texture *pSpellBookPagesTextr_10; extern struct Texture *pSpellBookPagesTextr_11; extern struct Texture *pSpellBookPagesTextr_12; extern struct Texture *pSpellBookPagesTextr_13; extern struct Texture *pTexture_AutonotesBook; extern struct Texture *pTexture_CurrentBook; extern struct Texture *pTex_moon_new; extern struct Texture *pTex_moon_4; extern struct Texture *pTex_moon_2; extern struct Texture *pTex_moon_2_2; extern struct Texture *pTex_moon_ful; extern RGBTexture stru_506E40; // weak extern int uTextureID_RestUI_restb4; // weak extern int uTextureID_RestUI_restexit; // weak extern int uTextureID_RestUI_restb3; // weak extern int uTextureID_RestUI_restb1; // weak extern int uTextureID_RestUI_restb2; // weak extern int uTextureID_RestUI_restmain; // weak extern unsigned int uTextureID_Leather; extern int uTextureID_ar_dn_dn; // weak extern int uTextureID_ar_dn_up; // weak extern int uTextureID_ar_up_dn; // weak extern int uTextureID_ar_up_up; // weak extern int uTextureID_507698; // weak extern int uTextureID_50769C; // weak extern int uTextureID_5076A0; // weak extern int uTextureID_5076A4; // weak extern int uTextureID_5076A8; // weak extern int uTextureID_5076AC; // weak extern int uTextureID_5076B0; // weak extern int uTextureID_5076B4; // weak extern int uTextureID_Parchment; // weak extern unsigned int uTextureID_mhp_yel; extern unsigned int uTextureID_mhp_red; extern unsigned int uTextureID_mhp_grn; extern unsigned int uTextureID_mhp_capr; extern unsigned int uTextureID_mhp_capl; extern unsigned int uTextureID_mhp_bd; extern unsigned int uTextureID_BUTTDESC2; extern unsigned int uTextureID_x_x_u; extern unsigned int uTextureID_BUTTMAKE2; extern unsigned int uTextureID_BUTTMAKE; extern unsigned int uTextureID_BUTTYES2; extern unsigned int uTextureID_x_ok_u; extern std::array<struct Texture *, 22> pPlayerPortraits; extern std::array<struct Texture *, 9> pTexture_IC_KNIGHT; extern struct Texture *pTexture_MAKESKY; extern struct Texture *pTexture_MAKETOP; extern std::array<struct Texture *, 20> pTextures_arrowr; extern std::array<struct Texture *, 20> pTextures_arrowl; extern struct Texture *pTexture_presleft; extern struct Texture *pTexture_pressrigh; extern struct Texture *pTexture_buttminu; extern struct Texture *pTexture_buttplus; extern unsigned int uTextureID_Quit1; extern unsigned int uTextureID_Resume1; extern unsigned int uTextureID_Controls1; extern unsigned int uTextureID_Save1; extern unsigned int uTextureID_Load1; extern unsigned int uTextureID_New1; extern unsigned int uTextureID_Options; extern unsigned int uTextureID_ib_td5_A; extern unsigned int uTextureID_ib_td4_A; extern unsigned int uTextureID_ib_td3_A; extern unsigned int uTextureID_ib_td2_A; extern unsigned int uTextureID_ib_td1_A; extern int uTextureID_CharacterUI_InventoryBackground; // weak extern int uTextureID_50795C; // weak extern unsigned int uTextureID_Btn_GameSettings; extern unsigned int uTextureID_Btn_Rest; extern unsigned int uTextureID_Btn_CastSpell; extern unsigned int uTextureID_Btn_ZoomIn; extern unsigned int uTextureID_Btn_ZoomOut; extern unsigned int uTextureID_FONTPAL; extern unsigned int uTextureID_Btn_NPCRight; extern unsigned int uTextureID_Btn_NPCLeft; extern std::array<unsigned int, 8> pTextureIDs_pMapDirs; extern unsigned int uTextureID_BarRed; extern unsigned int uTextureID_BarYellow; extern unsigned int uTextureID_BarGreen; extern unsigned int uTextureID_BarBlue; extern unsigned int uTextureID_right_panel; // weak extern struct RGBTexture *pTexture_StatusBar; extern struct RGBTexture *pTexture_LeftFrame; extern struct RGBTexture *pTexture_TopFrame; extern struct RGBTexture *pTexture_BottomFrame; extern struct RGBTexture *pTexture_RightFrame; extern unsigned int uTextureID_right_panel_loop; // weak extern struct Texture *pTexture_Leather; extern struct Texture *pTexture_RestUI_CurrentSkyFrame; // idb extern struct Texture *pTexture_RestUI_CurrentHourglassFrame; // idb extern std::array<unsigned int, 5> uTextureID_Optkb; extern unsigned int optvid_base_texture_id; extern unsigned int bloodsplats_texture_id; extern unsigned int us_colored_lights_texture_id; extern unsigned int tinting_texture_id; extern unsigned int uTextureID_507C20; // weak extern unsigned int uTextureID_507C24; // weak extern std::array<unsigned int, 10> pTextureIDs_GammaPositions; extern unsigned int not_available_bloodsplats_texture_id; extern unsigned int not_available_us_colored_lights_texture_id; extern unsigned int not_available_tinting_texture_id; struct OptionsMenuSkin { OptionsMenuSkin(); void Relaease(); unsigned int uTextureID_Background; // 507C60 unsigned int uTextureID_TurnSpeed[3]; // 507C64 unsigned int uTextureID_ArrowLeft; // 507C70 unsigned int uTextureID_ArrowRight; // 507C74 unsigned int uTextureID_unused_0; // 507C78 unsigned int uTextureID_unused_1; // 507C7C unsigned int uTextureID_unused_2; // 507C80 unsigned int uTextureID_FlipOnExit; // 507C84 unsigned int uTextureID_SoundLevels[10]; // 507C88 unsigned int uTextureID_AlwaysRun; // 507CB0 unsigned int uTextureID_WalkSound; // 507CB4 unsigned int uTextureID_ShowDamage; // 507CB8 }; extern OptionsMenuSkin options_menu_skin; // 507C60 extern unsigned int uTextureID_detaliz_close_button; // weak extern unsigned int uTextureID_MAGNIF_B; // weak extern unsigned int uTextureID_BACKDOLL; // weak extern unsigned int uTextureID_BACKHAND; // weak extern struct Texture pTex_F7CE30; extern struct RGBTexture stru_5773C4; // idb extern struct stru355 stru_4E82A4;// = {0x20, 0x41, 0, 0x20, 0xFF0000, 0xFF00, 0xFF, 0xFF000000}; moved to texture.h extern struct stru355 stru_4EFCBC;// = {0x20, 0x41, 0, 0x10, 0x7C00, 0x3E0, 0x1F, 0x8000}; moved to texture.h struct stru355 { int field_0; int field_4; int field_8; int field_C; int field_10; int field_14; int field_18; int field_1C; }; /* 390 */ #pragma pack(push, 1) struct stru350 { stru350 *_450DDE(); bool _450DF1(const struct stru355 *p1, const struct stru355 *p2); unsigned int _450F55(int a2); int _450FB1(int a2); int sub_451007_scale_image_bicubic(unsigned short *pSrc, int srcWidth, int srcHeight, int srcPitch, unsigned short *pDst, int dstWidth, int dstHeight, int dstPitch, int a9, int a10); struct stru355 field_0; struct stru355 field_20; int field_40; int field_44; int field_48; int field_4C; int field_50; int field_54; int field_58; int field_5C; }; #pragma pack(pop)