Improve screen tiles listing

Add option to show all tiles on the screen.
Show screen shot name for unmatched tiles when All is selected
This commit is contained in:
mkwong98 2014-08-24 21:07:19 +08:00
parent 91141c5bb5
commit 5829aa53fb
5 changed files with 156 additions and 28 deletions

View file

@ -488,6 +488,11 @@ void fraHDNesImp::loadImage(){
delete objDC;
}
void fraHDNesImp::toggleShowAllTiles( wxCommandEvent& event ){
loadScreenTiles();
}
void fraHDNesImp::loadScreenTiles(){
bitmapE b;
bitmapF c;
@ -502,31 +507,51 @@ void fraHDNesImp::loadScreenTiles(){
}
for(unsigned int i = 0; i < vid->packSize; i++){
if(vid->editData[i] != BAD_ADDRESS){
for(unsigned int j = 0; j < vid->etiledata[vid->editData[i]].bitmapP.size(); j++){
if((vid->etiledata[vid->editData[i]].bitmapP[j].bitmapID == cboScreen->GetSelection()) || (cboScreen->GetSelection() == (cboScreen->GetCount() - 1))){
c = vid->etiledata[vid->editData[i]].bitmapP[j];
b.bitmapID = c.bitmapID;
b.colors = c.colors;
b.rawDat = c.rawDat;
b.patternAddress = vid->etiledata[vid->editData[i]].patternAddress;
b.x = c.x;
b.y = c.y;
b.brightness = c.brightness;
v.push_back(b);
if(chkShowAllTiles->GetValue() && (cboScreen->GetSelection() != (cboScreen->GetCount() - 1))){
if(vid->allEditData[i] != BAD_ADDRESS){
for(unsigned int j = 0; j < vid->allEtiledata[vid->allEditData[i]].bitmapP.size(); j++){
if(vid->allEtiledata[vid->allEditData[i]].bitmapP[j].bitmapID == cboScreen->GetSelection()){
c = vid->allEtiledata[vid->allEditData[i]].bitmapP[j];
b.bitmapID = c.bitmapID;
b.colors = c.colors;
b.rawDat = c.rawDat;
b.patternAddress = vid->allEtiledata[vid->allEditData[i]].patternAddress;
b.x = c.x;
b.y = c.y;
b.brightness = c.brightness;
v.push_back(b);
}
}
}
}
else{
if(vid->editData[i] != BAD_ADDRESS){
for(unsigned int j = 0; j < vid->etiledata[vid->editData[i]].bitmapP.size(); j++){
if((vid->etiledata[vid->editData[i]].bitmapP[j].bitmapID == cboScreen->GetSelection()) || (cboScreen->GetSelection() == (cboScreen->GetCount() - 1))){
c = vid->etiledata[vid->editData[i]].bitmapP[j];
b.bitmapID = c.bitmapID;
b.colors = c.colors;
b.rawDat = c.rawDat;
b.patternAddress = vid->etiledata[vid->editData[i]].patternAddress;
b.x = c.x;
b.y = c.y;
b.brightness = c.brightness;
v.push_back(b);
}
}
}
}
}
if(v.size() > 0){
screenTileCache = (bitmapE*)malloc(v.size() * sizeof(bitmapE));
for(unsigned int i = 0; i < v.size(); i++){
bool tileFound = false;
screenTileCache[i] = v[i];
tiledisplay = to_string((long double)(screenTileCache[i].patternAddress)) + "," + vid->GetPaletteString(screenTileCache[i].colors);
//check for custom tile
if(vid->packData[v[i].patternAddress] != BAD_ADDRESS){
TileData t = vid->tdata[vid->packData[v[i].patternAddress]];
bool tileFound = false;
for(unsigned int j = 0; j < t.bitmapP.size(); j++){
if(t.bitmapP[j].colors.colorValues == v[i].colors.colorValues){
if(romDat->chrPageCount > 0){
@ -544,10 +569,16 @@ void fraHDNesImp::loadScreenTiles(){
}
}
}
if(t.defaultID != -1 && !tileFound){
tiledisplay = tiledisplay + "-> Using default";
if(!tileFound){
if(t.defaultID != -1){
tiledisplay = tiledisplay + "-> Using default";
tileFound = true;
}
}
}
if(!tileFound && cboScreen->GetSelection() == (cboScreen->GetCount() - 1)){
tiledisplay = tiledisplay + " @ " + vid->screenFileNameList[v[i].bitmapID];
}
lstScreenTiles->Append(wxString(tiledisplay.c_str(), wxConvUTF8), &screenTileCache[i]);
}
}

View file

@ -79,6 +79,8 @@ protected:
void toggleAudioPack( wxCommandEvent& event );
void removeImageFromPack( wxCommandEvent& event );
void AddDarkMapping( wxCommandEvent& event );
void toggleShowAllTiles( wxCommandEvent& event );
public:
fraHDNesImp();

View file

@ -663,6 +663,9 @@ fraHDNes::fraHDNes( wxWindow* parent, wxWindowID id, const wxString& title, cons
optPackScale4 = new wxRadioButton( m_panel7, wxID_ANY, wxT("4x"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer39->Add( optPackScale4, 0, wxALL, 5 );
chkShowAllTiles = new wxCheckBox( m_panel7, wxID_ANY, wxT("Show all tiles in the screen shot"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer39->Add( chkShowAllTiles, 0, wxALL, 5 );
bSizer341->Add( bSizer39, 0, 0, 5 );
@ -1103,6 +1106,7 @@ fraHDNes::fraHDNes( wxWindow* parent, wxWindowID id, const wxString& title, cons
optPackScale1->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( fraHDNes::setPackScale ), NULL, this );
optPackScale2->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( fraHDNes::setPackScale ), NULL, this );
optPackScale4->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( fraHDNes::setPackScale ), NULL, this );
chkShowAllTiles->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( fraHDNes::toggleShowAllTiles ), NULL, this );
cboScreen->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( fraHDNes::showScreenShot ), NULL, this );
btnOptimizeScreenEdit->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::optimizeScreenEdit ), NULL, this );
lstScreenTiles->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( fraHDNes::screenTileSelected ), NULL, this );
@ -1169,6 +1173,7 @@ fraHDNes::~fraHDNes()
optPackScale1->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( fraHDNes::setPackScale ), NULL, this );
optPackScale2->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( fraHDNes::setPackScale ), NULL, this );
optPackScale4->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( fraHDNes::setPackScale ), NULL, this );
chkShowAllTiles->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( fraHDNes::toggleShowAllTiles ), NULL, this );
cboScreen->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( fraHDNes::showScreenShot ), NULL, this );
btnOptimizeScreenEdit->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::optimizeScreenEdit ), NULL, this );
lstScreenTiles->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( fraHDNes::screenTileSelected ), NULL, this );

View file

@ -6975,11 +6975,11 @@
<property name="name">bSizer341</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="0">
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="0">
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer39</property>
<property name="orient">wxHORIZONTAL</property>
@ -7507,6 +7507,94 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Show all tiles in the screen shot</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">chkShowAllTiles</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnCheckBox">toggleShowAllTiles</event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
@ -8147,25 +8235,25 @@
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer33</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">4</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer36</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer37</property>
<property name="orient">wxVERTICAL</property>
@ -9779,11 +9867,11 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer511</property>
<property name="orient">wxHORIZONTAL</property>
@ -9876,11 +9964,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -9964,11 +10052,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<object class="wxButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>

View file

@ -128,6 +128,7 @@ class fraHDNes : public wxFrame
wxRadioButton* optPackScale1;
wxRadioButton* optPackScale2;
wxRadioButton* optPackScale4;
wxCheckBox* chkShowAllTiles;
wxStaticText* m_staticText25;
wxChoice* cboScreen;
wxButton* btnOptimizeScreenEdit;
@ -228,6 +229,7 @@ class fraHDNes : public wxFrame
virtual void loadPackData( wxCommandEvent& event ) { event.Skip(); }
virtual void savePackData( wxCommandEvent& event ) { event.Skip(); }
virtual void setPackScale( wxCommandEvent& event ) { event.Skip(); }
virtual void toggleShowAllTiles( wxCommandEvent& event ) { event.Skip(); }
virtual void showScreenShot( wxCommandEvent& event ) { event.Skip(); }
virtual void optimizeScreenEdit( wxCommandEvent& event ) { event.Skip(); }
virtual void screenTileSelected( wxCommandEvent& event ) { event.Skip(); }