#ifndef __hdnesPackEditormainForm__ #define __hdnesPackEditormainForm__ #define COLOUR_CLIENT_ROM_VIEW_BG 0 #define COLOUR_CLIENT_ROM_VIEW_1 1 #define COLOUR_CLIENT_ROM_VIEW_2 2 #define COLOUR_CLIENT_ROM_VIEW_3 3 #define COLOUR_CLIENT_GAME_OBJ_BG 4 #define COLOUR_CLIENT_NEW_SWAP_BG 5 #define COLOUR_CLIENT_NEW_SWAP_1 6 #define COLOUR_CLIENT_NEW_SWAP_2 7 #define COLOUR_CLIENT_NEW_SWAP_3 8 #define GAME_OBJ_PNL_PASTE 0 #define GAME_OBJ_PNL_COPY 1 #define GAME_OBJ_PNL_CONFIRM_PASTE 2 #define GAME_OBJ_PNL_CANCEL_PASTE 3 #define GAME_OBJ_PNL_DELETE 4 #define GAME_OBJ_PNL_HFLIP 5 #define GAME_OBJ_PNL_VFLIP 6 #define GAME_OBJ_PNL_REPLACE 7 #define GAME_OBJ_PNL_CONDITION 8 #define GAME_OBJ_PNL_CONFIRM_CONDITION 9 #define GAME_OBJ_PNL_CANCEL_CONDITION 10 #define GAME_OBJ_PNL_SHOW_NOT_UNIQUE 11 #define GAME_OBJ_PNL_AUTO_CONDITION 12 #define GAME_OBJ_PNL_GROUP_CONDITION 13 #define GAME_OBJ_PNL_HFLIP2 14 #define GAME_OBJ_PNL_VFLIP2 15 #define GAME_OBJ_PNL_PALETTE_SELECT_OFFSET 100 #define GAME_OBJ_PNL_PALETTE_SELECT_OFFSET2 200 #define GAME_OBJ_PNL_IMAGE_SELECT_OFFSET 300 /** @file Subclass of mainForm, which is generated by wxFormBuilder. */ #include "common.h" #include "mainForm.h" #include "colourDialogClient.h" #include "paletteDialogClient.h" #include "imageDialogClient.h" #include "gameObjNode.h" #include "classList.h" //// end generated include /** Implementing mainForm */ class hdnesPackEditormainForm : public mainForm, public colourDialogClient, public paletteDialogClient, public imageDialogClient { protected: // Handlers for mainForm events. void MenuFileNew( wxCommandEvent& event ); void MenuFileOpen( wxCommandEvent& event ); void MenuFileSave( wxCommandEvent& event ); void MenuFileSaveAs( wxCommandEvent& event ); void MenuFileGen( wxCommandEvent& event ); void MenuFileExit( wxCommandEvent& event ); void zoomRomChanged( wxSpinEvent& event ); void romBGColour( wxCommandEvent& event ); void romColour1( wxCommandEvent& event ); void romColour2( wxCommandEvent& event ); void romColour3( wxCommandEvent& event ); void romViewPaletteHexChanged( wxCommandEvent& event ); void romViewSizeChanged( wxSizeEvent& event ); void romViewVScrolled( wxScrollEvent& event ); void romViewHScrolled( wxScrollEvent& event ); void romViewLDown( wxMouseEvent& event ); void romViewLUp( wxMouseEvent& event ); void romViewRUp( wxMouseEvent& event ); void romViewMove( wxMouseEvent& event ); void romViewEnter( wxMouseEvent& event ); void zoomGameObjsChanged( wxSpinEvent& event ); void gameObjTItemBeginEdit( wxTreeEvent& event ); void gameObjTItemChangeName( wxTreeEvent& event ); void gameObjTItemOpenMenu( wxTreeEvent& event ); void gameObjTItemSelected( wxTreeEvent& event ); void gameObjsRawRUp( wxMouseEvent& event ); void gameObjSpriteClicked( wxCommandEvent& event ); void gameObjBGClicked( wxCommandEvent& event ); void gameObjBGColour( wxCommandEvent& event ); void gameObjsRawMove( wxMouseEvent& event ); void gameObjsRawEnter( wxMouseEvent& event ); void gameObjsRawSizeChanged( wxSizeEvent& event ); void gameObjsRawVScrolled( wxScrollEvent& event ); void gameObjsRawHScrolled( wxScrollEvent& event ); void gameObjsRawLDown( wxMouseEvent& event ); void gameObjsRawLUp( wxMouseEvent& event ); void replaceBrightnessChanged( wxScrollEvent& event ); void gameObjDefaultClicked( wxCommandEvent& event ); void BGImageSelect( wxCommandEvent& event ); void BGImageBrightness( wxSpinEvent& event ); void BGImageHScrollRate( wxSpinEvent& event ); void BGImageVScrollRate( wxSpinEvent& event ); void BGImageShowBehindClicked( wxCommandEvent& event ); void BGImageOffsetX( wxCommandEvent& event ); void BGImageOffsetY( wxCommandEvent& event ); void BGImageMoveX( wxCommandEvent& event ); void BGImageMoveY( wxCommandEvent& event ); void BGImageMoveFreq( wxCommandEvent& event ); void BGImageMoveCount( wxCommandEvent& event ); void SwapSeleted( wxListEvent& event ); void SwapPaletteSelected( wxListEvent& event ); void SwapPaletteNewChanged( wxCommandEvent& event ); void SwapNewPaletteBGClicked( wxCommandEvent& event ); void SwapNewPalette1Clicked( wxCommandEvent& event ); void SwapNewPalette2Clicked( wxCommandEvent& event ); void SwapNewPalette3Clicked( wxCommandEvent& event ); void AddSwapClicked( wxCommandEvent& event ); void UpdateSwapClicked( wxCommandEvent& event ); void DeleteSwapClicked( wxCommandEvent& event ); void ConditionSelected( wxListEvent& event ); void ConditionTypeSelect( wxCommandEvent& event ); void ConditionAdd( wxCommandEvent& event ); void ConditionUpdate( wxCommandEvent& event ); void ConditionDelete( wxCommandEvent& event ); void FrameRangeItemSelected( wxListEvent& event ); void AddFrameRangeClicked( wxCommandEvent& event ); void UpdateFrameRangeClicked( wxCommandEvent& event ); void DeleteFrameRangeClicked( wxCommandEvent& event ); void MoveUpFrameRange( wxCommandEvent& event ); void MoveDownFrameRange( wxCommandEvent& event ); void ShowSelectedFrame( wxCommandEvent& event ); void HDImgSelected( wxListEvent& event ); void HDImgSizeChanged( wxSizeEvent& event ); void HDImgTileSelected( wxListEvent& event ); void HDImgLDown( wxMouseEvent& event ); void HDImgLUp( wxMouseEvent& event ); void HDImgMove( wxMouseEvent& event ); void HDImgEnter( wxMouseEvent& event ); void HDImgRUp( wxMouseEvent& event ); void HDImgAdd( wxCommandEvent& event ); void HDImgRemove( wxCommandEvent& event ); void closeWindow( wxCloseEvent& event ); public: /** Constructor */ hdnesPackEditormainForm( wxWindow* parent ); //// end generated class members //--general session string lastDir; string romDir; string packDir; bool notSaved; Uint16 colourSelectSource; Uint32 tileCnt; int paletteToReplace; int imageToReplace; void initGeneral(); void configGeneral(string lineHdr, string lineTail); void saveCfgGeneral(fstream& inifile); void refreshCoreDataDisplay(); void openColourDialog(Uint16 clientID); virtual void colourSelected(Uint8 selectedColour); void paintTile(wxImage &img, Uint8* tileData, int x, int y, bool hFlip, bool vFlip, wxColour c1, wxColour c2, wxColour c3); void drawLine(wxImage &img, wxPoint pt, int len, wxColour c, bool hDir); void drawRect(wxImage &img, wxPoint pt, wxPoint rectSize, wxColour c); void romChanged(); void dataChanged(); void dataSaved(); //--end general session //--rom view session Uint8 romViewColours[4]; int romViewDisplayRows; int romViewDisplayWidth; int romViewDisplayHeight; int romViewCurrentRow; int romViewTileSize; wxImage romViewImage; //selection vector romViewSelectedTiles; wxPoint romViewLDownPos; wxPoint romViewLCurrPos; bool romViewClicked; Uint32 rightClickedID; int rightClickedTileX; int rightClickedTileY; wxImage romViewImageWithSelection; wxImage romViewImageDisplay; void initROMView(); void configROMView(string lineHdr, string lineTail); void saveCfgROMView(fstream& inifile); void romViewROMChanged(); void refreshROMView(); void drawROMView(); void drawROMViewSelection(); void showROMView(); void romViewPaletteToText(); void romViewMenu( wxCommandEvent& event ); virtual void paletteSelected(Uint8* p); virtual void imageSelected(int i); //--end rom view session //--game objs session wxTreeItemId tItmGameObjRoot; wxTreeItemId tItmGameObjMenu; bool gameObjectTreeWillMove; wxTreeItemId tItmGameObjMove; wxTreeItemId tItmGameObjScreen; bool hasScreenFolder; int gameObjTileSize; wxImage gameObjRawImage; wxImage gameObjRawImage2; wxImage gameObjRawImageDisplay; wxImage gameObjNewImage; wxImage gameObjNewImage2; wxImage gameObjNewImageDisplay; int gameObjViewCentreX; int gameObjViewCentreY; int gameObjScrollMinH; int gameObjScrollMaxH; int gameObjScrollSizeH; int gameObjScrollMinV; int gameObjScrollMaxV; int gameObjScrollSizeV; int gameObjRawPasteX; int gameObjRawPasteY; int gameObjZoom; wxColor gameObjBlankColour; gameObjNode gameObjPasteData; wxPoint gameObjRawCurrPos; int gameObjectGenImageCnt; int gameObjectGenImageX; int gameObjectGenImageY; wxImage gameObjectGenImage; //selection vector gameObjSelectedTiles; wxPoint gameObjLDownPos; wxPoint gameObjLCurrPos; bool gameObjClicked; bool editCondition; Uint32 rightClickedgameObjID; int rightClickedGameObjTileX; int rightClickedGameObjTileY; vector gameObjconditionTiles; int conditionGameObjTileX; int conditionGameObjTileY; int conditionCounter; wxImage gameObjImageWithSelection; wxImage gameObjBaseTile; wxImage gameObjBaseTileNew; int selectedSwap; int selectedSwapPalette; Uint8 swapNewColours[4]; int selectedCondition; bool loadingTab; int selectedFrameRange; void initGameObjs(); void configGameObjs(string lineHdr, string lineTail); void saveCfgGameObjs(fstream& inifile); void loadGameObjs(fstream& file); void loadChildGameObjs(fstream& file, wxTreeItemId item); void loadGameObjItem(fstream& file, wxTreeItemId item, bool isRoot); void addScreenGameObjectFolder(); void addScreenGameObject(gameObjNode* n); void saveGameObjs(fstream& file); void saveChildGameObjs(fstream& file, wxTreeItemId item); void saveGameObjItem(fstream& file, wxTreeItemId item); void renameGameObjConditions(); void renameChildGameObjConditions(wxTreeItemId item); void renameChildGameObjItemConditions(wxTreeItemId item); void removeGameObjImage(int index); void removeChildGameObjImage(wxTreeItemId item, int index); void removeChildGameObjItemImage(wxTreeItemId item, int index); void genGameObjsConditionPack(fstream& file); void genChildGameObjsConditionPack(fstream& file, wxTreeItemId item); void genGameObjItemConditionPack(fstream& file, wxTreeItemId item); void genGameObjsTilePack(fstream& file, bool withCondition); void genChildGameObjsTilePack(fstream& file, wxTreeItemId item, bool withCondition); void genGameObjItemTilePack(fstream& file, wxTreeItemId item, bool withCondition); void genCustomImage(fstream& file, gameTile t, paletteSwap s, bool isSprite, int swapID, bool isDefault, gameObjNode* gObj); void gameObjsROMChanged(); void gameObjsTreeMenu( wxCommandEvent& event ); void gameObjsMoveTreeItem(wxTreeItemId item, wxTreeItemId newParent, wxTreeItemId previousItem); void gameObjsSetWillMove(wxTreeItemId item); void gameObjsCancelWillMove(wxTreeItemId item); void gameObjsRawMenu( wxCommandEvent& event ); bool checkPasteValid(string content); wxPoint convertGameObjRawPosition(wxPoint pos); gameObjNode* getGameObjsSelectedObjectTreeNode(); void refreshNode(); void refreshBGImage(); void drawBGImage(); void refreshGameObj(); void clearGameObj(); void drawGameObj(); void adjustGameObjSize(); void drawGameObjEdits(); void drawGameObjPasteTiles(); void drawGameObjSelection(); void showGameObj(wxImage& displayImg, wxImage& displayImg2, int x, int y); void setReplacement(int imageID, int x, int y); void findGameObjNotUniqueTile(); void addGameObjNotUniqueTileCondition(); void loadSwaps(); void showSwap(); void showSwapPalette(); void showNewSwapPalette(); void updateNewSwapText(); void updateSwapData(paletteSwap& s); void applySwap(Uint8* palette, paletteSwap& s); void loadConditions(); void showCondition(); void updateConditionData(condition& c); void showConditionPanel(); void loadFrameRanges(); void showFrameRange(); void refreshCboFrameRange(gameObjNode* ); //--end game objs session //--image session int selectedHDImg; wxPoint hdImgLDownPos; wxPoint hdImgLCurrPos; bool hdImgClicked; Uint32 rightClickedHDImgID; int rightClickedHDImgTileX; int rightClickedHDImgTileY; wxImage hdImgImageWithSelection; float hdImgScale; bool hdImgRendering; void initHDImg(); void showHDImgImage(); void listOutHDImgImages(); void listOutHDImgTiles(); wxPoint convertHDImgPosition(wxPoint pos); void hdImgMenu( wxCommandEvent& event ); //--end image session }; #endif // __hdnesPackEditormainForm__