* Tasedit: MsgBox about not working with movies starting from savestate

* Tasedit: Different font for marked Frame#, selection doesn't disappear when toggling Markers
This commit is contained in:
ansstuff 2011-11-28 20:37:55 +00:00
parent fa6e05ece9
commit d58dfe52bc
6 changed files with 100 additions and 75 deletions

View File

@ -283,7 +283,7 @@ BEGIN
END
POPUP "&Help"
BEGIN
MENUITEM "&TASEdit Help", ID_HELP_TASEDITHELP
MENUITEM "&TAS Editor Help", ID_HELP_TASEDITHELP
MENUITEM "&About", ID_HELP_ABOUT
END
END
@ -819,7 +819,7 @@ CAPTION "Enter New Input"
FONT 8, "MS Sans Serif", 0, 0, 0x0
BEGIN
PUSHBUTTON "Cancel",BTN_CANCEL,40,45,50,14
CTEXT "Press a key",LBL_KEY_COMBO,47,14,90,12
CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20
PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14
END
@ -1781,6 +1781,10 @@ BEGIN
BOTTOMMARGIN, 191
END
"MAPINPUT", DIALOG
BEGIN
END
"MESSAGELOG", DIALOG
BEGIN
BOTTOMMARGIN, 184
@ -1794,6 +1798,10 @@ BEGIN
BOTTOMMARGIN, 201
END
"NEWINPUT", DIALOG
BEGIN
END
"PALCONFIG", DIALOG
BEGIN
LEFTMARGIN, 10

View File

@ -414,18 +414,14 @@
#define MEMW_EDIT02FORMULA 1144
#define IDC_BUTTON7 1145
#define MEMW_EDIT03FORMULA 1145
#define TASEDIT_REWIND_FULL2 1145
#define TASEDIT_PREV_MARKER 1145
#define IDC_BUTTON8 1146
#define TASEDIT_REWIND_FULL3 1146
#define TASEDIT_FIND_BEST_MARKER 1146
#define IDC_EDIT1 1147
#define IDC_BUTTON9 1148
#define TASEDIT_REWIND_FULL4 1148
#define TASEDIT_FIND_NEXT_MARKER 1148
#define IDC_HISTORYLIST 1149
#define IDC_BOOKMARKSLIST 1150
#define TASEDIT_REWIND_FULL5 1151
#define TASEDIT_NEXT_MARKER 1151
#define IDC_BRANCHES_BUTTON 1152
#define IDC_BRANCHES_BUTTON2 1153

View File

@ -65,7 +65,7 @@ bool TASEdit_jump_to_undo = true;
// resources
string tasedithelp = "{16CDE0C4-02B0-4A60-A88D-076319909A4D}"; //Name of TASEdit Help page
char buttonNames[NUM_JOYPAD_BUTTONS][2] = {"A", "B", "S", "T", "U", "D", "L", "R"};
char windowCaption[] = "TAS Editor";
char windowCaptioBase[] = "TAS Editor";
extern char recordingCaptions[5][30];
// enterframe function
@ -87,21 +87,21 @@ void UpdateTasEdit()
void RedrawWindowCaption()
{
char windowCapt[300];
strcpy(windowCapt, windowCaption);
char new_caption[300];
strcpy(new_caption, windowCaptioBase);
if (!movie_readonly)
strcat(windowCapt, recordingCaptions[recorder.multitrack_recording_joypad]);
strcat(new_caption, recordingCaptions[recorder.multitrack_recording_joypad]);
// add project name
std::string projectname = project.GetProjectName();
if (!projectname.empty())
{
strcat(windowCapt, " - ");
strcat(windowCapt, projectname.c_str());
strcat(new_caption, " - ");
strcat(new_caption, projectname.c_str());
}
// and * if project has unsaved changes
if (project.GetProjectChanged())
strcat(windowCapt, "*");
SetWindowText(hwndTasEdit, windowCapt);
strcat(new_caption, "*");
SetWindowText(hwndTasEdit, new_caption);
}
void RedrawTasedit()
{
@ -193,9 +193,7 @@ void SingleClick(LPNMITEMACTIVATE info)
else
history.RegisterChanges(MODTYPE_MARKER_UNSET, row_index);
project.SetProjectChanged();
// clear selection, so that new marker will be seen immediately
selection.ClearSelection();
// also no need to redraw row
tasedit_list.RedrawRow(row_index);
}
}
else if(column_index >= COLUMN_JOYPAD1_A && column_index <= COLUMN_JOYPAD4_R)
@ -409,17 +407,22 @@ void ColumnSet(int column)
{
// set all
for(SelectionFrames::iterator it(current_selection_begin); it != current_selection_end; it++)
{
markers.SetMarker(*it);
tasedit_list.RedrawRow(*it);
}
history.RegisterChanges(MODTYPE_MARKER_SET, *current_selection_begin, *current_selection->rbegin());
} else
{
// unset all
for(SelectionFrames::iterator it(current_selection_begin); it != current_selection_end; it++)
{
markers.ClearMarker(*it);
tasedit_list.RedrawRow(*it);
}
history.RegisterChanges(MODTYPE_MARKER_UNSET, *current_selection_begin, *current_selection->rbegin());
}
project.SetProjectChanged();
selection.ClearSelection();
// no need to RedrawList();
} else
{
@ -441,9 +444,12 @@ void ColumnSet(int column)
for(SelectionFrames::iterator it(current_selection_begin); it != current_selection_end; it++)
currMovieData.records[*it].setBitValue(joy,button,newValue);
if (newValue)
{
greenzone.InvalidateAndCheck(history.RegisterChanges(MODTYPE_SET, *current_selection_begin, *current_selection->rbegin()));
else
} else
{
greenzone.InvalidateAndCheck(history.RegisterChanges(MODTYPE_UNSET, *current_selection_begin, *current_selection->rbegin()));
}
}
}
@ -1376,9 +1382,17 @@ void EnterTasEdit()
SetWindowPos(hwndTasEdit, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
// init modules
FCEU_printf("1");
greenzone.init();
FCEU_printf("2");
playback.init();
// either start new movie or use current movie
if (currMovieData.savestate.size() != 0)
{
FCEUD_PrintError("This version of TAS Editor doesn't work with movies starting from savestate.");
// delete savestate, but preserve input
currMovieData.savestate.clear();
}
if (FCEUMOV_Mode(MOVIEMODE_INACTIVE))
{
FCEUI_StopMovie();
@ -1386,7 +1400,7 @@ void EnterTasEdit()
playback.StartFromZero();
} else
{
//use current movie to create a new project
// use current movie to create a new project
FCEUI_StopMovie();
greenzone.TryDumpIncremental(lagFlag != 0);
}

View File

@ -41,14 +41,6 @@ int corners_cursor_shift[BRANCHES_ANIMATION_FRAMES] = {0, 1, 2, 3, 4, 5, 5, 4, 3
BOOKMARKS::BOOKMARKS()
{
// create font
hBookmarksFont = CreateFont(15, 10, /*Height,Width*/
0, 0, /*escapement,orientation*/
FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/
ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/
DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/
"Courier"); /*font name*/
// fill TrackMouseEvent struct
tme.cbSize = sizeof(tme);
tme.dwFlags = TME_LEAVE;
@ -851,7 +843,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
if (bookmarks_array[cell_y].not_empty)
{
// frame number
SelectObject(msg->nmcd.hdc, hBookmarksFont);
SelectObject(msg->nmcd.hdc, tasedit_list.hMainListFont);
int frame = bookmarks_array[cell_y].snapshot.jump_frame;
if (frame == currFrameCounter || frame == (playback.GetPauseFrame() - 1))
{
@ -882,7 +874,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
if (bookmarks_array[cell_y].not_empty)
{
// frame number
SelectObject(msg->nmcd.hdc, hBookmarksFont);
SelectObject(msg->nmcd.hdc, tasedit_list.hMainListFont);
int frame = bookmarks_array[cell_y].snapshot.jump_frame;
if (frame == currFrameCounter || frame == (playback.GetPauseFrame() - 1))
{

View File

@ -33,18 +33,18 @@ TASEDIT_LIST::TASEDIT_LIST()
{
// create fonts for main listview
hMainListFont = CreateFont(15, 10, /*Height,Width*/
0, 0, /*escapement,orientation*/
FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/
ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/
DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/
"Courier"); /*font name*/
hMainListSelectFont = CreateFont(14, 7, /*Height,Width*/
hMainListFont = CreateFont(14, 7, /*Height,Width*/
0, 0, /*escapement,orientation*/
FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/
ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/
DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/
"Arial"); /*font name*/
hMainListSelectFont = CreateFont(15, 10, /*Height,Width*/
0, 0, /*escapement,orientation*/
FW_BOLD, FALSE, FALSE, FALSE, /*weight, italic, underline, strikeout*/
ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/
DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/
"Courier New"); /*font name*/
}
@ -429,13 +429,12 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
if(cell_x > COLUMN_ICONS)
{
SelectObject(msg->nmcd.hdc, hMainListFont);
// text color
if(TASEdit_enable_hot_changes && cell_x >= COLUMN_JOYPAD1_A && cell_x <= COLUMN_JOYPAD4_R)
{
msg->clrText = hot_changes_colors[history.GetCurrentSnapshot().GetHotChangeInfo(cell_y, cell_x - COLUMN_JOYPAD1_A)];
} else msg->clrText = NORMAL_TEXT_COLOR;
// bg color
// bg color and text font
if(cell_x == COLUMN_FRAMENUM || cell_x == COLUMN_FRAMENUM2)
{
// frame number
@ -443,43 +442,59 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
{
// undo hint here
if(TASEdit_show_markers && markers.GetMarker(cell_y))
{
SelectObject(msg->nmcd.hdc, hMainListSelectFont);
msg->clrTextBk = MARKED_UNDOHINT_FRAMENUM_COLOR;
else
} else
{
SelectObject(msg->nmcd.hdc, hMainListFont);
msg->clrTextBk = UNDOHINT_FRAMENUM_COLOR;
}
} else if (cell_y == currFrameCounter || cell_y == (playback.GetPauseFrame() - 1))
{
// current frame
if(TASEdit_show_markers && markers.GetMarker(cell_y))
{
// this frame is also marked
SelectObject(msg->nmcd.hdc, hMainListSelectFont);
msg->clrTextBk = CUR_MARKED_FRAMENUM_COLOR;
else
} else
{
SelectObject(msg->nmcd.hdc, hMainListFont);
msg->clrTextBk = CUR_FRAMENUM_COLOR;
}
} else if(TASEdit_show_markers && markers.GetMarker(cell_y))
{
// marked frame
SelectObject(msg->nmcd.hdc, hMainListSelectFont);
msg->clrTextBk = MARKED_FRAMENUM_COLOR;
} else if(cell_y < greenzone.greenZoneCount)
} else
{
if (!greenzone.savestates[cell_y].empty())
SelectObject(msg->nmcd.hdc, hMainListFont);
if(cell_y < greenzone.greenZoneCount)
{
if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = GREENZONE_FRAMENUM_COLOR;
} else if ((!greenzone.savestates[cell_y & EVERY16TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0xF) + 1 && !greenzone.savestates[(cell_y | 0xF) + 1].empty())
|| (!greenzone.savestates[cell_y & EVERY8TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x7) + 1 && !greenzone.savestates[(cell_y | 0x7) + 1].empty())
|| (!greenzone.savestates[cell_y & EVERY4TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x3) + 1 && !greenzone.savestates[(cell_y | 0x3) + 1].empty())
|| (!greenzone.savestates[cell_y & EVERY2ND].empty() && !greenzone.savestates[(cell_y | 0x1) + 1].empty()))
{
if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = PALE_LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = PALE_GREENZONE_FRAMENUM_COLOR;
if (!greenzone.savestates[cell_y].empty())
{
if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = GREENZONE_FRAMENUM_COLOR;
} else if ((!greenzone.savestates[cell_y & EVERY16TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0xF) + 1 && !greenzone.savestates[(cell_y | 0xF) + 1].empty())
|| (!greenzone.savestates[cell_y & EVERY8TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x7) + 1 && !greenzone.savestates[(cell_y | 0x7) + 1].empty())
|| (!greenzone.savestates[cell_y & EVERY4TH].empty() && (int)greenzone.savestates.size() > (cell_y | 0x3) + 1 && !greenzone.savestates[(cell_y | 0x3) + 1].empty())
|| (!greenzone.savestates[cell_y & EVERY2ND].empty() && !greenzone.savestates[(cell_y | 0x1) + 1].empty()))
{
if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = PALE_LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = PALE_GREENZONE_FRAMENUM_COLOR;
} else msg->clrTextBk = NORMAL_FRAMENUM_COLOR;
} else msg->clrTextBk = NORMAL_FRAMENUM_COLOR;
} else msg->clrTextBk = NORMAL_FRAMENUM_COLOR;
}
} else if((cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 0 || (cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 2)
{
// pad 1 or 3
SelectObject(msg->nmcd.hdc, hMainListFont);
if (cell_y == history.GetUndoHint())
{
// undo hint here
@ -510,6 +525,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
} else if((cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 1 || (cell_x - COLUMN_JOYPAD1_A) / NUM_JOYPAD_BUTTONS == 3)
{
// pad 2 or 4
SelectObject(msg->nmcd.hdc, hMainListFont);
if (cell_y == history.GetUndoHint())
{
// undo hint here

View File

@ -52,31 +52,31 @@
#define NORMAL_FRAMENUM_COLOR 0xFFFFFF
#define NORMAL_INPUT_COLOR1 0xEDEDED
#define NORMAL_INPUT_COLOR2 0xDEDEDE
#define NORMAL_INPUT_COLOR2 0xE2E2E2
#define GREENZONE_FRAMENUM_COLOR 0xDDFFDD
#define GREENZONE_INPUT_COLOR1 0xC8F7C4
#define GREENZONE_INPUT_COLOR2 0xAEE2AE
#define GREENZONE_INPUT_COLOR2 0xADE7AD
#define PALE_GREENZONE_FRAMENUM_COLOR 0xE4FFE4
#define PALE_GREENZONE_INPUT_COLOR1 0xD5F9D4
#define PALE_GREENZONE_INPUT_COLOR2 0xBAE6BA
#define PALE_GREENZONE_INPUT_COLOR1 0xD3F9D2
#define PALE_GREENZONE_INPUT_COLOR2 0xBAEBBA
#define LAG_FRAMENUM_COLOR 0xDBDAFF
#define LAG_INPUT_COLOR1 0xCECBEF
#define LAG_INPUT_COLOR2 0xBEBAE4
#define LAG_FRAMENUM_COLOR 0xDDDCFF
#define LAG_INPUT_COLOR1 0xD2D0F0
#define LAG_INPUT_COLOR2 0xC9C6E8
#define PALE_LAG_FRAMENUM_COLOR 0xE1E1FF
#define PALE_LAG_INPUT_COLOR1 0xD6D3F1
#define PALE_LAG_INPUT_COLOR2 0xC7C4E8
#define PALE_LAG_FRAMENUM_COLOR 0xE3E3FF
#define PALE_LAG_INPUT_COLOR1 0xDADAF4
#define PALE_LAG_INPUT_COLOR2 0xCFCEEA
#define CUR_FRAMENUM_COLOR 0xFCF1CE
#define CUR_INPUT_COLOR1 0xF7E9B2
#define CUR_INPUT_COLOR2 0xE4D8A8
#define CUR_INPUT_COLOR1 0xF8EBB6
#define CUR_INPUT_COLOR2 0xE6DDA5
#define UNDOHINT_FRAMENUM_COLOR 0xF9DDE6
#define UNDOHINT_INPUT_COLOR1 0xF6CCDD
#define UNDOHINT_INPUT_COLOR2 0xE5B7CC
#define UNDOHINT_INPUT_COLOR1 0xF7D2E1
#define UNDOHINT_INPUT_COLOR2 0xE9BED1
#define MARKED_FRAMENUM_COLOR 0xC0FCFF
#define CUR_MARKED_FRAMENUM_COLOR 0xDEF7F3
@ -113,14 +113,13 @@ public:
HWND hwndList, hwndHeader;
// GDI stuff
HIMAGELIST himglist;
HFONT hMainListFont, hMainListSelectFont;
private:
int listItems; // number of items per list page
// GDI stuff
HFONT hMainListFont, hMainListSelectFont;
};