* Tasedit: refactoring

* fixed recording bug where "length" tag appeared in fm2s
* changed default mapping of Frame Advance to Tilde
* Config->Silent autosave
* Tasedit: Lua panel
* 5 new Lua functions: emu.paused(), taseditor.setplayback(int frame), taseditor.stopseeking(), taseditor.registerauto(), taseditor.registermanual()
This commit is contained in:
ansstuff 2012-01-08 18:19:49 +00:00
parent 0194d9b872
commit c6c04b577b
44 changed files with 2315 additions and 1850 deletions

View File

@ -48,7 +48,7 @@
#elif DOS
#define SCAN_GRAVE 0x29
#define SCAN_TILDE 0x29
#define SCAN_1 0x02
#define SCAN_2 0x03
#define SCAN_3 0x04

View File

@ -38,6 +38,7 @@
#include "movieoptions.h"
#include "ramwatch.h"
#include "debugger.h"
#include "taseditlib/taseditor_config.h"
#include "../../state.h" //adelikat: For bool backupSavestates
@ -69,42 +70,7 @@ extern bool oldInputDisplay;
extern bool fullSaveStateLoads;
extern int frameSkipAmt;
extern bool TASEdit_follow_playback;
extern bool TASEdit_turbo_seek;
extern bool TASEdit_show_lag_frames;
extern bool TASEdit_show_markers;
extern bool TASEdit_show_branch_screenshots;
extern bool TASEdit_show_branch_tooltips;
extern bool TASEdit_bind_markers;
extern bool TASEdit_empty_marker_notes;
extern bool TASEdit_combine_consecutive_rec;
extern bool TASEdit_use_1p_rec;
extern bool TASEdit_columnset_by_keys;
extern bool TASEdit_keyboard_for_listview;
extern bool TASEdit_superimpose_affects_paste;
extern bool TASEdit_branch_full_movie;
extern bool TASEdit_branch_only_when_rec;
extern bool TASEdit_view_branches_tree;
extern bool TASEdit_branch_scr_hud;
extern bool TASEdit_restore_position;
extern int TASEdit_superimpose;
extern bool TASEdit_enable_hot_changes;
extern int TASEdit_greenzone_capacity;
extern int TasEdit_undo_levels;
extern int TASEdit_autosave_period;
extern bool TASEdit_jump_to_undo;
extern bool TASEdit_follow_note_context;
extern int TASEdit_last_export_type;
extern bool TASEdit_last_export_subtitles;
extern bool TASEdit_savecompact_binary;
extern bool TASEdit_savecompact_markers;
extern bool TASEdit_savecompact_bookmarks;
extern bool TASEdit_savecompact_greenzone;
extern bool TASEdit_savecompact_history;
extern bool TASEdit_savecompact_list;
extern bool TASEdit_savecompact_selection;
extern bool TASEdit_findnote_matchcase;
extern bool TASEdit_findnote_search_up;
extern TASEDITOR_CONFIG taseditor_config;
extern char* recent_projects[];
//window positions and sizes:
@ -122,8 +88,6 @@ extern int Monitor_wndx, Monitor_wndy;
extern int Tracer_wndx, Tracer_wndy;
extern int CDLogger_wndx, CDLogger_wndy;
extern int GGConv_wndx, GGConv_wndy;
extern int TasEdit_wndx, TasEdit_wndy;
extern int FindNote_wndx, FindNote_wndy;
extern int MetaPosX,MetaPosY;
extern int MLogPosX,MLogPosY;
@ -319,10 +283,6 @@ static CFGSTRUCT fceuconfig[] = {
AC(CDLogger_wndy),
AC(GGConv_wndx),
AC(GGConv_wndy),
AC(TasEdit_wndx),
AC(TasEdit_wndy),
AC(FindNote_wndx),
AC(FindNote_wndy),
AC(TextHookerPosX),
AC(TextHookerPosY),
AC(MetaPosX),
@ -337,42 +297,47 @@ static CFGSTRUCT fceuconfig[] = {
AC(AFoff),
AC(AutoFireOffset),
AC(DesynchAutoFire),
AC(TASEdit_follow_playback),
AC(TASEdit_turbo_seek),
AC(TASEdit_show_lag_frames),
AC(TASEdit_show_markers),
AC(TASEdit_show_branch_screenshots),
AC(TASEdit_show_branch_tooltips),
AC(TASEdit_bind_markers),
AC(TASEdit_empty_marker_notes),
AC(TASEdit_combine_consecutive_rec),
AC(TASEdit_use_1p_rec),
AC(TASEdit_columnset_by_keys),
AC(TASEdit_keyboard_for_listview),
AC(TASEdit_superimpose_affects_paste),
AC(TASEdit_branch_full_movie),
AC(TASEdit_branch_only_when_rec),
AC(TASEdit_view_branches_tree),
AC(TASEdit_branch_scr_hud),
AC(TASEdit_restore_position),
AC(TASEdit_superimpose),
AC(TASEdit_enable_hot_changes),
AC(TASEdit_greenzone_capacity),
AC(TasEdit_undo_levels),
AC(TASEdit_autosave_period),
AC(TASEdit_jump_to_undo),
AC(TASEdit_follow_note_context),
AC(TASEdit_last_export_type),
AC(TASEdit_last_export_subtitles),
AC(TASEdit_savecompact_binary),
AC(TASEdit_savecompact_markers),
AC(TASEdit_savecompact_bookmarks),
AC(TASEdit_savecompact_greenzone),
AC(TASEdit_savecompact_history),
AC(TASEdit_savecompact_list),
AC(TASEdit_savecompact_selection),
AC(TASEdit_findnote_matchcase),
AC(TASEdit_findnote_search_up),
AC(taseditor_config.wndx),
AC(taseditor_config.wndy),
AC(taseditor_config.findnote_wndx),
AC(taseditor_config.findnote_wndy),
AC(taseditor_config.follow_playback),
AC(taseditor_config.turbo_seek),
AC(taseditor_config.show_lag_frames),
AC(taseditor_config.show_markers),
AC(taseditor_config.show_branch_screenshots),
AC(taseditor_config.show_branch_tooltips),
AC(taseditor_config.bind_markers),
AC(taseditor_config.empty_marker_notes),
AC(taseditor_config.combine_consecutive_rec),
AC(taseditor_config.use_1p_rec),
AC(taseditor_config.columnset_by_keys),
AC(taseditor_config.keyboard_for_listview),
AC(taseditor_config.superimpose_affects_paste),
AC(taseditor_config.branch_full_movie),
AC(taseditor_config.branch_only_when_rec),
AC(taseditor_config.view_branches_tree),
AC(taseditor_config.branch_scr_hud),
AC(taseditor_config.restore_position),
AC(taseditor_config.superimpose),
AC(taseditor_config.enable_auto_function),
AC(taseditor_config.enable_hot_changes),
AC(taseditor_config.greenzone_capacity),
AC(taseditor_config.undo_levels),
AC(taseditor_config.autosave_period),
AC(taseditor_config.jump_to_undo),
AC(taseditor_config.follow_note_context),
AC(taseditor_config.last_export_type),
AC(taseditor_config.last_export_subtitles),
AC(taseditor_config.savecompact_binary),
AC(taseditor_config.savecompact_markers),
AC(taseditor_config.savecompact_bookmarks),
AC(taseditor_config.savecompact_greenzone),
AC(taseditor_config.savecompact_history),
AC(taseditor_config.savecompact_list),
AC(taseditor_config.savecompact_selection),
AC(taseditor_config.findnote_matchcase),
AC(taseditor_config.findnote_search_up),
AC(lagCounterDisplay),
AC(oldInputDisplay),
AC(movieSubtitles),

View File

@ -543,7 +543,7 @@ ButtConfig fkbmap[0x48]=
MK(1),MK(2),MK(3),MK(4),MK(5),MK(6),MK(7),MK(8),MK(9),MK(0),
MK(MINUS),MK(EQUAL),MK(BACKSLASH),MK(BACKSPACE),
MK(ESCAPE),MK(Q),MK(W),MK(E),MK(R),MK(T),MK(Y),MK(U),MK(I),MK(O),
MK(P),MK(GRAVE),MK(BRACKET_LEFT),MK(ENTER),
MK(P),MK(TILDE),MK(BRACKET_LEFT),MK(ENTER),
MK(LEFTCONTROL),MK(A),MK(S),MK(D),MK(F),MK(G),MK(H),MK(J),MK(K),
MK(L),MK(SEMICOLON),MK(APOSTROPHE),MK(BRACKET_RIGHT),MK(INSERT),
MK(LEFTSHIFT),MK(Z),MK(X),MK(C),MK(V),MK(B),MK(N),MK(M),MK(COMMA),

View File

@ -18,7 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define SCAN_GRAVE 0x29
#define SCAN_TILDE 0x29
#define SCAN_1 0x02
#define SCAN_2 0x03
#define SCAN_3 0x04

View File

@ -70,6 +70,7 @@
#include "video.h"
#include "utils/xstring.h"
#include <string.h>
#include "taseditlib/taseditor_window.h"
//---------------------------
//mbg merge 6/29/06 - new aboutbox
@ -307,8 +308,8 @@ int BlockingCheck()
{
//other accelerator capable dialogs could be added here
extern HWND hwndMemWatch;
extern HWND hwndTasEdit;
extern HWND hwndFindNote;
extern TASEDITOR_WINDOW taseditor_window;
int handled = 0;
if(hCheat)
@ -337,15 +338,15 @@ int BlockingCheck()
if(!handled && hwndTasEdit)
if(!handled && taseditor_window.hwndTasEditor)
{
if(IsChild(hwndTasEdit, msg.hwnd))
handled = TranslateAccelerator(hwndTasEdit,fceu_hAccel,&msg);
if(IsChild(taseditor_window.hwndTasEditor, msg.hwnd))
handled = TranslateAccelerator(taseditor_window.hwndTasEditor, fceu_hAccel, &msg);
}
if(!handled && hwndFindNote)
if(!handled && taseditor_window.hwndFindNote)
{
if(IsChild(hwndFindNote, msg.hwnd))
handled = IsDialogMessage(hwndFindNote, &msg);
if(IsChild(taseditor_window.hwndFindNote, msg.hwnd))
handled = IsDialogMessage(taseditor_window.hwndFindNote, &msg);
}
/* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them.
if(!handled)

View File

@ -24,7 +24,7 @@ static struct
{
{ EMUCMD_RESET, SCAN_R | CMD_KEY_CTRL, },
{ EMUCMD_PAUSE, SCAN_PAUSE, },
{ EMUCMD_FRAME_ADVANCE, SCAN_BACKSLASH, },
{ EMUCMD_FRAME_ADVANCE, SCAN_TILDE, },
{ EMUCMD_SCREENSHOT, SCAN_F12, },
{ EMUCMD_HIDE_MENU_TOGGLE, SCAN_ESCAPE },
{ EMUCMD_SPEED_SLOWER, SCAN_MINUS, },
@ -73,7 +73,7 @@ static struct
{ EMUCMD_RELOAD, SCAN_F1 | CMD_KEY_CTRL , },
{ EMUCMD_MISC_UNDOREDOSAVESTATE, SCAN_Z | CMD_KEY_CTRL, },
{ EMUCMD_MISC_TOGGLEFULLSCREEN, SCAN_ENTER | CMD_KEY_ALT, },
{ EMUCMD_TASEDIT_REWIND, SCAN_GRAVE, },
{ EMUCMD_TASEDIT_REWIND, SCAN_ESCAPE, },
{ EMUCMD_RERECORD_DISPLAY_TOGGLE, SCAN_M, },
};

View File

@ -25,8 +25,8 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON3 ICON "res\\tasedit-icon.ico"
IDI_ICON4 ICON "res\\tasedit-icon32.ico"
IDI_ICON3 ICON "res\\taseditor-icon.ico"
IDI_ICON4 ICON "res\\taseditor-icon32.ico"
ICON_1 ICON "res/ICON_1.ico"
ICON_2 ICON "res/ICON_2.ico"
@ -240,7 +240,7 @@ BEGIN
MENUITEM "Selection Redo\tCtrl+W", ID_EDIT_SELECTIONREDO
MENUITEM SEPARATOR
MENUITEM "Select &All", ID_EDIT_SELECTALL
MENUITEM "Select mid &Markers\tCtrl+A", ID_EDIT_SELECTMIDMARKERS
MENUITEM "Select between &Markers\tCtrl+A", ID_EDIT_SELECTMIDMARKERS
MENUITEM "Reselect Clipboard\tCtrl+B", ID_EDIT_RESELECTCLIPBOARD
MENUITEM SEPARATOR
MENUITEM "&Copy\tCtrl+C", ID_TASEDIT_COPY
@ -284,13 +284,14 @@ BEGIN
MENUITEM "&Empty new Marker Notes", ID_CONFIG_EMPTYNEWMARKERNOTES
MENUITEM SEPARATOR
MENUITEM "&Combine consecutive Recordings", ID_CONFIG_COMBINECONSECUTIVERECORDINGS
MENUITEM "&Use 1P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING
MENUITEM "Use 1&P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING
MENUITEM "Use &Input keys for ColumnSet", ID_CONFIG_USEINPUTKEYSFORCOLUMNSET
MENUITEM SEPARATOR
MENUITEM "Allow &keyboard controls in Listview", ID_CONFIG_KEYBOARDCONTROLSINLISTVIEW
MENUITEM "&Superimpose affects copy/paste", ID_CONFIG_SUPERIMPOSE_AFFECTS_PASTE
MENUITEM SEPARATOR
MENUITEM "Mute &Turbo", ID_CONFIG_MUTETURBO
MENUITEM "Silent autosave", ID_CONFIG_SILENTAUTOSAVE
END
POPUP "&Help"
BEGIN
@ -1385,46 +1386,49 @@ CAPTION "TAS Editor"
MENU TASEDITMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "",IDC_PROGRESS_BUTTON,"Button",BS_OWNERDRAW,314,37,116,12
CONTROL "",IDC_BRANCHES_BUTTON,"Button",BS_OWNERDRAW,320,168,104,11
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER,6,15,299,362
GROUPBOX " Playback ",IDC_STATIC,310,1,123,62,BS_CENTER,WS_EX_RIGHT
GROUPBOX " Recorder ",IDC_STATIC,310,64,123,46,BS_CENTER,WS_EX_RIGHT
GROUPBOX " Splicer ",IDC_STATIC,310,111,123,30,BS_CENTER,WS_EX_RIGHT
GROUPBOX " Bookmarks ",IDC_BOOKMARKS_BOX,310,170,123,103,BS_CENTER,WS_EX_RIGHT
GROUPBOX " Lua ",IDC_STATIC,310,142,123,26,BS_CENTER,WS_EX_RIGHT
GROUPBOX " History ",IDC_STATIC,310,273,123,99,BS_CENTER,WS_EX_RIGHT
PUSHBUTTON "<<",TASEDIT_REWIND_FULL,314,10,23,14,NOT WS_TABSTOP
PUSHBUTTON "<",TASEDIT_REWIND,337,10,23,14,NOT WS_TABSTOP
PUSHBUTTON "||",TASEDIT_PLAYSTOP,360,10,23,14,NOT WS_TABSTOP
PUSHBUTTON ">",TASEDIT_FORWARD,383,10,23,14,NOT WS_TABSTOP
PUSHBUTTON ">>",TASEDIT_FORWARD_FULL,406,10,23,14,NOT WS_TABSTOP
CONTROL "",IDC_PROGRESS_BUTTON,"Button",BS_OWNERDRAW,314,37,116,12
CONTROL "",IDC_BRANCHES_BUTTON,"Button",BS_OWNERDRAW,320,149,104,11
CONTROL "",IDC_PROGRESS1,"msctls_progress32",PBS_SMOOTH | WS_BORDER,314,40,115,6
CONTROL " Follow cursor",CHECK_FOLLOW_CURSOR,"Button",BS_AUTOCHECKBOX,316,26,56,12
CONTROL " Auto-restore last position",CHECK_AUTORESTORE_PLAYBACK,
"Button",BS_AUTOCHECKBOX,316,49,105,12
GROUPBOX " Recorder ",IDC_STATIC,310,64,123,48,BS_CENTER,WS_EX_RIGHT
GROUPBOX " Splicer ",IDC_STATIC,310,113,123,35,BS_CENTER,WS_EX_RIGHT
GROUPBOX " Bookmarks ",IDC_BOOKMARKS_BOX,310,150,123,103,BS_CENTER,WS_EX_RIGHT
CONTROL "",IDC_BOOKMARKSLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSCROLL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | NOT WS_VISIBLE | WS_BORDER,315,160,113,89
CONTROL "",IDC_HISTORYLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER,315,265,113,102
CONTROL " All",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,316,86,27,10
CONTROL " 1P",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,372,86,25,10
CONTROL " 2P",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,402,86,24,10
CONTROL " 3P",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,372,98,25,10
CONTROL " 4P",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,402,98,24,10
CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,372,74,55,10
GROUPBOX " History ",IDC_STATIC,310,255,123,116,BS_CENTER,WS_EX_RIGHT
CONTROL "",IDC_BOOKMARKSLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSCROLL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | NOT WS_VISIBLE | WS_BORDER,315,179,113,89
CONTROL "",IDC_HISTORYLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER,315,283,113,85
CONTROL " All",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,316,85,27,10
CONTROL " 1P",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,372,85,25,10
CONTROL " 2P",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,402,85,24,10
CONTROL " 3P",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,372,97,25,10
CONTROL " 4P",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,402,97,24,10
CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,372,73,55,10
PUSHBUTTON "<<",TASEDIT_PREV_MARKER,315,376,23,14,NOT WS_TABSTOP
PUSHBUTTON "Similar",TASEDIT_FIND_BEST_SIMILAR_MARKER,338,376,34,14,NOT WS_TABSTOP
PUSHBUTTON "More",TASEDIT_FIND_NEXT_SIMILAR_MARKER,372,376,34,14,NOT WS_TABSTOP
PUSHBUTTON ">>",TASEDIT_NEXT_MARKER,405,376,23,14,NOT WS_TABSTOP
CONTROL "",IDC_JUMP_PLAYBACK_BUTTON,"Button",BS_OWNERDRAW,5,1,59,13
EDITTEXT IDC_PLAYBACK_MARKER_EDIT,65,1,240,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
RTEXT "Marker 0",IDC_PLAYBACK_MARKER,3,3,60,10,0,WS_EX_RIGHT
RTEXT "Marker 0",IDC_PLAYBACK_MARKER,4,3,58,10,0,WS_EX_RIGHT
CONTROL "",IDC_JUMP_SELECTION_BUTTON,"Button",BS_OWNERDRAW,5,377,59,13
EDITTEXT IDC_SELECTION_MARKER_EDIT,65,377,240,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
RTEXT "Marker 99999",IDC_SELECTION_MARKER,3,379,60,10,0,WS_EX_RIGHT
CONTROL "",IDC_BRANCHES_BITMAP,"Static",SS_OWNERDRAW | SS_NOTIFY | SS_REALSIZEIMAGE | NOT WS_VISIBLE,315,160,113,89
RTEXT "Marker 99999",IDC_SELECTION_MARKER,4,379,58,10,0,WS_EX_RIGHT
CONTROL "",IDC_BRANCHES_BITMAP,"Static",SS_OWNERDRAW | SS_NOTIFY | SS_REALSIZEIMAGE | NOT WS_VISIBLE,315,179,113,89
CONTROL " Turbo seek",CHECK_TURBO_SEEK,"Button",BS_AUTOCHECKBOX,379,26,50,12
LTEXT "Selection: 0 rows, 16 columns",IDC_TEXT_SELECTION,316,123,114,10
LTEXT "Clipboard: 0 rows, 16 columns",IDC_TEXT_CLIPBOARD,316,134,114,10
CONTROL " Recording",IDC_RECORDING,"Button",BS_AUTO3STATE,316,74,49,10
LTEXT "Selection: 0 rows, 16 columns",IDC_TEXT_SELECTION,316,119,114,10
LTEXT "Clipboard: 0 rows, 16 columns",IDC_TEXT_CLIPBOARD,315,129,114,10
CONTROL " Recording",IDC_RECORDING,"Button",BS_AUTO3STATE,316,73,49,10
PUSHBUTTON "Run function",TASEDIT_RUN_MANUAL,315,151,54,14,NOT WS_TABSTOP
CONTROL "Auto function",IDC_RUN_AUTO,"Button",BS_AUTO3STATE,375,153,55,10
END
IDD_TASEDIT_ABOUT DIALOGEX 0, 0, 208, 70

View File

Before

Width:  |  Height:  |  Size: 894 B

After

Width:  |  Height:  |  Size: 894 B

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -439,6 +439,8 @@
#define IDC_EDIT2 1154
#define IDC_PLAYBACK_MARKER_EDIT 1154
#define IDC_JUMP_SELECTION_BUTTON 1155
#define TASEDIT_PREV_MARKER2 1156
#define TASEDIT_RUN_MANUAL 1156
#define CHECK_SOUND_MUTETURBO 1179
#define IDC_EDIT_AUTHOR 1180
#define MEMW_STATIC 1181
@ -486,6 +488,8 @@
#define IDC_RAMLIST 1205
#define IDC_CHECK4 1205
#define IDC_CHECK_BOOKMARKS 1205
#define IDC_SUPERIMPOSE2 1205
#define IDC_RUN_AUTO 1205
#define IDC_C_SEARCH 1206
#define IDC_CHECK5 1206
#define IDC_CHECK_GREENZONE 1206
@ -965,6 +969,7 @@
#define ID_EDIT_FINDNOTE 40513
#define ID_CONFIG_REAPPEARINGFINDNOTEDIALOG 40514
#define ID_VIEW_FINDNOTE 40515
#define ID_CONFIG_SILENTAUTOSAVE 40516
#define IDC_DEBUGGER_ICONTRAY 55535
#define MW_ValueLabel2 65423
#define MW_ValueLabel1 65426
@ -974,7 +979,7 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 202
#define _APS_NEXT_COMMAND_VALUE 40516
#define _APS_NEXT_COMMAND_VALUE 40517
#define _APS_NEXT_CONTROL_VALUE 1275
#define _APS_NEXT_SYMED_VALUE 101
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +1,16 @@
#define GREENZONE_CAPACITY_MIN 1
#define GREENZONE_CAPACITY_MAX 50000
#define GREENZONE_CAPACITY_DEFAULT 10000
#define UNDO_LEVELS_MIN 1
#define UNDO_LEVELS_MAX 999
#define UNDO_LEVELS_DEFAULT 99
#define AUTOSAVE_PERIOD_MIN 0 // 0 = no autosave
#define AUTOSAVE_PERIOD_MAX 60 // 1 hour
#define AUTOSAVE_PERIOD_DEFAULT 10 // in minutes
#define EXPORT_TYPE_1P 0
#define EXPORT_TYPE_2P 1
#define EXPORT_TYPE_FOURSCORE 2
#define MARKER_NOTE_EDIT_NONE 0
#define MARKER_NOTE_EDIT_UPPER 1
#define MARKER_NOTE_EDIT_LOWER 2
enum ECONTEXTMENU
{
CONTEXTMENU_STRAY = 0,
CONTEXTMENU_SELECTED = 1,
};
void SingleClick(LPNMITEMACTIVATE info);
void DoubleClick(LPNMITEMACTIVATE info);
bool EnterTasEdit();
void InitDialog();
bool ExitTasEdit();
void UpdateTasEdit();
void RedrawTasedit();
void RedrawWindowCaption();
void ToggleJoypadBit(int column_index, int row_index, UINT KeyFlags);
void OpenProject();
bool LoadProject(char* fullname);
void LoadRecentProject(int slot);
bool SaveProject();
bool SaveProjectAs();
void SaveCompact();
@ -59,6 +36,3 @@ void ClearTaseditInput();
void UpdateMarkerNote();
void UpdateRecentProjectsMenu();
void UpdateRecentProjectsArray(const char* addString);
void RemoveRecentProject(unsigned int which);

View File

@ -1,14 +1,11 @@
//Implementation file of Bookmark class
#include "taseditproj.h"
#include "taseditor_project.h"
#include "zlib.h"
extern TASEDITOR_CONFIG taseditor_config;
extern GREENZONE greenzone;
extern INPUT_HISTORY history;
extern bool TASEdit_branch_scr_hud;
extern bool TASEdit_enable_hot_changes;
extern uint8 *XBuf;
extern uint8 *XBackBuf;
@ -27,9 +24,9 @@ void BOOKMARK::init()
void BOOKMARK::set()
{
// copy input and hotchanges
snapshot.init(currMovieData, TASEdit_enable_hot_changes);
snapshot.init(currMovieData, taseditor_config.enable_hot_changes);
snapshot.jump_frame = currFrameCounter;
if (TASEdit_enable_hot_changes)
if (taseditor_config.enable_hot_changes)
snapshot.copyHotChanges(&history.GetCurrentSnapshot());
// copy savestate
savestate = greenzone.savestates[currFrameCounter];
@ -37,7 +34,7 @@ void BOOKMARK::set()
uLongf comprlen = (SCREENSHOT_SIZE>>9)+12 + SCREENSHOT_SIZE;
saved_screenshot.resize(comprlen);
// compress screenshot data
if (TASEdit_branch_scr_hud)
if (taseditor_config.branch_scr_hud)
compress(&saved_screenshot[0], &comprlen, XBuf, SCREENSHOT_SIZE);
else
compress(&saved_screenshot[0], &comprlen, XBackBuf, SCREENSHOT_SIZE);

View File

@ -1,32 +1,25 @@
//Implementation file of Bookmarks class
#include "taseditproj.h"
#include "taseditor_project.h"
#include "utils/xstring.h"
#include "zlib.h"
#pragma comment(lib, "msimg32.lib")
extern HWND hwndTasEdit;
LRESULT APIENTRY BookmarksListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT APIENTRY BranchesBitmapWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
WNDPROC hwndBookmarksList_oldWndProc, hwndBranchesBitmap_oldWndProc;
extern SCREENSHOT_DISPLAY screenshot_display;
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern POPUP_DISPLAY popup_display;
extern PLAYBACK playback;
extern TASEDIT_SELECTION selection;
extern TASEDITOR_SELECTION selection;
extern GREENZONE greenzone;
extern TASEDIT_PROJECT project;
extern TASEDITOR_PROJECT project;
extern INPUT_HISTORY history;
extern TASEDIT_LIST tasedit_list;
extern TASEDITOR_LIST list;
extern MARKERS current_markers;
extern bool TASEdit_show_lag_frames;
extern bool TASEdit_bind_markers;
extern bool TASEdit_branch_full_movie;
extern bool TASEdit_branch_only_when_rec;
extern bool TASEdit_view_branches_tree;
extern void UpdateMarkerNote();
// resources
@ -59,16 +52,16 @@ BOOKMARKS::BOOKMARKS()
void BOOKMARKS::init()
{
free();
hwndBookmarksList = GetDlgItem(hwndTasEdit, IDC_BOOKMARKSLIST);
hwndBookmarks = GetDlgItem(hwndTasEdit, IDC_BOOKMARKS_BOX);
hwndBranchesBitmap = GetDlgItem(hwndTasEdit, IDC_BRANCHES_BITMAP);
hwndBookmarksList = GetDlgItem(taseditor_window.hwndTasEditor, IDC_BOOKMARKSLIST);
hwndBookmarks = GetDlgItem(taseditor_window.hwndTasEditor, IDC_BOOKMARKS_BOX);
hwndBranchesBitmap = GetDlgItem(taseditor_window.hwndTasEditor, IDC_BRANCHES_BITMAP);
// prepare bookmarks listview
ListView_SetExtendedListViewStyleEx(hwndBookmarksList, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
// subclass the listview
hwndBookmarksList_oldWndProc = (WNDPROC)SetWindowLong(hwndBookmarksList, GWL_WNDPROC, (LONG)BookmarksListWndProc);
// setup same images for the listview
ListView_SetImageList(hwndBookmarksList, tasedit_list.himglist, LVSIL_SMALL);
ListView_SetImageList(hwndBookmarksList, list.himglist, LVSIL_SMALL);
// setup columns
LVCOLUMN lvc;
// icons column
@ -288,8 +281,8 @@ void BOOKMARKS::set(int slot)
bookmarks_array[slot].set();
// if this screenshot is currently shown - reinit and redraw it
if (screenshot_display.screenshot_currently_shown == slot)
screenshot_display.screenshot_currently_shown = ITEM_UNDER_MOUSE_NONE;
if (popup_display.screenshot_currently_shown == slot)
popup_display.screenshot_currently_shown = ITEM_UNDER_MOUSE_NONE;
int parent;
// inherit current branch
@ -384,7 +377,7 @@ void BOOKMARKS::set(int slot)
// switch current branch to this branch
if (slot != current_branch && current_branch >= 0)
{
tasedit_list.RedrawRow(bookmarks_array[current_branch].snapshot.jump_frame);
list.RedrawRow(bookmarks_array[current_branch].snapshot.jump_frame);
RedrawChangedBookmarks(bookmarks_array[current_branch].snapshot.jump_frame);
}
if (slot != current_branch || changes_since_current_branch)
@ -395,10 +388,10 @@ void BOOKMARKS::set(int slot)
if (previous_frame >= 0 && previous_frame != currFrameCounter)
{
tasedit_list.RedrawRow(previous_frame);
list.RedrawRow(previous_frame);
RedrawChangedBookmarks(previous_frame);
}
tasedit_list.RedrawRow(currFrameCounter);
list.RedrawRow(currFrameCounter);
RedrawChangedBookmarks(currFrameCounter);
FCEU_DispMessage("Branch %d saved.", 0, slot);
@ -412,14 +405,14 @@ void BOOKMARKS::jump(int slot)
int frame = bookmarks_array[slot].snapshot.jump_frame;
playback.jump(frame);
if (playback.GetPauseFrame())
tasedit_list.FollowPauseframe();
list.FollowPauseframe();
bookmarks_array[slot].jump();
}
}
void BOOKMARKS::unleash(int slot)
{
if (TASEdit_branch_only_when_rec && movie_readonly)
if (taseditor_config.branch_only_when_rec && movie_readonly)
{
jump(slot);
return;
@ -431,10 +424,10 @@ void BOOKMARKS::unleash(int slot)
bool markers_changed = false;
// revert current movie to the input_snapshot state
if (TASEdit_branch_full_movie)
if (taseditor_config.branch_full_movie)
{
// update Markers
if (TASEdit_bind_markers)
if (taseditor_config.bind_markers)
{
if (bookmarks_array[slot].snapshot.my_markers.checkMarkersDiff(current_markers))
{
@ -449,7 +442,7 @@ void BOOKMARKS::unleash(int slot)
{
// restore entire movie
bookmarks_array[slot].snapshot.toMovie(currMovieData, first_change);
tasedit_list.update();
list.update();
selection.must_find_current_marker = playback.must_find_current_marker = true;
history.RegisterBranching(MODTYPE_BRANCH_0 + slot, first_change, slot);
greenzone.Invalidate(first_change);
@ -458,7 +451,7 @@ void BOOKMARKS::unleash(int slot)
{
selection.must_find_current_marker = playback.must_find_current_marker = true;
history.RegisterBranching(MODTYPE_BRANCH_MARKERS_0 + slot, first_change, slot);
tasedit_list.RedrawList();
list.RedrawList();
bookmarks_array[slot].unleashed();
} else
{
@ -468,7 +461,7 @@ void BOOKMARKS::unleash(int slot)
} else if (jump_frame > 0)
{
// update Markers
if (TASEdit_bind_markers)
if (taseditor_config.bind_markers)
{
if (bookmarks_array[slot].snapshot.my_markers.checkMarkersDiff(current_markers, jump_frame))
{
@ -484,7 +477,7 @@ void BOOKMARKS::unleash(int slot)
// restore movie up to and not including bookmarked frame (imitating old TASing method)
if (currMovieData.getNumRecords() <= jump_frame) currMovieData.records.resize(jump_frame+1); // but if old movie is shorter, include last frame as blank frame
bookmarks_array[slot].snapshot.toMovie(currMovieData, first_change, jump_frame-1);
tasedit_list.update();
list.update();
selection.must_find_current_marker = playback.must_find_current_marker = true;
history.RegisterBranching(MODTYPE_BRANCH_0 + slot, first_change, slot);
greenzone.Invalidate(first_change);
@ -493,7 +486,7 @@ void BOOKMARKS::unleash(int slot)
{
selection.must_find_current_marker = playback.must_find_current_marker = true;
history.RegisterBranching(MODTYPE_BRANCH_MARKERS_0 + slot, first_change, slot);
tasedit_list.RedrawList();
list.RedrawList();
bookmarks_array[slot].unleashed();
} else
{
@ -522,9 +515,9 @@ void BOOKMARKS::unleash(int slot)
// switch current branch to this branch
if (slot != current_branch && current_branch >= 0)
{
tasedit_list.RedrawRow(bookmarks_array[current_branch].snapshot.jump_frame);
list.RedrawRow(bookmarks_array[current_branch].snapshot.jump_frame);
RedrawChangedBookmarks(bookmarks_array[current_branch].snapshot.jump_frame);
tasedit_list.RedrawRow(bookmarks_array[slot].snapshot.jump_frame);
list.RedrawRow(bookmarks_array[slot].snapshot.jump_frame);
RedrawChangedBookmarks(bookmarks_array[slot].snapshot.jump_frame);
}
current_branch = slot;
@ -605,13 +598,13 @@ error:
void BOOKMARKS::RedrawBookmarksCaption()
{
int prev_edit_mode = edit_mode;
if (TASEdit_branch_only_when_rec && movie_readonly)
if (taseditor_config.branch_only_when_rec && movie_readonly)
{
edit_mode = EDIT_MODE_BOOKMARKS;
ShowWindow(hwndBranchesBitmap, SW_HIDE);
ShowWindow(hwndBookmarksList, SW_SHOW);
RedrawBookmarksList();
} else if (TASEdit_view_branches_tree)
} else if (taseditor_config.view_branches_tree)
{
edit_mode = EDIT_MODE_BRANCHES;
ShowWindow(hwndBookmarksList, SW_HIDE);
@ -937,12 +930,12 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
if (bookmarks_array[cell_y].flash_phase)
msg->clrText = bookmark_flash_colors[bookmarks_array[cell_y].flash_type][bookmarks_array[cell_y].flash_phase];
if (cell_x == BOOKMARKS_COLUMN_FRAME || (TASEdit_branch_only_when_rec && movie_readonly && cell_x == BOOKMARKS_COLUMN_TIME))
if (cell_x == BOOKMARKS_COLUMN_FRAME || (taseditor_config.branch_only_when_rec && movie_readonly && cell_x == BOOKMARKS_COLUMN_TIME))
{
if (bookmarks_array[cell_y].not_empty)
{
// frame number
SelectObject(msg->nmcd.hdc, tasedit_list.hMainListFont);
SelectObject(msg->nmcd.hdc, list.hMainListFont);
int frame = bookmarks_array[cell_y].snapshot.jump_frame;
if (frame == currFrameCounter || frame == (playback.GetPauseFrame() - 1))
{
@ -952,7 +945,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
{
if (!greenzone.savestates[frame].empty())
{
if (TASEdit_show_lag_frames && greenzone.lag_history[frame])
if (taseditor_config.show_lag_frames && greenzone.lag_history[frame])
msg->clrTextBk = LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = GREENZONE_FRAMENUM_COLOR;
@ -961,7 +954,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
|| (!greenzone.savestates[frame & EVERY4TH].empty() && (int)greenzone.savestates.size() > (frame | 0x3) + 1 && !greenzone.savestates[(frame | 0x3) + 1].empty())
|| (!greenzone.savestates[frame & EVERY2ND].empty() && !greenzone.savestates[(frame | 0x1) + 1].empty()))
{
if (TASEdit_show_lag_frames && greenzone.lag_history[frame])
if (taseditor_config.show_lag_frames && greenzone.lag_history[frame])
msg->clrTextBk = PALE_LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = PALE_GREENZONE_FRAMENUM_COLOR;
@ -973,7 +966,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
if (bookmarks_array[cell_y].not_empty)
{
// frame number
SelectObject(msg->nmcd.hdc, tasedit_list.hMainListFont);
SelectObject(msg->nmcd.hdc, list.hMainListFont);
int frame = bookmarks_array[cell_y].snapshot.jump_frame;
if (frame == currFrameCounter || frame == (playback.GetPauseFrame() - 1))
{
@ -983,7 +976,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
{
if (!greenzone.savestates[frame].empty())
{
if (TASEdit_show_lag_frames && greenzone.lag_history[frame])
if (taseditor_config.show_lag_frames && greenzone.lag_history[frame])
msg->clrTextBk = LAG_INPUT_COLOR1;
else
msg->clrTextBk = GREENZONE_INPUT_COLOR1;
@ -992,7 +985,7 @@ LONG BOOKMARKS::CustomDraw(NMLVCUSTOMDRAW* msg)
|| (!greenzone.savestates[frame & EVERY4TH].empty() && (int)greenzone.savestates.size() > (frame | 0x3) + 1 && !greenzone.savestates[(frame | 0x3) + 1].empty())
|| (!greenzone.savestates[frame & EVERY2ND].empty() && !greenzone.savestates[(frame | 0x1) + 1].empty()))
{
if (TASEdit_show_lag_frames && greenzone.lag_history[frame])
if (taseditor_config.show_lag_frames && greenzone.lag_history[frame])
msg->clrTextBk = PALE_LAG_INPUT_COLOR1;
else
msg->clrTextBk = PALE_GREENZONE_INPUT_COLOR1;
@ -1011,9 +1004,9 @@ void BOOKMARKS::LeftClick(LPNMITEMACTIVATE info)
int cell_y = info->iItem;
if (cell_y >= 0 && cell_x >= 0)
{
if (cell_x <= BOOKMARKS_COLUMN_FRAME || (TASEdit_branch_only_when_rec && movie_readonly))
if (cell_x <= BOOKMARKS_COLUMN_FRAME || (taseditor_config.branch_only_when_rec && movie_readonly))
jump((cell_y + 1) % TOTAL_BOOKMARKS);
else if (cell_x == BOOKMARKS_COLUMN_TIME && (!TASEdit_branch_only_when_rec || !movie_readonly))
else if (cell_x == BOOKMARKS_COLUMN_TIME && (!taseditor_config.branch_only_when_rec || !movie_readonly))
unleash((cell_y + 1) % TOTAL_BOOKMARKS);
}
// remove selection

View File

@ -1,16 +1,13 @@
//Implementation file of Greenzone class
#include "taseditproj.h"
#include "taseditor_project.h"
#include "state.h"
#include "zlib.h"
extern TASEDIT_PROJECT project;
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_PROJECT project;
extern PLAYBACK playback;
extern BOOKMARKS bookmarks;
extern TASEDIT_LIST tasedit_list;
extern int TASEdit_greenzone_capacity;
extern bool TASEdit_restore_position;
extern TASEDITOR_LIST list;
char greenzone_save_id[GREENZONE_ID_LEN] = "GREENZONE";
char greenzone_skipsave_id[GREENZONE_ID_LEN] = "GREENZONX";
@ -104,12 +101,12 @@ void GREENZONE::storeTasSavestate(int frame)
void GREENZONE::GreenzoneCleaning()
{
int i = currFrameCounter - TASEdit_greenzone_capacity;
int i = currFrameCounter - taseditor_config.greenzone_capacity;
bool changed = false;
if (i < 0) goto finish;
int limit;
// 2x of 1/2
limit = i - 2 * TASEdit_greenzone_capacity;
limit = i - 2 * taseditor_config.greenzone_capacity;
if (limit < -1) limit = -1;
for (; i > limit; i--)
{
@ -121,7 +118,7 @@ void GREENZONE::GreenzoneCleaning()
}
if (i < 0) goto finish;
// 4x of 1/4
limit = i - 4 * TASEdit_greenzone_capacity;
limit = i - 4 * taseditor_config.greenzone_capacity;
if (limit < -1) limit = -1;
for (; i > limit; i--)
{
@ -133,7 +130,7 @@ void GREENZONE::GreenzoneCleaning()
}
if (i < 0) goto finish;
// 8x of 1/8
limit = i - 8 * TASEdit_greenzone_capacity;
limit = i - 8 * taseditor_config.greenzone_capacity;
if (limit < -1) limit = -1;
for (; i > limit; i--)
{
@ -145,7 +142,7 @@ void GREENZONE::GreenzoneCleaning()
}
if (i < 0) goto finish;
// 16x of 1/16
limit = i - 16 * TASEdit_greenzone_capacity;
limit = i - 16 * taseditor_config.greenzone_capacity;
if (limit < -1) limit = -1;
for (; i > limit; i--)
{
@ -167,7 +164,7 @@ void GREENZONE::GreenzoneCleaning()
finish:
if (changed)
{
tasedit_list.RedrawList();
list.RedrawList();
bookmarks.RedrawBookmarksList();
}
// shedule next cleaning
@ -299,11 +296,11 @@ bool GREENZONE::load(EMUFILE *is)
if (read32le(&frame, is))
{
currFrameCounter = frame;
int greenzone_tail_frame = currFrameCounter - TASEdit_greenzone_capacity;
int greenzone_tail_frame2 = greenzone_tail_frame - 2 * TASEdit_greenzone_capacity;
int greenzone_tail_frame4 = greenzone_tail_frame - 4 * TASEdit_greenzone_capacity;
int greenzone_tail_frame8 = greenzone_tail_frame - 8 * TASEdit_greenzone_capacity;
int greenzone_tail_frame16 = greenzone_tail_frame - 16 * TASEdit_greenzone_capacity;
int greenzone_tail_frame = currFrameCounter - taseditor_config.greenzone_capacity;
int greenzone_tail_frame2 = greenzone_tail_frame - 2 * taseditor_config.greenzone_capacity;
int greenzone_tail_frame4 = greenzone_tail_frame - 4 * taseditor_config.greenzone_capacity;
int greenzone_tail_frame8 = greenzone_tail_frame - 8 * taseditor_config.greenzone_capacity;
int greenzone_tail_frame16 = greenzone_tail_frame - 16 * taseditor_config.greenzone_capacity;
// read savestates
while(1)
{
@ -383,7 +380,7 @@ void GREENZONE::InvalidateAndCheck(int after)
// either set playback cursor to the end of greenzone or run seeking to restore playback position
if (currFrameCounter >= greenZoneCount)
{
if (TASEdit_restore_position)
if (taseditor_config.restore_position)
playback.restorePosition();
else
playback.jump(greenZoneCount-1);
@ -391,7 +388,7 @@ void GREENZONE::InvalidateAndCheck(int after)
}
}
// redraw list even if greenzone didn't change
tasedit_list.RedrawList();
list.RedrawList();
bookmarks.RedrawBookmarksList();
}
// This version doesn't restore playback, may be used only by Branching and Recording functions!
@ -407,7 +404,7 @@ void GREENZONE::Invalidate(int after)
}
}
// redraw list even if greenzone didn't change
tasedit_list.RedrawList();
list.RedrawList();
bookmarks.RedrawBookmarksList();
}

View File

@ -1,28 +1,22 @@
//Implementation file of Input History class (Undo feature)
#include "taseditproj.h"
extern HWND hwndTasEdit;
extern bool TASEdit_bind_markers;
extern bool TASEdit_enable_hot_changes;
extern bool TASEdit_branch_full_movie;
extern bool TASEdit_combine_consecutive_rec;
extern int TasEdit_undo_levels;
#include "taseditor_project.h"
LRESULT APIENTRY HistoryListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
WNDPROC hwndHistoryList_oldWndProc;
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern MARKERS current_markers;
extern BOOKMARKS bookmarks;
extern PLAYBACK playback;
extern TASEDIT_SELECTION selection;
extern TASEDITOR_SELECTION selection;
extern GREENZONE greenzone;
extern TASEDIT_PROJECT project;
extern TASEDIT_LIST tasedit_list;
extern TASEDITOR_PROJECT project;
extern TASEDITOR_LIST list;
char history_save_id[HISTORY_ID_LEN] = "HISTORY";
char history_skipsave_id[HISTORY_ID_LEN] = "HISTORX";
char modCaptions[40][20] = {" Init",
char modCaptions[41][20] = {" Init",
" Change",
" Set",
" Unset",
@ -61,7 +55,8 @@ char modCaptions[40][20] = {" Init",
" Marker Rename",
" LUA Marker Set",
" LUA Marker Unset",
" LUA Marker Rename" };
" LUA Marker Rename",
" LUA Change" };
char joypadCaptions[4][5] = {"(1P)", "(2P)", "(3P)", "(4P)"};
INPUT_HISTORY::INPUT_HISTORY()
@ -71,7 +66,7 @@ INPUT_HISTORY::INPUT_HISTORY()
void INPUT_HISTORY::init()
{
// prepare the history listview
hwndHistoryList = GetDlgItem(hwndTasEdit, IDC_HISTORYLIST);
hwndHistoryList = GetDlgItem(taseditor_window.hwndTasEditor, IDC_HISTORYLIST);
ListView_SetExtendedListViewStyleEx(hwndHistoryList, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
// subclass the listview
hwndHistoryList_oldWndProc = (WNDPROC)SetWindowLong(hwndHistoryList, GWL_WNDPROC, (LONG)HistoryListWndProc);
@ -80,8 +75,6 @@ void INPUT_HISTORY::init()
lvc.cx = 500;
lvc.fmt = LVCFMT_LEFT;
ListView_InsertColumn(hwndHistoryList, 0, &lvc);
reset();
}
void INPUT_HISTORY::free()
{
@ -92,7 +85,7 @@ void INPUT_HISTORY::reset()
{
free();
// init vars
history_size = TasEdit_undo_levels + 1;
history_size = taseditor_config.undo_levels + 1;
undo_hint_pos = old_undo_hint_pos = undo_hint_time = -1;
old_show_undo_hint = show_undo_hint = false;
input_snapshots.resize(history_size);
@ -100,7 +93,7 @@ void INPUT_HISTORY::reset()
history_cursor_pos = -1;
// create initial snapshot
INPUT_SNAPSHOT inp;
inp.init(currMovieData, TASEdit_enable_hot_changes);
inp.init(currMovieData, taseditor_config.enable_hot_changes);
strcat(inp.description, modCaptions[0]);
inp.jump_frame = -1;
AddInputSnapshotToHistory(inp);
@ -111,7 +104,7 @@ void INPUT_HISTORY::update()
{
// update undo_hint
if (old_undo_hint_pos != undo_hint_pos && old_undo_hint_pos >= 0)
tasedit_list.RedrawRow(old_undo_hint_pos); // not changing bookmarks list
list.RedrawRow(old_undo_hint_pos); // not changing bookmarks list
old_undo_hint_pos = undo_hint_pos;
old_show_undo_hint = show_undo_hint;
show_undo_hint = false;
@ -123,7 +116,7 @@ void INPUT_HISTORY::update()
undo_hint_pos = -1; // finished hinting
}
if (old_show_undo_hint != show_undo_hint)
tasedit_list.RedrawRow(undo_hint_pos); // not changing bookmarks list
list.RedrawRow(undo_hint_pos); // not changing bookmarks list
@ -152,7 +145,7 @@ int INPUT_HISTORY::jump(int new_pos)
// update markers
bool markers_changed = false;
if (TASEdit_bind_markers)
if (taseditor_config.bind_markers)
{
if (input_snapshots[real_pos].my_markers.checkMarkersDiff(current_markers))
{
@ -175,12 +168,12 @@ int INPUT_HISTORY::jump(int new_pos)
current_markers.update();
selection.must_find_current_marker = playback.must_find_current_marker = true;
bookmarks.ChangesMadeSinceBranch();
tasedit_list.RedrawList();
tasedit_list.FollowUndo();
} else if (TASEdit_enable_hot_changes)
list.RedrawList();
list.FollowUndo();
} else if (taseditor_config.enable_hot_changes)
{
// when using Hot Changes, list should be always redrawn, because old changes become less hot
tasedit_list.RedrawList();
list.RedrawList();
}
return first_change;
@ -243,7 +236,7 @@ int INPUT_HISTORY::RegisterChanges(int mod_type, int start, int end)
{
// create new input shanshot
INPUT_SNAPSHOT inp;
inp.init(currMovieData, TASEdit_enable_hot_changes);
inp.init(currMovieData, taseditor_config.enable_hot_changes);
inp.mod_type = mod_type;
// check if there are input differences from latest snapshot
int real_pos = (history_start_pos + history_cursor_pos) % history_size;
@ -288,7 +281,7 @@ int INPUT_HISTORY::RegisterChanges(int mod_type, int start, int end)
strcat(inp.description, framenum);
}
// set hotchanges
if (TASEdit_enable_hot_changes)
if (taseditor_config.enable_hot_changes)
{
// inherit previous hotchanges and set new changes
switch (mod_type)
@ -327,7 +320,7 @@ void INPUT_HISTORY::RegisterMarkersChange(int mod_type, int start, int end)
{
// create new input shanshot
INPUT_SNAPSHOT inp;
inp.init(currMovieData, TASEdit_enable_hot_changes);
inp.init(currMovieData, taseditor_config.enable_hot_changes);
inp.mod_type = mod_type;
// fill description:
strcat(inp.description, modCaptions[mod_type]);
@ -343,7 +336,7 @@ void INPUT_HISTORY::RegisterMarkersChange(int mod_type, int start, int end)
strcat(inp.description, "-");
strcat(inp.description, framenum);
}
if (TASEdit_enable_hot_changes)
if (taseditor_config.enable_hot_changes)
inp.copyHotChanges(&GetCurrentSnapshot());
AddInputSnapshotToHistory(inp);
bookmarks.ChangesMadeSinceBranch();
@ -353,19 +346,19 @@ void INPUT_HISTORY::RegisterBranching(int mod_type, int first_change, int slot)
{
// create new input snapshot
INPUT_SNAPSHOT inp;
inp.init(currMovieData, TASEdit_enable_hot_changes);
inp.init(currMovieData, taseditor_config.enable_hot_changes);
// fill description: modification type + time of the Branch
inp.mod_type = mod_type;
strcat(inp.description, modCaptions[mod_type]);
strcat(inp.description, bookmarks.bookmarks_array[slot].snapshot.description);
inp.jump_frame = first_change;
if (TASEdit_enable_hot_changes)
if (taseditor_config.enable_hot_changes)
{
if (mod_type < MODTYPE_BRANCH_MARKERS_0)
{
// input was changed
// copy hotchanges of the Branch
if (TASEdit_branch_full_movie)
if (taseditor_config.branch_full_movie)
{
inp.copyHotChanges(&bookmarks.bookmarks_array[slot].snapshot);
} else
@ -385,13 +378,13 @@ void INPUT_HISTORY::RegisterRecording(int frame_of_change)
{
int real_pos = (history_start_pos + history_cursor_pos) % history_size;
INPUT_SNAPSHOT inp;
inp.init(currMovieData, TASEdit_enable_hot_changes);
inp.init(currMovieData, taseditor_config.enable_hot_changes);
inp.fillJoypadsDiff(input_snapshots[real_pos], frame_of_change);
inp.mod_type = MODTYPE_RECORD;
strcat(inp.description, modCaptions[MODTYPE_RECORD]);
char framenum[11];
// check if current snapshot is also Recording and maybe it is consecutive recording
if (TASEdit_combine_consecutive_rec && input_snapshots[real_pos].mod_type == MODTYPE_RECORD && input_snapshots[real_pos].rec_end_frame+1 == frame_of_change && input_snapshots[real_pos].rec_joypad_diff_bits == inp.rec_joypad_diff_bits)
if (taseditor_config.combine_consecutive_rec && input_snapshots[real_pos].mod_type == MODTYPE_RECORD && input_snapshots[real_pos].rec_end_frame+1 == frame_of_change && input_snapshots[real_pos].rec_joypad_diff_bits == inp.rec_joypad_diff_bits)
{
// clone this snapshot and continue chain of recorded frames
inp.jump_frame = input_snapshots[real_pos].jump_frame;
@ -413,7 +406,7 @@ void INPUT_HISTORY::RegisterRecording(int frame_of_change)
strcat(inp.description, "-");
strcat(inp.description, framenum);
// set hotchanges
if (TASEdit_enable_hot_changes)
if (taseditor_config.enable_hot_changes)
{
inp.copyHotChanges(&input_snapshots[real_pos]);
inp.fillHotChanges(input_snapshots[real_pos], frame_of_change, frame_of_change);
@ -441,7 +434,7 @@ void INPUT_HISTORY::RegisterRecording(int frame_of_change)
strcat(inp.description, " ");
strcat(inp.description, framenum);
// set hotchanges
if (TASEdit_enable_hot_changes)
if (taseditor_config.enable_hot_changes)
{
inp.inheritHotChanges(&input_snapshots[real_pos]);
inp.fillHotChanges(input_snapshots[real_pos], frame_of_change, frame_of_change);
@ -454,7 +447,7 @@ void INPUT_HISTORY::RegisterImport(MovieData& md, char* filename)
{
// create new input snapshot
INPUT_SNAPSHOT inp;
inp.init(md, TASEdit_enable_hot_changes, (currMovieData.fourscore)?FOURSCORE:NORMAL_2JOYPADS);
inp.init(md, taseditor_config.enable_hot_changes, (currMovieData.fourscore)?FOURSCORE:NORMAL_2JOYPADS);
// check if there are input differences from latest snapshot
int real_pos = (history_start_pos + history_cursor_pos) % history_size;
int first_changes = inp.findFirstChange(input_snapshots[real_pos]);
@ -468,20 +461,20 @@ void INPUT_HISTORY::RegisterImport(MovieData& md, char* filename)
// add filename to description
strcat(inp.description, " ");
strncat(inp.description, filename, SNAPSHOT_DESC_MAX_LENGTH - strlen(inp.description) - 1);
if (TASEdit_enable_hot_changes)
if (taseditor_config.enable_hot_changes)
{
// do not inherit old hotchanges, because imported input (most likely) doesn't have direct connection with recent edits, so old hotchanges are irrelevant and should not be copied
inp.fillHotChanges(input_snapshots[real_pos], first_changes);
}
AddInputSnapshotToHistory(inp);
inp.toMovie(currMovieData);
tasedit_list.update();
list.update();
bookmarks.ChangesMadeSinceBranch();
project.SetProjectChanged();
greenzone.InvalidateAndCheck(first_changes);
} else
{
MessageBox(hwndTasEdit, "Imported movie has the same input.\nNo changes were made.", "TAS Editor", MB_OK);
MessageBox(taseditor_window.hwndTasEditor, "Imported movie has the same input.\nNo changes were made.", "TAS Editor", MB_OK);
}
}
@ -611,8 +604,8 @@ void INPUT_HISTORY::Click(LPNMITEMACTIVATE info)
int result = jump(item);
if (result >= 0)
{
tasedit_list.update();
tasedit_list.FollowUndo();
list.update();
list.FollowUndo();
greenzone.InvalidateAndCheck(result);
return;
}

View File

@ -42,6 +42,7 @@
#define MODTYPE_LUA_MARKER_SET 37
#define MODTYPE_LUA_MARKER_UNSET 38
#define MODTYPE_LUA_MARKER_RENAME 39
#define MODTYPE_LUA_CHANGE 40
#define HISTORY_NORMAL_COLOR 0x000000
#define HISTORY_INCOHERENT_COLOR 0x999999

View File

@ -1,14 +1,11 @@
//Implementation file of Input Snapshot class (Undo feature)
#include "taseditproj.h"
#include "taseditor_project.h"
#include "zlib.h"
const int bytes_per_frame[NUM_SUPPORTED_INPUT_TYPES] = {2, 4}; // so 16bits for normal joypads, 32bits for fourscore
extern void FCEU_printf(char *format, ...);
extern MARKERS current_markers;
extern TASEDIT_SELECTION selection;
extern TASEDITOR_SELECTION selection;
INPUT_SNAPSHOT::INPUT_SNAPSHOT()
{

View File

@ -43,7 +43,7 @@ public:
int GetHotChangeInfo(int frame, int absolute_button);
int size; // in frames
int input_type; // 0=normal, 1=fourscore; theoretically TASEdit can support other input types, although some stuff may be unintentionally hardcoded
int input_type; // 0=normal, 1=fourscore; theoretically TAS Editor can support other input types, although some stuff may be unintentionally hardcoded
std::vector<uint8> joysticks; // Format: joy0-for-frame0, joy1-for-frame0, joy2-for-frame0, joy3-for-frame0, joy0-for-frame1, joy1-for-frame1, ...
std::vector<uint8> commands; // Format: commands-for-frame0, commands-for-frame1, ...
std::vector<uint8> hot_changes; // Format: buttons01joy0-for-frame0, buttons23joy0-for-frame0, buttons45joy0-for-frame0, buttons67joy0-for-frame0, buttons01joy1-for-frame0, ...

View File

@ -1,13 +1,12 @@
//Implementation file of Markers class
#include "taseditproj.h"
#include "taseditor_project.h"
#include "zlib.h"
#include <Shlwapi.h> // for StrStrI
extern bool TASEdit_empty_marker_notes;
extern HWND hwndTasEdit;
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern PLAYBACK playback;
extern TASEDIT_SELECTION selection;
extern TASEDITOR_SELECTION selection;
// resources
char markers_save_id[MARKERS_ID_LEN] = "MARKERS";
@ -274,7 +273,7 @@ int MARKERS::SetMarker(int frame)
int marker_num = GetMarkerUp(frame) + 1;
markers_array[frame] = marker_num;
if (TASEdit_empty_marker_notes)
if (taseditor_config.empty_marker_notes)
notes.insert(notes.begin() + marker_num, 1, "");
else
// copy previous marker note
@ -392,7 +391,7 @@ void MARKERS::FindSimilar(int offset)
// check if playback_marker_text is empty
if (!sourceNote[0])
{
MessageBox(hwndTasEdit, "Marker Note under Playback cursor is empty!", "Find Similar Note", MB_OK);
MessageBox(taseditor_window.hwndTasEditor, "Marker Note under Playback cursor is empty!", "Find Similar Note", MB_OK);
return;
}
@ -431,7 +430,7 @@ void MARKERS::FindSimilar(int offset)
if (!totalSourceKeywords)
{
MessageBox(hwndTasEdit, "Marker Note under Playback cursor doesn't have keywords!", "Find Similar Note", MB_OK);
MessageBox(taseditor_window.hwndTasEditor, "Marker Note under Playback cursor doesn't have keywords!", "Find Similar Note", MB_OK);
return;
}
@ -574,9 +573,9 @@ void MARKERS::FindSimilar(int offset)
} else
{
if (offset)
MessageBox(hwndTasEdit, "Could not find more Notes similar to Marker Note under Playback cursor!", "Find Similar Note", MB_OK);
MessageBox(taseditor_window.hwndTasEditor, "Could not find more Notes similar to Marker Note under Playback cursor!", "Find Similar Note", MB_OK);
else
MessageBox(hwndTasEdit, "Could not find anything similar to Marker Note under Playback cursor!", "Find Similar Note", MB_OK);
MessageBox(taseditor_window.hwndTasEditor, "Could not find anything similar to Marker Note under Playback cursor!", "Find Similar Note", MB_OK);
}
}

View File

@ -1,21 +1,21 @@
//Implementation file of Playback class
#include "taseditproj.h"
#include "taseditor_project.h"
#include "..\tasedit.h" // only for MARKER_NOTE_EDIT_UPPER
#ifdef _S9XLUA_H
extern void ForceExecuteLuaFrameFunctions();
#endif
extern HWND hwndTasEdit;
extern bool Tasedit_rewind_now;
extern bool Taseditor_rewind_now;
extern bool turbo;
extern bool TASEdit_turbo_seek;
extern int marker_note_edit;
extern int search_similar_marker;
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern MARKERS current_markers;
extern GREENZONE greenzone;
extern TASEDIT_LIST tasedit_list;
extern TASEDITOR_LIST list;
extern BOOKMARKS bookmarks;
extern void UpdateMarkerNote();
@ -32,17 +32,17 @@ PLAYBACK::PLAYBACK()
void PLAYBACK::init()
{
hwndProgressbar = GetDlgItem(hwndTasEdit, IDC_PROGRESS1);
hwndProgressbar = GetDlgItem(taseditor_window.hwndTasEditor, IDC_PROGRESS1);
SendMessage(hwndProgressbar, PBM_SETRANGE, 0, MAKELPARAM(0, PROGRESSBAR_WIDTH));
hwndRewind = GetDlgItem(hwndTasEdit, TASEDIT_REWIND);
hwndForward = GetDlgItem(hwndTasEdit, TASEDIT_FORWARD);
hwndRewindFull = GetDlgItem(hwndTasEdit, TASEDIT_REWIND_FULL);
hwndForwardFull = GetDlgItem(hwndTasEdit, TASEDIT_FORWARD_FULL);
hwndPlaybackMarker = GetDlgItem(hwndTasEdit, IDC_PLAYBACK_MARKER);
SendMessage(hwndPlaybackMarker, WM_SETFONT, (WPARAM)tasedit_list.hMarkersFont, 0);
hwndPlaybackMarkerEdit = GetDlgItem(hwndTasEdit, IDC_PLAYBACK_MARKER_EDIT);
hwndRewind = GetDlgItem(taseditor_window.hwndTasEditor, TASEDIT_REWIND);
hwndForward = GetDlgItem(taseditor_window.hwndTasEditor, TASEDIT_FORWARD);
hwndRewindFull = GetDlgItem(taseditor_window.hwndTasEditor, TASEDIT_REWIND_FULL);
hwndForwardFull = GetDlgItem(taseditor_window.hwndTasEditor, TASEDIT_FORWARD_FULL);
hwndPlaybackMarker = GetDlgItem(taseditor_window.hwndTasEditor, IDC_PLAYBACK_MARKER);
SendMessage(hwndPlaybackMarker, WM_SETFONT, (WPARAM)list.hMarkersFont, 0);
hwndPlaybackMarkerEdit = GetDlgItem(taseditor_window.hwndTasEditor, IDC_PLAYBACK_MARKER_EDIT);
SendMessage(hwndPlaybackMarkerEdit, EM_SETLIMITTEXT, MAX_NOTE_LEN - 1, 0);
SendMessage(hwndPlaybackMarkerEdit, WM_SETFONT, (WPARAM)tasedit_list.hMarkersEditFont, 0);
SendMessage(hwndPlaybackMarkerEdit, WM_SETFONT, (WPARAM)list.hMarkersEditFont, 0);
// subclass the edit control
playbackMarkerEdit_oldWndproc = (WNDPROC)SetWindowLong(hwndPlaybackMarkerEdit, GWL_WNDPROC, (LONG)UpperMarkerEditWndProc);
@ -74,7 +74,7 @@ void PLAYBACK::update()
if (old_pauseframe != pause_frame && old_pauseframe)
{
// pause_frame was changed, clear old_pauseframe gfx
tasedit_list.RedrawRow(old_pauseframe-1);
list.RedrawRow(old_pauseframe-1);
bookmarks.RedrawChangedBookmarks(old_pauseframe-1);
}
old_pauseframe = pause_frame;
@ -89,7 +89,7 @@ void PLAYBACK::update()
if (old_show_pauseframe != show_pauseframe)
{
// update pauseframe gfx
tasedit_list.RedrawRow(pause_frame-1);
list.RedrawRow(pause_frame-1);
bookmarks.RedrawChangedBookmarks(pause_frame-1);
}
@ -114,15 +114,15 @@ void PLAYBACK::update()
// update the playback cursor
if(currFrameCounter != lastCursor)
{
tasedit_list.FollowPlaybackIfNeeded();
list.FollowPlaybackIfNeeded();
// update gfx of the old and new rows
tasedit_list.RedrawRow(lastCursor);
list.RedrawRow(lastCursor);
bookmarks.RedrawChangedBookmarks(lastCursor);
tasedit_list.RedrawRow(currFrameCounter);
list.RedrawRow(currFrameCounter);
bookmarks.RedrawChangedBookmarks(currFrameCounter);
// enforce redrawing now
lastCursor = currFrameCounter;
UpdateWindow(tasedit_list.hwndList);
UpdateWindow(list.hwndList);
// lazy update of "Playback's Marker text"
int current_marker = current_markers.GetMarkerUp(currFrameCounter);
if (shown_marker != current_marker)
@ -145,7 +145,7 @@ void PLAYBACK::update()
// update < and > buttons
old_rewind_button_state = rewind_button_state;
rewind_button_state = ((Button_GetState(hwndRewind) & BST_PUSHED) != 0 || Tasedit_rewind_now);
rewind_button_state = ((Button_GetState(hwndRewind) & BST_PUSHED) != 0 || Taseditor_rewind_now);
if (rewind_button_state)
{
if (!old_rewind_button_state)
@ -236,7 +236,7 @@ void PLAYBACK::SeekingStart(int finish_frame)
{
seeking_start_frame = currFrameCounter;
pause_frame = finish_frame;
if (TASEdit_turbo_seek)
if (taseditor_config.turbo_seek)
turbo = true;
UnpauseEmulation();
}
@ -255,7 +255,7 @@ void PLAYBACK::RewindFrame()
jump(currFrameCounter-1);
else
// cursor is at frame 0 - can't rewind, but still must make cursor visible if needed
tasedit_list.FollowPlaybackIfNeeded();
list.FollowPlaybackIfNeeded();
if (!pause_frame) PauseEmulation();
}
void PLAYBACK::ForwardFrame()
@ -319,7 +319,7 @@ void PLAYBACK::jump(int frame)
if (JumpToFrame(frame))
{
ForceExecuteLuaFrameFunctions();
tasedit_list.FollowPlaybackIfNeeded();
list.FollowPlaybackIfNeeded();
}
}
void PLAYBACK::restorePosition()
@ -385,7 +385,7 @@ LRESULT APIENTRY UpperMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
if (marker_note_edit == MARKER_NOTE_EDIT_UPPER)
{
extern PLAYBACK playback;
extern TASEDIT_SELECTION selection;
extern TASEDITOR_SELECTION selection;
switch(msg)
{
case WM_CHAR:
@ -395,11 +395,11 @@ LRESULT APIENTRY UpperMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
case VK_ESCAPE:
// revert text to original note text
SetWindowText(playback.hwndPlaybackMarkerEdit, current_markers.GetNote(playback.shown_marker).c_str());
SetFocus(tasedit_list.hwndList);
SetFocus(list.hwndList);
return 0;
case VK_RETURN:
// exit and save text changes
SetFocus(tasedit_list.hwndList);
SetFocus(list.hwndList);
return 0;
case VK_TAB:
// switch to lower edit control (also exit and save text changes)

View File

@ -39,6 +39,8 @@ public:
int GetPauseFrame();
void SetProgressbar(int a, int b);
bool JumpToFrame(int index);
int pause_frame;
bool must_find_current_marker;
int shown_marker;
@ -50,7 +52,6 @@ public:
bool jump_was_used_this_frame;
private:
bool JumpToFrame(int index);
int lastCursor; // but for currentCursor we use external variable currFrameCounter
bool old_emu_paused, emu_paused;

View File

@ -1,16 +1,12 @@
//Implementation file of SCREENSHOT_DISPLAY class
#include "taseditproj.h"
//Implementation file of POPUP_DISPLAY class
#include "taseditor_project.h"
#include "zlib.h"
extern HWND hwndTasEdit;
extern int TasEdit_wndx, TasEdit_wndy;
extern bool TASEdit_show_branch_screenshots;
extern bool TASEdit_show_branch_tooltips;
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern MARKERS current_markers;
extern BOOKMARKS bookmarks;
extern TASEDIT_LIST tasedit_list;
extern TASEDITOR_LIST list;
LRESULT CALLBACK ScrBmpWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
LRESULT APIENTRY MarkerNoteTooltipWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
@ -19,7 +15,7 @@ LRESULT APIENTRY MarkerNoteTooltipWndProc(HWND hwnd, UINT message, WPARAM wParam
char szClassName[] = "ScrBmp";
char szClassName2[] = "MarketNoteTooltip";
SCREENSHOT_DISPLAY::SCREENSHOT_DISPLAY()
POPUP_DISPLAY::POPUP_DISPLAY()
{
// create BITMAPINFO
scr_bmi = (LPBITMAPINFO)malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); // 256 color in palette
@ -70,7 +66,7 @@ SCREENSHOT_DISPLAY::SCREENSHOT_DISPLAY()
blend.SourceConstantAlpha = 255;
}
void SCREENSHOT_DISPLAY::init()
void POPUP_DISPLAY::init()
{
free();
// fill scr_bmp palette with current palette colors
@ -81,12 +77,12 @@ void SCREENSHOT_DISPLAY::init()
scr_bmi->bmiColors[i].rgbGreen = color_palette[i].peGreen;
scr_bmi->bmiColors[i].rgbBlue = color_palette[i].peBlue;
}
HDC win_hdc = GetWindowDC(tasedit_list.hwndList);
HDC win_hdc = GetWindowDC(list.hwndList);
scr_bmp = CreateDIBSection(win_hdc, scr_bmi, DIB_RGB_COLORS, (void**)&scr_ptr, 0, 0);
// calculate coordinates (relative to IDC_BOOKMARKS_BOX)
RECT temp_rect, parent_rect;
GetWindowRect(hwndTasEdit, &parent_rect);
GetWindowRect(GetDlgItem(hwndTasEdit, IDC_BOOKMARKS_BOX), &temp_rect);
GetWindowRect(taseditor_window.hwndTasEditor, &parent_rect);
GetWindowRect(GetDlgItem(taseditor_window.hwndTasEditor, IDC_BOOKMARKS_BOX), &temp_rect);
scr_bmp_x = temp_rect.left - SCREENSHOT_WIDTH - SCR_BMP_DX - parent_rect.left;
//scr_bmp_y = ((temp_rect.bottom + temp_rect.top - (SCREENSHOT_HEIGHT + SCR_BMP_TOOLTIP_GAP + MARKER_NOTE_TOOLTIP_HEIGHT)) / 2) - parent_rect.top;
scr_bmp_y = (temp_rect.bottom - SCREENSHOT_HEIGHT) - parent_rect.top;
@ -94,7 +90,7 @@ void SCREENSHOT_DISPLAY::init()
//tooltip_y = scr_bmp_y + SCREENSHOT_HEIGHT + SCR_BMP_TOOLTIP_GAP;
tooltip_y = scr_bmp_y + SCREENSHOT_HEIGHT + SCR_BMP_TOOLTIP_GAP;
}
void SCREENSHOT_DISPLAY::free()
void POPUP_DISPLAY::free()
{
reset();
if (scr_bmp)
@ -103,7 +99,7 @@ void SCREENSHOT_DISPLAY::free()
scr_bmp = 0;
}
}
void SCREENSHOT_DISPLAY::reset()
void POPUP_DISPLAY::reset()
{
screenshot_currently_shown = ITEM_UNDER_MOUSE_NONE;
next_update_time = scr_bmp_phase = 0;
@ -119,7 +115,7 @@ void SCREENSHOT_DISPLAY::reset()
}
}
void SCREENSHOT_DISPLAY::update()
void POPUP_DISPLAY::update()
{
// once per 40 milliseconds update screenshot_bitmap alpha
if (clock() > next_update_time)
@ -127,25 +123,25 @@ void SCREENSHOT_DISPLAY::update()
next_update_time = clock() + DISPLAY_UPDATE_TICK;
if (bookmarks.item_under_mouse >= 0 && bookmarks.item_under_mouse < TOTAL_BOOKMARKS)
{
if (TASEdit_show_branch_screenshots && !hwndScrBmp)
if (taseditor_config.show_branch_screenshots && !hwndScrBmp)
{
// create window
hwndScrBmp = CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT, szClassName, szClassName, WS_POPUP, TasEdit_wndx + scr_bmp_x, TasEdit_wndy + scr_bmp_y, SCREENSHOT_WIDTH, SCREENSHOT_HEIGHT, hwndTasEdit, NULL, fceu_hInstance, NULL);
hwndScrBmp = CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT, szClassName, szClassName, WS_POPUP, taseditor_config.wndx + scr_bmp_x, taseditor_config.wndy + scr_bmp_y, SCREENSHOT_WIDTH, SCREENSHOT_HEIGHT, taseditor_window.hwndTasEditor, NULL, fceu_hInstance, NULL);
RedrawScreenshotBitmap();
ShowWindow(hwndScrBmp, SW_SHOWNA);
}
if (TASEdit_show_branch_tooltips && !hwndMarkerNoteTooltip)
if (taseditor_config.show_branch_tooltips && !hwndMarkerNoteTooltip)
{
hwndMarkerNoteTooltip = CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT, szClassName2, szClassName2, WS_POPUP, TasEdit_wndx + tooltip_x, TasEdit_wndy + tooltip_y, MARKER_NOTE_TOOLTIP_WIDTH, MARKER_NOTE_TOOLTIP_HEIGHT, hwndTasEdit, NULL, fceu_hInstance, NULL);
hwndMarkerNoteTooltip = CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT, szClassName2, szClassName2, WS_POPUP, taseditor_config.wndx + tooltip_x, taseditor_config.wndy + tooltip_y, MARKER_NOTE_TOOLTIP_WIDTH, MARKER_NOTE_TOOLTIP_HEIGHT, taseditor_window.hwndTasEditor, NULL, fceu_hInstance, NULL);
ChangeTooltipText();
ShowWindow(hwndMarkerNoteTooltip, SW_SHOWNA);
}
// change screenshot_bitmap pic and tooltip text if needed
if (screenshot_currently_shown != bookmarks.item_under_mouse)
{
if (TASEdit_show_branch_screenshots)
if (taseditor_config.show_branch_screenshots)
ChangeScreenshotBitmap();
if (TASEdit_show_branch_tooltips)
if (taseditor_config.show_branch_tooltips)
ChangeTooltipText();
screenshot_currently_shown = bookmarks.item_under_mouse;
}
@ -205,7 +201,7 @@ void SCREENSHOT_DISPLAY::update()
}
}
void SCREENSHOT_DISPLAY::ChangeScreenshotBitmap()
void POPUP_DISPLAY::ChangeScreenshotBitmap()
{
// uncompress
uLongf destlen = SCREENSHOT_SIZE;
@ -219,13 +215,13 @@ void SCREENSHOT_DISPLAY::ChangeScreenshotBitmap()
}
RedrawScreenshotBitmap();
}
void SCREENSHOT_DISPLAY::RedrawScreenshotBitmap()
void POPUP_DISPLAY::RedrawScreenshotBitmap()
{
HBITMAP temp_bmp = (HBITMAP)SendMessage(scr_bmp_pic, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)scr_bmp);
if (temp_bmp && temp_bmp != scr_bmp)
DeleteObject(temp_bmp);
}
void SCREENSHOT_DISPLAY::ChangeTooltipText()
void POPUP_DISPLAY::ChangeTooltipText()
{
// retrieve info from the pointed bookmark's markers
int frame = bookmarks.bookmarks_array[bookmarks.item_under_mouse].snapshot.jump_frame;
@ -235,23 +231,23 @@ void SCREENSHOT_DISPLAY::ChangeTooltipText()
SetWindowText(marker_note_tooltip, new_text);
}
void SCREENSHOT_DISPLAY::ParentWindowMoved()
void POPUP_DISPLAY::ParentWindowMoved()
{
if (hwndScrBmp)
SetWindowPos(hwndScrBmp, 0, TasEdit_wndx + scr_bmp_x, TasEdit_wndy + scr_bmp_y, 0, 0, SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
SetWindowPos(hwndScrBmp, 0, taseditor_config.wndx + scr_bmp_x, taseditor_config.wndy + scr_bmp_y, 0, 0, SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
if (hwndMarkerNoteTooltip)
SetWindowPos(hwndMarkerNoteTooltip, 0, TasEdit_wndx + tooltip_x, TasEdit_wndy + tooltip_y, 0, 0, SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
SetWindowPos(hwndMarkerNoteTooltip, 0, taseditor_config.wndx + tooltip_x, taseditor_config.wndy + tooltip_y, 0, 0, SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
}
// ----------------------------------------------------------------------------------------
LRESULT APIENTRY ScrBmpWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
extern SCREENSHOT_DISPLAY screenshot_display;
extern POPUP_DISPLAY popup_display;
switch(message)
{
case WM_CREATE:
{
// create static bitmap placeholder
screenshot_display.scr_bmp_pic = CreateWindow(WC_STATIC, NULL, SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 255, 255, hwnd, NULL, NULL, NULL);
popup_display.scr_bmp_pic = CreateWindow(WC_STATIC, NULL, SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 255, 255, hwnd, NULL, NULL, NULL);
return 0;
}
default:
@ -260,13 +256,13 @@ LRESULT APIENTRY ScrBmpWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lP
}
LRESULT APIENTRY MarkerNoteTooltipWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
extern SCREENSHOT_DISPLAY screenshot_display;
extern POPUP_DISPLAY popup_display;
switch(message)
{
case WM_CREATE:
{
// create static text field
screenshot_display.marker_note_tooltip = CreateWindow(WC_STATIC, NULL, WS_CHILD | WS_VISIBLE | SS_CENTER | SS_SUNKEN, 1, 1, MARKER_NOTE_TOOLTIP_WIDTH - 2, MARKER_NOTE_TOOLTIP_HEIGHT - 2, hwnd, NULL, NULL, NULL);
popup_display.marker_note_tooltip = CreateWindow(WC_STATIC, NULL, WS_CHILD | WS_VISIBLE | SS_CENTER | SS_SUNKEN, 1, 1, MARKER_NOTE_TOOLTIP_WIDTH - 2, MARKER_NOTE_TOOLTIP_HEIGHT - 2, hwnd, NULL, NULL, NULL);
return 0;
}
default:

View File

@ -1,4 +1,4 @@
//Specification file for SCREENSHOT_DISPLAY class
//Specification file for POPUP_DISPLAY class
#define SCR_BMP_PHASE_MAX 10
#define SCR_BMP_PHASE_ALPHA_MAX 8
@ -11,10 +11,10 @@
#define DISPLAY_UPDATE_TICK 40 // update at 25FPS
class SCREENSHOT_DISPLAY
class POPUP_DISPLAY
{
public:
SCREENSHOT_DISPLAY();
POPUP_DISPLAY();
void init();
void free();
void reset();

View File

@ -1,23 +1,16 @@
//Implementation file of RECORDER class
#include "taseditproj.h"
#include "taseditor_project.h"
#include "zlib.h"
extern HWND hwndTasEdit;
extern uint32 GetGamepadPressedImmediate();
extern void ColumnSet(int column);
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern BOOKMARKS bookmarks;
extern INPUT_HISTORY history;
extern GREENZONE greenzone;
extern TASEDIT_LIST tasedit_list;
extern void RedrawWindowCaption();
extern bool TASEdit_branch_only_when_rec;
extern bool TASEdit_use_1p_rec;
extern int TASEdit_superimpose;
extern bool TASEdit_columnset_by_keys;
extern bool TASEdit_focus;
extern TASEDITOR_LIST list;
// resources
const char recordingModes[5][4] = { "All",
@ -36,12 +29,12 @@ RECORDER::RECORDER()
void RECORDER::init()
{
hwndRecCheckbox = GetDlgItem(hwndTasEdit, IDC_RECORDING);
hwndRB_RecAll = GetDlgItem(hwndTasEdit, IDC_RADIO2);
hwndRB_Rec1P = GetDlgItem(hwndTasEdit, IDC_RADIO3);
hwndRB_Rec2P = GetDlgItem(hwndTasEdit, IDC_RADIO4);
hwndRB_Rec3P = GetDlgItem(hwndTasEdit, IDC_RADIO5);
hwndRB_Rec4P = GetDlgItem(hwndTasEdit, IDC_RADIO6);
hwndRecCheckbox = GetDlgItem(taseditor_window.hwndTasEditor, IDC_RECORDING);
hwndRB_RecAll = GetDlgItem(taseditor_window.hwndTasEditor, IDC_RADIO2);
hwndRB_Rec1P = GetDlgItem(taseditor_window.hwndTasEditor, IDC_RADIO3);
hwndRB_Rec2P = GetDlgItem(taseditor_window.hwndTasEditor, IDC_RADIO4);
hwndRB_Rec3P = GetDlgItem(taseditor_window.hwndTasEditor, IDC_RADIO5);
hwndRB_Rec4P = GetDlgItem(taseditor_window.hwndTasEditor, IDC_RADIO6);
reset();
old_multitrack_recording_joypad = multitrack_recording_joypad;
old_movie_readonly = movie_readonly;
@ -71,9 +64,9 @@ void RECORDER::update()
{
// update window caption if needed
if (old_movie_readonly != movie_readonly || old_multitrack_recording_joypad != multitrack_recording_joypad)
RedrawWindowCaption();
taseditor_window.RedrawCaption();
// update Bookmarks/Branches groupbox caption if needed
if (TASEdit_branch_only_when_rec && old_movie_readonly != movie_readonly)
if (taseditor_config.branch_only_when_rec && old_movie_readonly != movie_readonly)
bookmarks.RedrawBookmarksCaption();
// update recording radio buttons if user used hotkey to switch R/W
if (old_movie_readonly != movie_readonly || old_multitrack_recording_joypad != multitrack_recording_joypad)
@ -96,7 +89,7 @@ void RECORDER::update()
{
int joy = multitrack_recording_joypad - 1;
// substitute target joypad with 1p joypad
if (multitrack_recording_joypad > MULTITRACK_RECORDING_1P && TASEdit_use_1p_rec)
if (multitrack_recording_joypad > MULTITRACK_RECORDING_1P && taseditor_config.use_1p_rec)
current_joy[joy] = current_joy[0];
// clear all other joypads (pressing them does not count)
for (int i = 0; i < NUM_JOYPADS; ++i)
@ -104,7 +97,7 @@ void RECORDER::update()
current_joy[i] = 0;
}
// call ColumnSet if needed
if (TASEdit_columnset_by_keys && movie_readonly && TASEdit_focus)
if (taseditor_config.columnset_by_keys && movie_readonly && taseditor_window.TASEditor_focus)
{
int num_joys;
if (currMovieData.fourscore)
@ -178,7 +171,7 @@ void RECORDER::InputChanged()
for (; i >= 0; i--)
{
// superimpose (bitwise OR) if needed
if (TASEdit_superimpose == BST_CHECKED || (TASEdit_superimpose == BST_INDETERMINATE && new_joy[i] == 0))
if (taseditor_config.superimpose == BST_CHECKED || (taseditor_config.superimpose == BST_INDETERMINATE && new_joy[i] == 0))
new_joy[i] |= old_joy[i];
// change this joystick
currMovieData.records[currFrameCounter].joysticks[i] = new_joy[i];
@ -188,17 +181,17 @@ void RECORDER::InputChanged()
// set lights for changed buttons
for (int button = 0; button < NUM_JOYPAD_BUTTONS; ++button)
if ((new_joy[i] & (1 << button)) && !(old_joy[i] & (1 << button)))
tasedit_list.SetHeaderColumnLight(COLUMN_JOYPAD1_A + i * NUM_JOYPAD_BUTTONS + button, HEADER_LIGHT_MAX);
list.SetHeaderColumnLight(COLUMN_JOYPAD1_A + i * NUM_JOYPAD_BUTTONS + button, HEADER_LIGHT_MAX);
}
}
} else
{
int joy = multitrack_recording_joypad - 1;
// substitute target joypad with 1p joypad
if (multitrack_recording_joypad > MULTITRACK_RECORDING_1P && TASEdit_use_1p_rec)
if (multitrack_recording_joypad > MULTITRACK_RECORDING_1P && taseditor_config.use_1p_rec)
new_joy[joy] = new_joy[0];
// superimpose (bitwise OR) if needed
if (TASEdit_superimpose == BST_CHECKED || (TASEdit_superimpose == BST_INDETERMINATE && new_joy[joy] == 0))
if (taseditor_config.superimpose == BST_CHECKED || (taseditor_config.superimpose == BST_INDETERMINATE && new_joy[joy] == 0))
new_joy[joy] |= old_joy[joy];
// other joysticks should not be changed
currMovieData.records[currFrameCounter].joysticks[0] = old_joy[0];
@ -216,7 +209,7 @@ void RECORDER::InputChanged()
// set lights for changed buttons
for (int button = 0; button < NUM_JOYPAD_BUTTONS; ++button)
if ((new_joy[joy] & (1 << button)) && !(old_joy[joy] & (1 << button)))
tasedit_list.SetHeaderColumnLight(COLUMN_JOYPAD1_A + joy * NUM_JOYPAD_BUTTONS + button, HEADER_LIGHT_MAX);
list.SetHeaderColumnLight(COLUMN_JOYPAD1_A + joy * NUM_JOYPAD_BUTTONS + button, HEADER_LIGHT_MAX);
}
}
if (changes_made)

View File

@ -0,0 +1,55 @@
//Implementation file of TASEDITOR_CONFIG class
#include "../common.h"
#include "taseditor_config.h"
TASEDITOR_CONFIG::TASEDITOR_CONFIG()
{
// set default values
wndx = 0;
wndy = 0;
findnote_wndx = 0;
findnote_wndy = 0;
follow_playback = true;
turbo_seek = true;
show_lag_frames = true;
show_markers = true;
show_branch_screenshots = true;
show_branch_tooltips = true;
enable_hot_changes = true;
jump_to_undo = true;
follow_note_context = true;
bind_markers = true;
empty_marker_notes = true;
combine_consecutive_rec = true;
use_1p_rec = true;
columnset_by_keys = true;
keyboard_for_listview = true;
superimpose = BST_UNCHECKED;
superimpose_affects_paste = true;
branch_full_movie = true;
branch_only_when_rec = false;
view_branches_tree = false;
branch_scr_hud = true;
restore_position = false;
greenzone_capacity = GREENZONE_CAPACITY_DEFAULT;
undo_levels = UNDO_LEVELS_DEFAULT;
autosave_period = AUTOSAVE_PERIOD_DEFAULT;
last_export_type = EXPORT_TYPE_1P;
last_export_subtitles = false;
savecompact_binary = true;
savecompact_markers = true;
savecompact_bookmarks = true;
savecompact_greenzone = false;
savecompact_history = false;
savecompact_list = true;
savecompact_selection = false;
findnote_matchcase = false;
findnote_search_up = false;
enable_auto_function = true;
silent_autosave = true;
}

View File

@ -0,0 +1,69 @@
//Specification file for TASEDITOR_CONFIG class
#define GREENZONE_CAPACITY_MIN 1
#define GREENZONE_CAPACITY_MAX 50000
#define GREENZONE_CAPACITY_DEFAULT 10000
#define UNDO_LEVELS_MIN 1
#define UNDO_LEVELS_MAX 999
#define UNDO_LEVELS_DEFAULT 99
#define AUTOSAVE_PERIOD_MIN 0 // 0 = no autosave
#define AUTOSAVE_PERIOD_MAX 1440 // 24 hours
#define AUTOSAVE_PERIOD_DEFAULT 15 // in minutes
#define EXPORT_TYPE_1P 0
#define EXPORT_TYPE_2P 1
#define EXPORT_TYPE_FOURSCORE 2
class TASEDITOR_CONFIG
{
public:
TASEDITOR_CONFIG();
// vars saved in cfg file
int wndx;
int wndy;
int findnote_wndx;
int findnote_wndy;
bool follow_playback;
bool turbo_seek;
bool show_lag_frames;
bool show_markers;
bool show_branch_screenshots;
bool show_branch_tooltips;
bool enable_hot_changes;
bool jump_to_undo;
bool follow_note_context;
bool bind_markers;
bool empty_marker_notes;
bool combine_consecutive_rec;
bool use_1p_rec;
bool columnset_by_keys;
bool keyboard_for_listview;
int superimpose;
bool superimpose_affects_paste;
bool branch_full_movie;
bool branch_only_when_rec;
bool view_branches_tree;
bool branch_scr_hud;
bool restore_position;
int greenzone_capacity;
int undo_levels;
int autosave_period;
int last_export_type;
bool last_export_subtitles;
bool savecompact_binary;
bool savecompact_markers;
bool savecompact_bookmarks;
bool savecompact_greenzone;
bool savecompact_history;
bool savecompact_list;
bool savecompact_selection;
bool findnote_matchcase;
bool findnote_search_up;
bool enable_auto_function;
bool silent_autosave;
private:
};

View File

@ -1,29 +1,22 @@
//Implementation file of TASEDIT_LIST class
#include "taseditproj.h"
//Implementation file of TASEDITOR_LIST class
#include "taseditor_project.h"
#include "utils/xstring.h"
#include "uxtheme.h"
#pragma comment(lib, "UxTheme.lib")
extern HWND hwndTasEdit;
extern char buttonNames[NUM_JOYPAD_BUTTONS][2];
extern void ColumnSet(int column);
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern BOOKMARKS bookmarks;
extern PLAYBACK playback;
extern RECORDER recorder;
extern GREENZONE greenzone;
extern INPUT_HISTORY history;
extern MARKERS current_markers;
extern TASEDIT_SELECTION selection;
extern bool TASEdit_enable_hot_changes;
extern bool TASEdit_show_markers;
extern bool TASEdit_bind_markers;
extern bool TASEdit_show_lag_frames;
extern bool TASEdit_follow_playback;
extern bool TASEdit_jump_to_undo;
extern bool TASEdit_keyboard_for_listview;
extern TASEDITOR_SELECTION selection;
LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
@ -37,9 +30,13 @@ COLORREF header_lights_colors[11] = { 0x0, 0x006311, 0x008500, 0x1dad00, 0x46d10
char list_save_id[LIST_ID_LEN] = "LIST";
char list_skipsave_id[LIST_ID_LEN] = "LISX";
TASEDIT_LIST::TASEDIT_LIST()
TASEDITOR_LIST::TASEDITOR_LIST()
{
}
void TASEDITOR_LIST::init()
{
free();
// create fonts for main listview
hMainListFont = CreateFont(14, 7, /*Height,Width*/
0, 0, /*escapement,orientation*/
@ -66,15 +63,11 @@ TASEDIT_LIST::TASEDIT_LIST()
ANSI_CHARSET, OUT_DEVICE_PRECIS, CLIP_MASK, /*charset, precision, clipping*/
DEFAULT_QUALITY, DEFAULT_PITCH, /*quality, and pitch*/
"Arial"); /*font name*/
}
void TASEDIT_LIST::init()
{
free();
bg_brush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
header_colors.resize(MAX_NUM_COLUMNS);
hwndList = GetDlgItem(hwndTasEdit, IDC_LIST1);
hwndList = GetDlgItem(taseditor_window.hwndTasEditor, IDC_LIST1);
// prepare the main listview
ListView_SetExtendedListViewStyleEx(hwndList, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_INFOTIP, LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_INFOTIP);
// subclass the header
@ -180,8 +173,28 @@ void TASEDIT_LIST::init()
reset();
//update();
}
void TASEDIT_LIST::free()
void TASEDITOR_LIST::free()
{
if (hMainListFont)
{
DeleteObject(hMainListFont);
hMainListFont = 0;
}
if (hMainListSelectFont)
{
DeleteObject(hMainListSelectFont);
hMainListSelectFont = 0;
}
if (hMarkersFont)
{
DeleteObject(hMarkersFont);
hMarkersFont = 0;
}
if (hMarkersEditFont)
{
DeleteObject(hMarkersEditFont);
hMarkersEditFont = 0;
}
if (bg_brush)
{
DeleteObject(bg_brush);
@ -194,13 +207,13 @@ void TASEDIT_LIST::free()
}
header_colors.resize(0);
}
void TASEDIT_LIST::reset()
void TASEDITOR_LIST::reset()
{
next_header_update_time = 0;
// scroll to the beginning
ListView_EnsureVisible(hwndList, 0, FALSE);
}
void TASEDIT_LIST::update()
void TASEDITOR_LIST::update()
{
//update the number of items in the list
int currLVItemCount = ListView_GetItemCount(hwndList);
@ -208,7 +221,7 @@ void TASEDIT_LIST::update()
if(currLVItemCount != movie_size)
ListView_SetItemCountEx(hwndList, movie_size, LVSICF_NOSCROLL|LVSICF_NOINVALIDATEALL);
// once per 40 milliseconds update screenshot_bitmap alpha
// once per 40 milliseconds update colors alpha
if (clock() > next_header_update_time)
{
next_header_update_time = clock() + HEADER_LIGHT_UPDATE_TICK;
@ -255,7 +268,7 @@ void TASEDIT_LIST::update()
}
}
void TASEDIT_LIST::save(EMUFILE *os, bool really_save)
void TASEDITOR_LIST::save(EMUFILE *os, bool really_save)
{
if (really_save)
{
@ -272,7 +285,7 @@ void TASEDIT_LIST::save(EMUFILE *os, bool really_save)
}
}
// returns true if couldn't load
bool TASEDIT_LIST::load(EMUFILE *is)
bool TASEDITOR_LIST::load(EMUFILE *is)
{
update();
// read "LIST" string
@ -298,7 +311,7 @@ error:
return true;
}
// ----------------------------------------------------------------------
void TASEDIT_LIST::AddFourscore()
void TASEDITOR_LIST::AddFourscore()
{
// add list columns
LVCOLUMN lvc;
@ -320,7 +333,7 @@ void TASEDIT_LIST::AddFourscore()
// change eoptions
FCEUI_SetInputFourscore(true);
}
void TASEDIT_LIST::RemoveFourscore()
void TASEDITOR_LIST::RemoveFourscore()
{
// remove list columns
for (num_columns = COLUMN_FRAMENUM2; num_columns >= COLUMN_JOYPAD3_A; num_columns--)
@ -329,21 +342,21 @@ void TASEDIT_LIST::RemoveFourscore()
FCEUI_SetInputFourscore(false);
}
void TASEDIT_LIST::RedrawList()
void TASEDITOR_LIST::RedrawList()
{
InvalidateRect(hwndList, 0, FALSE);
}
void TASEDIT_LIST::RedrawRow(int index)
void TASEDITOR_LIST::RedrawRow(int index)
{
ListView_RedrawItems(hwndList, index, index);
}
void TASEDIT_LIST::RedrawHeader()
void TASEDITOR_LIST::RedrawHeader()
{
InvalidateRect(hwndHeader, 0, FALSE);
}
// -------------------------------------------------------------------------
bool TASEDIT_LIST::CheckItemVisible(int frame)
bool TASEDITOR_LIST::CheckItemVisible(int frame)
{
int top = ListView_GetTopIndex(hwndList);
// in fourscore there's horizontal scrollbar which takes one row for itself
@ -352,7 +365,7 @@ bool TASEDIT_LIST::CheckItemVisible(int frame)
return false;
}
void TASEDIT_LIST::FollowPlayback()
void TASEDITOR_LIST::FollowPlayback()
{
// center list at jump_frame
int list_items = ListView_GetCountPerPage(hwndList);
@ -367,14 +380,14 @@ void TASEDIT_LIST::FollowPlayback()
index = 0;
ListView_EnsureVisible(hwndList, index, false);
}
void TASEDIT_LIST::FollowPlaybackIfNeeded()
void TASEDITOR_LIST::FollowPlaybackIfNeeded()
{
if (TASEdit_follow_playback) ListView_EnsureVisible(hwndList,currFrameCounter,FALSE);
if (taseditor_config.follow_playback) ListView_EnsureVisible(hwndList,currFrameCounter,FALSE);
}
void TASEDIT_LIST::FollowUndo()
void TASEDITOR_LIST::FollowUndo()
{
int jump_frame = history.GetUndoHint();
if (TASEdit_jump_to_undo && jump_frame >= 0)
if (taseditor_config.jump_to_undo && jump_frame >= 0)
{
if (!CheckItemVisible(jump_frame))
{
@ -393,7 +406,7 @@ void TASEDIT_LIST::FollowUndo()
}
}
}
void TASEDIT_LIST::FollowSelection()
void TASEDITOR_LIST::FollowSelection()
{
SelectionFrames* current_selection = selection.MakeStrobe();
if (current_selection->size() == 0) return;
@ -432,7 +445,7 @@ void TASEDIT_LIST::FollowSelection()
ListView_EnsureVisible(hwndList, index, false);
}
}
void TASEDIT_LIST::FollowPauseframe()
void TASEDITOR_LIST::FollowPauseframe()
{
int jump_frame = playback.GetPauseFrame();
if (jump_frame >= 0)
@ -452,7 +465,7 @@ void TASEDIT_LIST::FollowPauseframe()
}
}
void TASEDIT_LIST::SetHeaderColumnLight(int column, int level)
void TASEDITOR_LIST::SetHeaderColumnLight(int column, int level)
{
if (column < COLUMN_FRAMENUM || column >= num_columns || level < 0 || level > HEADER_LIGHT_MAX)
return;
@ -465,7 +478,7 @@ void TASEDIT_LIST::SetHeaderColumnLight(int column, int level)
}
}
void TASEDIT_LIST::GetDispInfo(NMLVDISPINFO* nmlvDispInfo)
void TASEDITOR_LIST::GetDispInfo(NMLVDISPINFO* nmlvDispInfo)
{
LVITEM& item = nmlvDispInfo->item;
if(item.mask & LVIF_TEXT)
@ -509,7 +522,7 @@ void TASEDIT_LIST::GetDispInfo(NMLVDISPINFO* nmlvDispInfo)
item.pszText[2] = 0;
} else
{
if (TASEdit_enable_hot_changes && history.GetCurrentSnapshot().GetHotChangeInfo(item.iItem, item.iSubItem - COLUMN_JOYPAD1_A))
if (taseditor_config.enable_hot_changes && history.GetCurrentSnapshot().GetHotChangeInfo(item.iItem, item.iSubItem - COLUMN_JOYPAD1_A))
{
item.pszText[0] = 45; // "-"
item.pszText[1] = 0;
@ -521,7 +534,7 @@ void TASEDIT_LIST::GetDispInfo(NMLVDISPINFO* nmlvDispInfo)
}
}
LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
LONG TASEDITOR_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
{
int cell_x, cell_y;
switch(msg->nmcd.dwDrawStage)
@ -537,7 +550,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
if(cell_x > COLUMN_ICONS)
{
// text color
if(TASEdit_enable_hot_changes && cell_x >= COLUMN_JOYPAD1_A && cell_x <= COLUMN_JOYPAD4_R)
if(taseditor_config.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;
@ -554,9 +567,9 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
if (cell_y == history.GetUndoHint())
{
// undo hint here
if (TASEdit_show_markers && current_markers.GetMarker(cell_y))
if (taseditor_config.show_markers && current_markers.GetMarker(cell_y))
{
msg->clrTextBk = (TASEdit_bind_markers) ? BINDMARKED_UNDOHINT_FRAMENUM_COLOR : MARKED_UNDOHINT_FRAMENUM_COLOR;
msg->clrTextBk = (taseditor_config.bind_markers) ? BINDMARKED_UNDOHINT_FRAMENUM_COLOR : MARKED_UNDOHINT_FRAMENUM_COLOR;
} else
{
msg->clrTextBk = UNDOHINT_FRAMENUM_COLOR;
@ -564,24 +577,24 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
} else if (cell_y == currFrameCounter || cell_y == (playback.GetPauseFrame() - 1))
{
// current frame
if (TASEdit_show_markers && current_markers.GetMarker(cell_y))
if (taseditor_config.show_markers && current_markers.GetMarker(cell_y))
{
msg->clrTextBk = (TASEdit_bind_markers) ? CUR_BINDMARKED_FRAMENUM_COLOR : CUR_MARKED_FRAMENUM_COLOR;
msg->clrTextBk = (taseditor_config.bind_markers) ? CUR_BINDMARKED_FRAMENUM_COLOR : CUR_MARKED_FRAMENUM_COLOR;
} else
{
msg->clrTextBk = CUR_FRAMENUM_COLOR;
}
} else if (TASEdit_show_markers && current_markers.GetMarker(cell_y))
} else if (taseditor_config.show_markers && current_markers.GetMarker(cell_y))
{
// marked frame
msg->clrTextBk = (TASEdit_bind_markers) ? BINDMARKED_FRAMENUM_COLOR : MARKED_FRAMENUM_COLOR;
msg->clrTextBk = (taseditor_config.bind_markers) ? BINDMARKED_FRAMENUM_COLOR : MARKED_FRAMENUM_COLOR;
} else
{
if(cell_y < greenzone.greenZoneCount)
{
if (!greenzone.savestates[cell_y].empty())
{
if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y])
if (taseditor_config.show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = GREENZONE_FRAMENUM_COLOR;
@ -590,7 +603,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
|| (!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])
if (taseditor_config.show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = PALE_LAG_FRAMENUM_COLOR;
else
msg->clrTextBk = PALE_GREENZONE_FRAMENUM_COLOR;
@ -615,7 +628,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
{
if (!greenzone.savestates[cell_y].empty())
{
if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y])
if (taseditor_config.show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = LAG_INPUT_COLOR1;
else
msg->clrTextBk = GREENZONE_INPUT_COLOR1;
@ -624,7 +637,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
|| (!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])
if (taseditor_config.show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = PALE_LAG_INPUT_COLOR1;
else
msg->clrTextBk = PALE_GREENZONE_INPUT_COLOR1;
@ -648,7 +661,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
{
if (!greenzone.savestates[cell_y].empty())
{
if (TASEdit_show_lag_frames && greenzone.lag_history[cell_y])
if (taseditor_config.show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = LAG_INPUT_COLOR2;
else
msg->clrTextBk = GREENZONE_INPUT_COLOR2;
@ -657,7 +670,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
|| (!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])
if (taseditor_config.show_lag_frames && greenzone.lag_history[cell_y])
msg->clrTextBk = PALE_LAG_INPUT_COLOR2;
else
msg->clrTextBk = PALE_GREENZONE_INPUT_COLOR2;
@ -670,7 +683,7 @@ LONG TASEDIT_LIST::CustomDraw(NMLVCUSTOMDRAW* msg)
}
}
LONG TASEDIT_LIST::HeaderCustomDraw(NMLVCUSTOMDRAW* msg)
LONG TASEDITOR_LIST::HeaderCustomDraw(NMLVCUSTOMDRAW* msg)
{
switch(msg->nmcd.dwDrawStage)
{
@ -720,7 +733,7 @@ LRESULT APIENTRY HeaderWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam
//The subclass wndproc for the listview
LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
extern TASEDIT_LIST tasedit_list;
extern TASEDITOR_LIST list;
switch(msg)
{
case WM_CHAR:
@ -728,7 +741,7 @@ LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
return 0;
case WM_NOTIFY:
{
if (((LPNMHDR)lParam)->hwndFrom == tasedit_list.hwndHeader)
if (((LPNMHDR)lParam)->hwndFrom == list.hwndHeader)
{
switch (((LPNMHDR)lParam)->code)
{
@ -737,14 +750,14 @@ LRESULT APIENTRY ListWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
case HDN_TRACK:
return true; // no column resizing
case NM_CUSTOMDRAW:
return tasedit_list.HeaderCustomDraw((NMLVCUSTOMDRAW*)lParam);
return list.HeaderCustomDraw((NMLVCUSTOMDRAW*)lParam);
}
}
break;
}
case WM_KEYDOWN:
{
if (!TASEdit_keyboard_for_listview)
if (!taseditor_config.keyboard_for_listview)
return 0;
break;
}

View File

@ -1,4 +1,4 @@
//Specification file for TASEDIT_LIST class
//Specification file for TASEDITOR_LIST class
#define LIST_ID_LEN 5
#define CDDS_SUBITEMPREPAINT (CDDS_SUBITEM | CDDS_ITEMPREPAINT)
@ -94,10 +94,10 @@
#define PLAYBACK_MARKER_COLOR 0xC9AF00
class TASEDIT_LIST
class TASEDITOR_LIST
{
public:
TASEDIT_LIST();
TASEDITOR_LIST();
void init();
void free();
void reset();

View File

@ -0,0 +1,193 @@
//Implementation file of TASEDITOR_LUA class
#include "taseditor_project.h"
extern TASEDITOR_WINDOW taseditor_window;
extern INPUT_HISTORY history;
extern MARKERS current_markers;
extern BOOKMARKS bookmarks;
extern RECORDER recorder;
extern PLAYBACK playback;
extern TASEDITOR_LIST list;
extern TASEDITOR_SELECTION selection;
extern void TaseditorUpdateManualFunctionStatus();
TASEDITOR_LUA::TASEDITOR_LUA()
{
}
void TASEDITOR_LUA::init()
{
hwndRunFunction = GetDlgItem(taseditor_window.hwndTasEditor, TASEDIT_RUN_MANUAL);
TaseditorUpdateManualFunctionStatus();
reset();
}
void TASEDITOR_LUA::reset()
{
}
void TASEDITOR_LUA::update()
{
}
void TASEDITOR_LUA::EnableRunFunction()
{
EnableWindow(hwndRunFunction, true);
}
void TASEDITOR_LUA::DisableRunFunction()
{
EnableWindow(hwndRunFunction, false);
}
// --------------------------------------------------------------------------------
// Lua functions of taseditor library
// bool taseditor.engaged()
bool TASEDITOR_LUA::engaged()
{
return FCEUMOV_Mode(MOVIEMODE_TASEDIT);
}
// bool taseditor.markedframe(int frame)
bool TASEDITOR_LUA::markedframe(int frame)
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
return current_markers.GetMarker(frame) != 0;
else
return false;
}
// int taseditor.getmarker(int frame)
int TASEDITOR_LUA::getmarker(int frame)
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
return current_markers.GetMarkerUp(frame);
else
return -1;
}
// int taseditor.setmarker(int frame)
int TASEDITOR_LUA::setmarker(int frame)
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
int marker_id = current_markers.GetMarker(frame);
if(!marker_id)
{
marker_id = current_markers.SetMarker(frame);
if (marker_id)
{
// new marker was created - register changes in TAS Editor
history.RegisterMarkersChange(MODTYPE_LUA_MARKER_SET, frame);
selection.must_find_current_marker = playback.must_find_current_marker = true;
list.SetHeaderColumnLight(COLUMN_FRAMENUM, HEADER_LIGHT_MAX);
}
}
return marker_id;
} else
return -1;
}
// taseditor.clearmarker(int frame)
void TASEDITOR_LUA::clearmarker(int frame)
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
if (current_markers.GetMarker(frame))
{
current_markers.ClearMarker(frame);
// marker was deleted - register changes in TAS Editor
history.RegisterMarkersChange(MODTYPE_LUA_MARKER_UNSET, frame);
selection.must_find_current_marker = playback.must_find_current_marker = true;
list.SetHeaderColumnLight(COLUMN_FRAMENUM, HEADER_LIGHT_MAX);
}
}
}
// string taseditor.getnote(int index)
const char* TASEDITOR_LUA::getnote(int index)
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
return current_markers.GetNote(index).c_str();
else
return NULL;
}
// taseditor.setnote(int index, string newtext)
void TASEDITOR_LUA::setnote(int index, const char* newtext)
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
// rename only if newtext is different from old text
char text[MAX_NOTE_LEN];
strncpy(text, newtext, MAX_NOTE_LEN - 1);
if (strcmp(current_markers.GetNote(index).c_str(), text))
{
// text differs from old note - rename
current_markers.SetNote(index, text);
history.RegisterMarkersChange(MODTYPE_LUA_MARKER_RENAME, current_markers.GetMarkerFrame(index));
selection.must_find_current_marker = playback.must_find_current_marker = true;
}
}
}
// int taseditor.getcurrentbranch()
int TASEDITOR_LUA::getcurrentbranch()
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
return bookmarks.GetCurrentBranch();
else
return -1;
}
// string taseditor.getrecordermode()
const char* TASEDITOR_LUA::getrecordermode()
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
return recorder.GetRecordingMode();
else
return NULL;
}
// int taseditor.getplaybacktarget()
int TASEDITOR_LUA::getplaybacktarget()
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
return playback.pause_frame - 1;
else
return -1;
}
// taseditor.setplayback()
void TASEDITOR_LUA::setplayback(int frame)
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
playback.JumpToFrame(frame); // do not trigger lua functions after jump
}
// taseditor.stopseeking()
void TASEDITOR_LUA::stopseeking()
{
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
playback.SeekingStop();
}
// --------------------------------------------------------------------------------

View File

@ -0,0 +1,32 @@
//Specification file for TASEDITOR_LUA class
class TASEDITOR_LUA
{
public:
TASEDITOR_LUA();
void init();
void reset();
void update();
void EnableRunFunction();
void DisableRunFunction();
// Taseditor Lua library
bool engaged();
bool markedframe(int frame);
int getmarker(int frame);
int setmarker(int frame);
void clearmarker(int frame);
const char* getnote(int index);
void setnote(int index, const char* newtext);
int getcurrentbranch();
const char* getrecordermode();
int getplaybacktarget();
void setplayback(int frame);
void stopseeking();
private:
HWND hwndRunFunction;
};

View File

@ -1,38 +1,29 @@
//Implementation file of TASEdit Project class
#include "taseditproj.h"
//Implementation file of TASEDITOR_PROJECT class
#include "taseditor_project.h"
#include "utils/xstring.h"
#include "version.h"
#define MARKERS_SAVED 1
#define BOOKMARKS_SAVED 2
#define GREENZONE_SAVED 4
#define HISTORY_SAVED 8
#define LIST_SAVED 16
#define SELECTION_SAVED 32
#define ALL_SAVED MARKERS_SAVED|BOOKMARKS_SAVED|GREENZONE_SAVED|HISTORY_SAVED|LIST_SAVED|SELECTION_SAVED
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern MARKERS current_markers;
extern BOOKMARKS bookmarks;
extern SCREENSHOT_DISPLAY screenshot_display;
extern POPUP_DISPLAY popup_display;
extern GREENZONE greenzone;
extern PLAYBACK playback;
extern RECORDER recorder;
extern INPUT_HISTORY history;
extern TASEDIT_LIST tasedit_list;
extern TASEDIT_SELECTION selection;
extern TASEDITOR_LIST list;
extern TASEDITOR_SELECTION selection;
extern void FCEU_printf(char *format, ...);
extern void FCEU_PrintError(char *format, ...);
extern bool SaveProject();
extern void RedrawWindowCaption();
extern bool SaveProjectAs();
extern int TASEdit_autosave_period;
TASEDIT_PROJECT::TASEDIT_PROJECT()
TASEDITOR_PROJECT::TASEDITOR_PROJECT()
{
}
void TASEDIT_PROJECT::init()
void TASEDITOR_PROJECT::init()
{
// init new project
projectFile = "";
@ -41,24 +32,27 @@ void TASEDIT_PROJECT::init()
reset();
}
void TASEDIT_PROJECT::reset()
void TASEDITOR_PROJECT::reset()
{
changed = false;
}
void TASEDIT_PROJECT::update()
void TASEDITOR_PROJECT::update()
{
// if it's time to autosave - save
if (changed && TASEdit_autosave_period && clock() >= next_save_shedule)
// if it's time to autosave - pop Save As dialog
if (changed && taseditor_config.autosave_period && clock() >= next_save_shedule)
{
SaveProject();
if (taseditor_config.silent_autosave)
SaveProject();
else
SaveProjectAs();
// in case user pressed Cancel, postpone saving to next time
SheduleNextAutosave();
}
}
bool TASEDIT_PROJECT::save()
bool TASEDITOR_PROJECT::save()
{
std::string PFN = GetProjectFile();
if (PFN.empty()) return false;
@ -75,7 +69,7 @@ bool TASEDIT_PROJECT::save()
bookmarks.save(ofs);
greenzone.save(ofs);
history.save(ofs);
tasedit_list.save(ofs);
list.save(ofs);
selection.save(ofs);
delete ofs;
@ -84,7 +78,7 @@ bool TASEDIT_PROJECT::save()
this->reset();
return true;
}
bool TASEDIT_PROJECT::save_compact(char* filename, bool save_binary, bool save_markers, bool save_bookmarks, bool save_greenzone, bool save_history, bool save_list, bool save_selection)
bool TASEDITOR_PROJECT::save_compact(char* filename, bool save_binary, bool save_markers, bool save_bookmarks, bool save_greenzone, bool save_history, bool save_list, bool save_selection)
{
EMUFILE_FILE* ofs = FCEUD_UTF8_fstream(filename,"wb");
@ -104,7 +98,7 @@ bool TASEDIT_PROJECT::save_compact(char* filename, bool save_binary, bool save_m
bookmarks.save(ofs, save_bookmarks);
greenzone.save(ofs, save_greenzone);
history.save(ofs, save_history);
tasedit_list.save(ofs, save_list);
list.save(ofs, save_list);
selection.save(ofs, save_selection);
delete ofs;
@ -112,7 +106,7 @@ bool TASEDIT_PROJECT::save_compact(char* filename, bool save_binary, bool save_m
playback.updateProgressbar();
return true;
}
bool TASEDIT_PROJECT::load(char* fullname)
bool TASEDITOR_PROJECT::load(char* fullname)
{
EMUFILE_FILE ifs(fullname, "rb");
@ -145,19 +139,19 @@ bool TASEDIT_PROJECT::load(char* fullname)
bookmarks.load(&ifs);
greenzone.load(&ifs);
history.load(&ifs);
tasedit_list.load(&ifs);
list.load(&ifs);
selection.load(&ifs);
playback.reset();
recorder.reset();
screenshot_display.reset();
popup_display.reset();
reset();
RenameProject(fullname);
return true;
}
void TASEDIT_PROJECT::RenameProject(char* new_fullname)
void TASEDITOR_PROJECT::RenameProject(char* new_fullname)
{
projectFile = new_fullname;
char drv[512], dir[512], name[512], ext[512]; // For getting the filename
@ -168,35 +162,35 @@ void TASEDIT_PROJECT::RenameProject(char* new_fullname)
fm2FileName = thisfm2name;
}
// -----------------------------------------------------------------
std::string TASEDIT_PROJECT::GetProjectFile()
std::string TASEDITOR_PROJECT::GetProjectFile()
{
return projectFile;
}
std::string TASEDIT_PROJECT::GetProjectName()
std::string TASEDITOR_PROJECT::GetProjectName()
{
return projectName;
}
std::string TASEDIT_PROJECT::GetFM2Name()
std::string TASEDITOR_PROJECT::GetFM2Name()
{
return fm2FileName;
}
void TASEDIT_PROJECT::SetProjectChanged()
void TASEDITOR_PROJECT::SetProjectChanged()
{
if (!changed)
{
changed = true;
RedrawWindowCaption();
taseditor_window.RedrawCaption();
SheduleNextAutosave();
}
}
bool TASEDIT_PROJECT::GetProjectChanged()
bool TASEDITOR_PROJECT::GetProjectChanged()
{
return changed;
}
void TASEDIT_PROJECT::SheduleNextAutosave()
void TASEDITOR_PROJECT::SheduleNextAutosave()
{
if (TASEdit_autosave_period)
next_save_shedule = clock() + TASEdit_autosave_period * AUTOSAVE_PERIOD_SCALE;
if (taseditor_config.autosave_period)
next_save_shedule = clock() + taseditor_config.autosave_period * AUTOSAVE_PERIOD_SCALE;
}

View File

@ -1,10 +1,12 @@
//Specification file for the TASEdit Project class
//Specification file for the TASEDITOR_PROJECT class
#include <set>
typedef std::set<int> SelectionFrames;
#include <time.h>
#include "movie.h"
#include "../common.h"
#include "taseditor_config.h"
#include "taseditor_window.h"
#include "markers.h"
#include "inputsnapshot.h"
#include "inputhistory.h"
@ -12,16 +14,25 @@ typedef std::set<int> SelectionFrames;
#include "recorder.h"
#include "greenzone.h"
#include "bookmarks.h"
#include "tasedit_list.h"
#include "tasedit_sel.h"
#include "screenshot_display.h"
#include "taseditor_list.h"
#include "taseditor_lua.h"
#include "taseditor_sel.h"
#include "popup_display.h"
#define AUTOSAVE_PERIOD_SCALE 60000 // = 1 minute in milliseconds
class TASEDIT_PROJECT
#define MARKERS_SAVED 1
#define BOOKMARKS_SAVED 2
#define GREENZONE_SAVED 4
#define HISTORY_SAVED 8
#define LIST_SAVED 16
#define SELECTION_SAVED 32
#define ALL_SAVED MARKERS_SAVED|BOOKMARKS_SAVED|GREENZONE_SAVED|HISTORY_SAVED|LIST_SAVED|SELECTION_SAVED
class TASEDITOR_PROJECT
{
public:
TASEDIT_PROJECT();
TASEDITOR_PROJECT();
void init();
void reset();
void update();

View File

@ -1,16 +1,13 @@
//Implementation file of TASEDIT_SELECTION class
#include "taseditproj.h"
//Implementation file of TASEDITOR_SELECTION class
#include "taseditor_project.h"
#include "..\tasedit.h" // only for MARKER_NOTE_EDIT_LOWER
char selection_save_id[SELECTION_ID_LEN] = "SELECTION";
char selection_skipsave_id[SELECTION_ID_LEN] = "SELECTIOX";
extern HWND hwndTasEdit;
extern int TasEdit_undo_levels;
extern int marker_note_edit;
extern TASEDITOR_CONFIG taseditor_config;
extern TASEDITOR_WINDOW taseditor_window;
extern MARKERS current_markers;
extern TASEDIT_LIST tasedit_list;
extern TASEDITOR_LIST list;
extern int marker_note_edit;
extern void UpdateMarkerNote();
@ -18,6 +15,9 @@ LRESULT APIENTRY LowerMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
WNDPROC selectionMarkerEdit_oldWndproc;
// resources
char selection_save_id[SELECTION_ID_LEN] = "SELECTION";
char selection_skipsave_id[SELECTION_ID_LEN] = "SELECTIOX";
char selectionText[] = "Selection: ";
char selectionEmptyText[] = "Selection: no";
char numTextRow[] = "1 row, ";
@ -28,21 +28,21 @@ char clipboardText[] = "Clipboard: ";
char clipboardEmptyText[] = "Clipboard: empty";
char lowerMarkerText[] = "Marker ";
TASEDIT_SELECTION::TASEDIT_SELECTION()
TASEDITOR_SELECTION::TASEDITOR_SELECTION()
{
}
void TASEDIT_SELECTION::init()
void TASEDITOR_SELECTION::init()
{
hwndPrevMarker = GetDlgItem(hwndTasEdit, TASEDIT_PREV_MARKER);
hwndNextMarker = GetDlgItem(hwndTasEdit, TASEDIT_NEXT_MARKER);
hwndTextSelection = GetDlgItem(hwndTasEdit, IDC_TEXT_SELECTION);
hwndTextClipboard = GetDlgItem(hwndTasEdit, IDC_TEXT_CLIPBOARD);
hwndSelectionMarker = GetDlgItem(hwndTasEdit, IDC_SELECTION_MARKER);
SendMessage(hwndSelectionMarker, WM_SETFONT, (WPARAM)tasedit_list.hMarkersFont, 0);
hwndSelectionMarkerEdit = GetDlgItem(hwndTasEdit, IDC_SELECTION_MARKER_EDIT);
hwndPrevMarker = GetDlgItem(taseditor_window.hwndTasEditor, TASEDIT_PREV_MARKER);
hwndNextMarker = GetDlgItem(taseditor_window.hwndTasEditor, TASEDIT_NEXT_MARKER);
hwndTextSelection = GetDlgItem(taseditor_window.hwndTasEditor, IDC_TEXT_SELECTION);
hwndTextClipboard = GetDlgItem(taseditor_window.hwndTasEditor, IDC_TEXT_CLIPBOARD);
hwndSelectionMarker = GetDlgItem(taseditor_window.hwndTasEditor, IDC_SELECTION_MARKER);
SendMessage(hwndSelectionMarker, WM_SETFONT, (WPARAM)list.hMarkersFont, 0);
hwndSelectionMarkerEdit = GetDlgItem(taseditor_window.hwndTasEditor, IDC_SELECTION_MARKER_EDIT);
SendMessage(hwndSelectionMarkerEdit, EM_SETLIMITTEXT, MAX_NOTE_LEN - 1, 0);
SendMessage(hwndSelectionMarkerEdit, WM_SETFONT, (WPARAM)tasedit_list.hMarkersEditFont, 0);
SendMessage(hwndSelectionMarkerEdit, WM_SETFONT, (WPARAM)list.hMarkersEditFont, 0);
// subclass the edit control
selectionMarkerEdit_oldWndproc = (WNDPROC)SetWindowLong(hwndSelectionMarkerEdit, GWL_WNDPROC, (LONG)LowerMarkerEditWndProc);
@ -52,20 +52,20 @@ void TASEDIT_SELECTION::init()
CheckClipboard();
RedrawTextClipboard();
}
void TASEDIT_SELECTION::free()
void TASEDITOR_SELECTION::free()
{
// clear history
selections_history.resize(0);
history_total_items = 0;
temp_selection.clear();
}
void TASEDIT_SELECTION::reset()
void TASEDITOR_SELECTION::reset()
{
free();
// init vars
shown_marker = 0;
last_selection_beginning = -1;
history_size = TasEdit_undo_levels + 1;
history_size = taseditor_config.undo_levels + 1;
selections_history.resize(history_size);
history_start_pos = 0;
history_cursor_pos = -1;
@ -74,14 +74,14 @@ void TASEDIT_SELECTION::reset()
track_selection_changes = true;
reset_vars();
}
void TASEDIT_SELECTION::reset_vars()
void TASEDITOR_SELECTION::reset_vars()
{
old_prev_marker_button_state = prev_marker_button_state = false;
old_next_marker_button_state = next_marker_button_state = false;
must_redraw_text = true;
must_find_current_marker = true;
}
void TASEDIT_SELECTION::update()
void TASEDITOR_SELECTION::update()
{
// keep selection within movie limits
if (CurrentSelection().size())
@ -179,7 +179,7 @@ void TASEDIT_SELECTION::update()
}
void TASEDIT_SELECTION::RedrawTextClipboard()
void TASEDITOR_SELECTION::RedrawTextClipboard()
{
if (clipboard_selection.size())
{
@ -212,7 +212,7 @@ void TASEDIT_SELECTION::RedrawTextClipboard()
} else
SetWindowText(hwndTextClipboard, clipboardEmptyText);
}
void TASEDIT_SELECTION::RedrawMarker()
void TASEDITOR_SELECTION::RedrawMarker()
{
// redraw marker num
char new_text[MAX_NOTE_LEN] = {0};
@ -227,7 +227,7 @@ void TASEDIT_SELECTION::RedrawMarker()
SetWindowText(hwndSelectionMarkerEdit, new_text);
}
void TASEDIT_SELECTION::JumpPrevMarker()
void TASEDITOR_SELECTION::JumpPrevMarker()
{
// jump to previous marker
int index = GetCurrentSelectionBeginning();
@ -239,7 +239,7 @@ void TASEDIT_SELECTION::JumpPrevMarker()
else
JumpToFrame(0);
}
void TASEDIT_SELECTION::JumpNextMarker()
void TASEDITOR_SELECTION::JumpNextMarker()
{
// jump to next marker
int index = GetCurrentSelectionBeginning();
@ -253,14 +253,14 @@ void TASEDIT_SELECTION::JumpNextMarker()
else
JumpToFrame(last_frame);
}
void TASEDIT_SELECTION::JumpToFrame(int frame)
void TASEDITOR_SELECTION::JumpToFrame(int frame)
{
ClearSelection();
SetRowSelection(frame);
tasedit_list.FollowSelection();
list.FollowSelection();
}
// ----------------------------------------------------------
void TASEDIT_SELECTION::save(EMUFILE *os, bool really_save)
void TASEDITOR_SELECTION::save(EMUFILE *os, bool really_save)
{
if (really_save)
{
@ -283,7 +283,7 @@ void TASEDIT_SELECTION::save(EMUFILE *os, bool really_save)
}
}
// returns true if couldn't load
bool TASEDIT_SELECTION::load(EMUFILE *is)
bool TASEDITOR_SELECTION::load(EMUFILE *is)
{
// read "SELECTION" string
char save_id[SELECTION_ID_LEN];
@ -344,7 +344,7 @@ error:
return true;
}
void TASEDIT_SELECTION::saveSelection(SelectionFrames& selection, EMUFILE *os)
void TASEDITOR_SELECTION::saveSelection(SelectionFrames& selection, EMUFILE *os)
{
write32le(selection.size(), os);
if (selection.size())
@ -353,7 +353,7 @@ void TASEDIT_SELECTION::saveSelection(SelectionFrames& selection, EMUFILE *os)
write32le(*it, os);
}
}
bool TASEDIT_SELECTION::loadSelection(SelectionFrames& selection, EMUFILE *is)
bool TASEDITOR_SELECTION::loadSelection(SelectionFrames& selection, EMUFILE *is)
{
int temp_int, temp_size;
selection.clear();
@ -366,7 +366,7 @@ bool TASEDIT_SELECTION::loadSelection(SelectionFrames& selection, EMUFILE *is)
}
return false;
}
bool TASEDIT_SELECTION::skiploadSelection(EMUFILE *is)
bool TASEDITOR_SELECTION::skiploadSelection(EMUFILE *is)
{
int temp_size;
if (!read32le(&temp_size, is)) return true;
@ -375,7 +375,7 @@ bool TASEDIT_SELECTION::skiploadSelection(EMUFILE *is)
}
// ----------------------------------------------------------
//used to track selection
void TASEDIT_SELECTION::ItemRangeChanged(NMLVODSTATECHANGE* info)
void TASEDITOR_SELECTION::ItemRangeChanged(NMLVODSTATECHANGE* info)
{
bool ON = !(info->uOldState & LVIS_SELECTED) && (info->uNewState & LVIS_SELECTED);
bool OFF = (info->uOldState & LVIS_SELECTED) && !(info->uNewState & LVIS_SELECTED);
@ -389,7 +389,7 @@ void TASEDIT_SELECTION::ItemRangeChanged(NMLVODSTATECHANGE* info)
must_redraw_text = true;
}
void TASEDIT_SELECTION::ItemChanged(NMLISTVIEW* info)
void TASEDITOR_SELECTION::ItemChanged(NMLISTVIEW* info)
{
int item = info->iItem;
@ -423,7 +423,7 @@ void TASEDIT_SELECTION::ItemChanged(NMLISTVIEW* info)
must_redraw_text = true;
}
// ----------------------------------------------------------
void TASEDIT_SELECTION::AddNewSelectionToHistory()
void TASEDITOR_SELECTION::AddNewSelectionToHistory()
{
// create new empty selection
SelectionFrames selectionFrames;
@ -445,7 +445,7 @@ void TASEDIT_SELECTION::AddNewSelectionToHistory()
selections_history[(history_start_pos + history_cursor_pos) % history_size] = selectionFrames;
}
void TASEDIT_SELECTION::jump(int new_pos)
void TASEDITOR_SELECTION::jump(int new_pos)
{
if (new_pos < 0) new_pos = 0; else if (new_pos >= history_total_items) new_pos = history_total_items-1;
if (new_pos == history_cursor_pos) return;
@ -457,22 +457,22 @@ void TASEDIT_SELECTION::jump(int new_pos)
// also keep selection within list
update();
}
void TASEDIT_SELECTION::undo()
void TASEDITOR_SELECTION::undo()
{
jump(history_cursor_pos - 1);
}
void TASEDIT_SELECTION::redo()
void TASEDITOR_SELECTION::redo()
{
jump(history_cursor_pos + 1);
}
void TASEDIT_SELECTION::MemorizeClipboardSelection()
void TASEDITOR_SELECTION::MemorizeClipboardSelection()
{
// copy currently strobed selection data to clipboard_selection
clipboard_selection = temp_selection;
RedrawTextClipboard();
}
void TASEDIT_SELECTION::ReselectClipboard()
void TASEDITOR_SELECTION::ReselectClipboard()
{
if (clipboard_selection.size() == 0) return;
@ -483,9 +483,9 @@ void TASEDIT_SELECTION::ReselectClipboard()
update();
}
// retrieves some information from clipboard to clipboard_selection
void TASEDIT_SELECTION::CheckClipboard()
void TASEDITOR_SELECTION::CheckClipboard()
{
if (OpenClipboard(hwndTasEdit))
if (OpenClipboard(taseditor_window.hwndTasEditor))
{
// check if clipboard contains TAS Editor input data
HANDLE hGlobal = GetClipboardData(CF_TEXT);
@ -525,40 +525,40 @@ void TASEDIT_SELECTION::CheckClipboard()
}
}
// ----------------------------------------------------------
void TASEDIT_SELECTION::ClearSelection()
void TASEDITOR_SELECTION::ClearSelection()
{
ListView_SetItemState(tasedit_list.hwndList, -1, 0, LVIS_FOCUSED|LVIS_SELECTED);
ListView_SetItemState(list.hwndList, -1, 0, LVIS_FOCUSED|LVIS_SELECTED);
}
void TASEDIT_SELECTION::ClearRowSelection(int index)
void TASEDITOR_SELECTION::ClearRowSelection(int index)
{
ListView_SetItemState(tasedit_list.hwndList, index, 0, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, index, 0, LVIS_SELECTED);
}
void TASEDIT_SELECTION::EnforceSelectionToList()
void TASEDITOR_SELECTION::EnforceSelectionToList()
{
track_selection_changes = false;
ClearSelection();
for(SelectionFrames::reverse_iterator it(CurrentSelection().rbegin()); it != CurrentSelection().rend(); it++)
{
ListView_SetItemState(tasedit_list.hwndList, *it, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, *it, LVIS_SELECTED, LVIS_SELECTED);
}
track_selection_changes = true;
}
void TASEDIT_SELECTION::SelectAll()
void TASEDITOR_SELECTION::SelectAll()
{
ListView_SetItemState(tasedit_list.hwndList, -1, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, -1, LVIS_SELECTED, LVIS_SELECTED);
}
void TASEDIT_SELECTION::SetRowSelection(int index)
void TASEDITOR_SELECTION::SetRowSelection(int index)
{
ListView_SetItemState(tasedit_list.hwndList, index, LVIS_FOCUSED|LVIS_SELECTED, LVIS_FOCUSED|LVIS_SELECTED);
ListView_SetItemState(list.hwndList, index, LVIS_FOCUSED|LVIS_SELECTED, LVIS_FOCUSED|LVIS_SELECTED);
}
void TASEDIT_SELECTION::SetRegionSelection(int start, int end)
void TASEDITOR_SELECTION::SetRegionSelection(int start, int end)
{
for (int i = start; i <= end; ++i)
ListView_SetItemState(tasedit_list.hwndList, i, LVIS_FOCUSED|LVIS_SELECTED, LVIS_FOCUSED|LVIS_SELECTED);
ListView_SetItemState(list.hwndList, i, LVIS_FOCUSED|LVIS_SELECTED, LVIS_FOCUSED|LVIS_SELECTED);
}
void TASEDIT_SELECTION::SelectMidMarkers()
void TASEDITOR_SELECTION::SelectMidMarkers()
{
int center, upper_border, lower_border;
int upper_marker, lower_marker;
@ -580,7 +580,7 @@ void TASEDIT_SELECTION::SelectMidMarkers()
if (current_markers.GetMarker(lower_marker)) break;
// clear selection without clearing focused, because otherwise there's strange bug when quickly pressing Ctrl+A right after clicking on already selected row
ListView_SetItemState(tasedit_list.hwndList, -1, 0, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, -1, 0, LVIS_SELECTED);
// special case
if (upper_marker == -1 && lower_marker == movie_size)
@ -595,7 +595,7 @@ void TASEDIT_SELECTION::SelectMidMarkers()
// default: select all between markers
for (int i = upper_marker+1; i < lower_marker; ++i)
{
ListView_SetItemState(tasedit_list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
}
} else if (upper_border == upper_marker+1 && lower_border == lower_marker-1)
{
@ -604,14 +604,14 @@ void TASEDIT_SELECTION::SelectMidMarkers()
if (lower_marker >= movie_size) lower_marker = movie_size - 1;
for (int i = upper_marker; i <= lower_marker; ++i)
{
ListView_SetItemState(tasedit_list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
}
} else if (upper_border <= upper_marker && lower_border >= lower_marker)
{
// selected all between markers and both markers selected too - now deselect lower marker
for (int i = upper_marker; i < lower_marker; ++i)
{
ListView_SetItemState(tasedit_list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
}
} else if (upper_border == upper_marker && lower_border == lower_marker-1)
{
@ -619,52 +619,52 @@ void TASEDIT_SELECTION::SelectMidMarkers()
if (lower_marker >= movie_size) lower_marker = movie_size - 1;
for (int i = upper_marker+1; i <= lower_marker; ++i)
{
ListView_SetItemState(tasedit_list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
}
} else if (upper_border == upper_marker+1 && lower_border == lower_marker)
{
// selected all between markers and lower marker selected too - now deselect lower marker (return to "selected all between markers")
for (int i = upper_marker + 1; i < lower_marker; ++i)
{
ListView_SetItemState(tasedit_list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
ListView_SetItemState(list.hwndList, i, LVIS_SELECTED, LVIS_SELECTED);
}
}
}
// getters
int TASEDIT_SELECTION::GetCurrentSelectionSize()
int TASEDITOR_SELECTION::GetCurrentSelectionSize()
{
return selections_history[(history_start_pos + history_cursor_pos) % history_size].size();
}
int TASEDIT_SELECTION::GetCurrentSelectionBeginning()
int TASEDITOR_SELECTION::GetCurrentSelectionBeginning()
{
if (selections_history[(history_start_pos + history_cursor_pos) % history_size].size())
return *selections_history[(history_start_pos + history_cursor_pos) % history_size].begin();
else
return -1;
}
bool TASEDIT_SELECTION::CheckFrameSelected(int frame)
bool TASEDITOR_SELECTION::CheckFrameSelected(int frame)
{
if(CurrentSelection().find(frame) == CurrentSelection().end())
return false;
return true;
}
SelectionFrames* TASEDIT_SELECTION::MakeStrobe()
SelectionFrames* TASEDITOR_SELECTION::MakeStrobe()
{
// copy current selection to temp_selection
temp_selection = selections_history[(history_start_pos + history_cursor_pos) % history_size];
return &temp_selection;
}
SelectionFrames& TASEDIT_SELECTION::GetStrobedSelection()
SelectionFrames& TASEDITOR_SELECTION::GetStrobedSelection()
{
return temp_selection;
}
SelectionFrames& TASEDIT_SELECTION::GetInsertedSet()
SelectionFrames& TASEDITOR_SELECTION::GetInsertedSet()
{
return inserted_set;
}
// this getter is only for inside-class use
SelectionFrames& TASEDIT_SELECTION::CurrentSelection()
SelectionFrames& TASEDITOR_SELECTION::CurrentSelection()
{
return selections_history[(history_start_pos + history_cursor_pos) % history_size];
}
@ -674,7 +674,7 @@ LRESULT APIENTRY LowerMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
if (marker_note_edit == MARKER_NOTE_EDIT_LOWER)
{
extern PLAYBACK playback;
extern TASEDIT_SELECTION selection;
extern TASEDITOR_SELECTION selection;
switch(msg)
{
case WM_CHAR:
@ -684,11 +684,11 @@ LRESULT APIENTRY LowerMarkerEditWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPAR
case VK_ESCAPE:
// revert text to original note text
SetWindowText(selection.hwndSelectionMarkerEdit, current_markers.GetNote(selection.shown_marker).c_str());
SetFocus(tasedit_list.hwndList);
SetFocus(list.hwndList);
return 0;
case VK_RETURN:
// exit and save text changes
SetFocus(tasedit_list.hwndList);
SetFocus(list.hwndList);
return 0;
case VK_TAB:
// switch to upper edit control (also exit and save text changes)

View File

@ -1,11 +1,11 @@
//Specification file for TASEDIT_SELECTION class
//Specification file for TASEDITOR_SELECTION class
#define SELECTION_ID_LEN 10
class TASEDIT_SELECTION
class TASEDITOR_SELECTION
{
public:
TASEDIT_SELECTION();
TASEDITOR_SELECTION();
void init();
void free();
void reset();

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,40 @@
//Specification file for TASEDITOR_WINDOW class
enum ECONTEXTMENU
{
CONTEXTMENU_STRAY = 0,
CONTEXTMENU_SELECTED = 1,
};
class TASEDITOR_WINDOW
{
public:
TASEDITOR_WINDOW();
void init();
void exit();
void reset();
void update();
HWND hwndTasEditor, hwndFindNote;
HMENU hmenu, hrmenu;
HICON hTaseditorIcon;
bool TASEditor_focus;
void RedrawCaption();
void RedrawWindow();
void RightClick(LPNMITEMACTIVATE info);
void StrayClickMenu(LPNMITEMACTIVATE info);
void RightClickMenu(LPNMITEMACTIVATE info);
void UpdateCheckedItems();
void UpdateRecentProjectsMenu();
void UpdateRecentProjectsArray(const char* addString);
void RemoveRecentProject(unsigned int which);
void LoadRecentProject(int slot);
private:
};

View File

@ -9,6 +9,8 @@ enum LuaCallID
LUACALL_BEFOREEXIT,
LUACALL_BEFORESAVE,
LUACALL_AFTERLOAD,
LUACALL_TASEDITOR_AUTO,
LUACALL_TASEDITOR_MANUAL,
LUACALL_COUNT
};

View File

@ -52,11 +52,13 @@
#include "drivers/win/window.h"
#include "drivers/win/ntview.h"
#include "./drivers/win/taseditlib/taseditor_window.h"
#include "./drivers/win/taseditlib/markers.h"
#include "./drivers/win/taseditlib/inputsnapshot.h"
#include "./drivers/win/taseditlib/bookmarks.h"
extern bool Tasedit_rewind_now;
extern bool Taseditor_rewind_now;
extern BOOKMARKS bookmarks;
extern TASEDITOR_WINDOW taseditor_window;
#endif // WIN32
//it is easier to declare these input drivers extern here than include a bunch of files
@ -1116,8 +1118,7 @@ static void ReloadRom(void)
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
// load most recent project
extern void LoadRecentProject(int slot);
LoadRecentProject(0);
taseditor_window.LoadRecentProject(0);
} else
{
// load most recent ROM
@ -1166,13 +1167,13 @@ static void ToggleFullscreen(void)
static void TaseditRewindOn(void)
{
#ifdef WIN32
Tasedit_rewind_now = true;
Taseditor_rewind_now = true;
#endif
}
static void TaseditRewindOff(void)
{
#ifdef WIN32
Tasedit_rewind_now = false;
Taseditor_rewind_now = false;
#endif
}

View File

@ -39,14 +39,9 @@
#include "fceulua.h"
#ifdef WIN32
#include "drivers/win/taseditlib/taseditproj.h"
extern INPUT_HISTORY history;
extern MARKERS current_markers;
extern BOOKMARKS bookmarks;
extern RECORDER recorder;
extern PLAYBACK playback;
extern TASEDIT_LIST tasedit_list;
extern TASEDIT_SELECTION selection;
#include "drivers/win/common.h"
#include "drivers/win/taseditlib/taseditor_lua.h"
extern TASEDITOR_LUA taseditor_lua;
#endif
extern "C"
@ -127,6 +122,7 @@ extern INT_PTR CALLBACK DlgLuaScriptDialog(HWND hDlg, UINT msg, WPARAM wParam, L
extern void PrintToWindowConsole(int hDlgAsInt, const char* str);
extern void WinLuaOnStart(int hDlgAsInt);
extern void WinLuaOnStop(int hDlgAsInt);
void TaseditorUpdateManualFunctionStatus();
#endif
static lua_State *L;
@ -200,6 +196,9 @@ static const char* luaCallIDStrings [] =
"CALL_BEFOREEXIT",
"CALL_BEFORESAVE",
"CALL_AFTERLOAD",
"CALL_TASEDITOR_AUTO",
"CALL_TASEDITOR_MANUAL",
};
//make sure we have the right number of strings
@ -237,6 +236,9 @@ static void FCEU_LuaOnStop() {
FCEUD_SetEmulationSpeed(EMUSPEED_NORMAL); //TODO: Ideally lua returns the speed to the speed the user set before running the script
//rather than returning it to normal, and turbo off. Perhaps some flags and a FCEUD_GetEmulationSpeed function
FCEUD_TurboOff(); //Turn off turbo
#ifdef WIN32
TaseditorUpdateManualFunctionStatus();
#endif
}
@ -374,6 +376,12 @@ static int emu_frameadvance(lua_State *L) {
// It's actually rather disappointing...
}
// bool emu.paused() (getter)
static int emu_paused(lua_State *L)
{
lua_pushboolean(L, FCEUI_EmulationPaused() != 0);
return 1;
}
// emu.pause()
//
@ -1884,6 +1892,32 @@ void ForceExecuteLuaFrameFunctions()
CallRegisteredLuaFunctions(LUACALL_AFTEREMULATION);
}
void TaseditorAutoFunction()
{
CallRegisteredLuaFunctions(LUACALL_TASEDITOR_AUTO);
}
void TaseditorManualFunction()
{
CallRegisteredLuaFunctions(LUACALL_TASEDITOR_MANUAL);
}
void TaseditorUpdateManualFunctionStatus()
{
#ifdef WIN32
if (L)
{
// check if LUACALL_TASEDITOR_MANUAL function is not nil
lua_getfield(L, LUA_REGISTRYINDEX, luaCallIDStrings[LUACALL_TASEDITOR_MANUAL]);
if (lua_isfunction(L, -1))
taseditor_lua.EnableRunFunction();
else
taseditor_lua.DisableRunFunction();
lua_pop(L, 1);
} else taseditor_lua.DisableRunFunction();
#endif
}
// Not for the signed versions though
static int memory_readbytesigned(lua_State *L) {
signed char c = (signed char) FCEU_CheatGetByte(luaL_checkinteger(L,1));
@ -4261,10 +4295,42 @@ static int sound_get(lua_State *L)
// TAS Editor functions library
// bool taseditor.registerauto()
static int taseditor_registerauto(lua_State *L)
{
if (!lua_isnil(L,1))
luaL_checktype(L, 1, LUA_TFUNCTION);
lua_settop(L,1);
lua_getfield(L, LUA_REGISTRYINDEX, luaCallIDStrings[LUACALL_TASEDITOR_AUTO]);
lua_insert(L,1);
lua_setfield(L, LUA_REGISTRYINDEX, luaCallIDStrings[LUACALL_TASEDITOR_AUTO]);
//StopScriptIfFinished(luaStateToUIDMap[L]);
return 1;
}
// bool taseditor.registermanual()
static int taseditor_registermanual(lua_State *L)
{
if (!lua_isnil(L,1))
luaL_checktype(L, 1, LUA_TFUNCTION);
lua_settop(L,1);
lua_getfield(L, LUA_REGISTRYINDEX, luaCallIDStrings[LUACALL_TASEDITOR_MANUAL]);
lua_insert(L,1);
lua_setfield(L, LUA_REGISTRYINDEX, luaCallIDStrings[LUACALL_TASEDITOR_MANUAL]);
#ifdef WIN32
TaseditorUpdateManualFunctionStatus();
#endif
return 1;
}
// bool taseditor.engaged()
static int taseditor_engaged(lua_State *L)
{
lua_pushboolean(L, FCEUMOV_Mode(MOVIEMODE_TASEDIT));
#ifdef WIN32
lua_pushboolean(L, taseditor_lua.engaged());
#else
lua_pushboolean(L, false);
#endif
return 1;
}
@ -4272,15 +4338,10 @@ static int taseditor_engaged(lua_State *L)
static int taseditor_markedframe(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
int frame = luaL_checkinteger(L, 1);
lua_pushboolean(L, current_markers.GetMarker(frame) != 0);
} else
lua_pushboolean(L, taseditor_lua.markedframe(luaL_checkinteger(L, 1)));
#else
lua_pushboolean(L, false);
#endif
{
lua_pushboolean(L, false);
}
return 1;
}
@ -4288,15 +4349,10 @@ static int taseditor_markedframe(lua_State *L)
static int taseditor_getmarker(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
int frame = luaL_checkinteger(L, 1);
lua_pushinteger(L, current_markers.GetMarkerUp(frame));
} else
lua_pushinteger(L, taseditor_lua.getmarker(luaL_checkinteger(L, 1)));
#else
lua_pushinteger(L, -1);
#endif
{
lua_pushinteger(L, -1);
}
return 1;
}
@ -4304,27 +4360,10 @@ static int taseditor_getmarker(lua_State *L)
static int taseditor_setmarker(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
int frame = luaL_checkinteger(L, 1);
int marker_id = current_markers.GetMarker(frame);
if(!marker_id)
{
marker_id = current_markers.SetMarker(frame);
if (marker_id)
{
// new marker was created - register changes in TAS Editor
history.RegisterMarkersChange(MODTYPE_LUA_MARKER_SET, frame);
selection.must_find_current_marker = playback.must_find_current_marker = true;
tasedit_list.SetHeaderColumnLight(COLUMN_FRAMENUM, HEADER_LIGHT_MAX);
}
}
lua_pushinteger(L, marker_id);
} else
lua_pushinteger(L, taseditor_lua.setmarker(luaL_checkinteger(L, 1)));
#else
lua_pushinteger(L, -1);
#endif
{
lua_pushinteger(L, -1);
}
return 1;
}
@ -4332,18 +4371,7 @@ static int taseditor_setmarker(lua_State *L)
static int taseditor_clearmarker(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
int frame = luaL_checkinteger(L, 1);
if (current_markers.GetMarker(frame))
{
current_markers.ClearMarker(frame);
// marker was deleted - register changes in TAS Editor
history.RegisterMarkersChange(MODTYPE_LUA_MARKER_UNSET, frame);
selection.must_find_current_marker = playback.must_find_current_marker = true;
tasedit_list.SetHeaderColumnLight(COLUMN_FRAMENUM, HEADER_LIGHT_MAX);
}
}
taseditor_lua.clearmarker(luaL_checkinteger(L, 1));
#endif
return 0;
}
@ -4352,15 +4380,10 @@ static int taseditor_clearmarker(lua_State *L)
static int taseditor_getnote(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
int index = luaL_checkinteger(L, 1);
lua_pushstring(L, current_markers.GetNote(index).c_str());
} else
lua_pushstring(L, taseditor_lua.getnote(luaL_checkinteger(L, 1)));
#else
lua_pushnil(L);
#endif
{
lua_pushnil(L);
}
return 1;
}
@ -4368,19 +4391,7 @@ static int taseditor_getnote(lua_State *L)
static int taseditor_setnote(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
int index = luaL_checkinteger(L, 1);
char newtext[MAX_NOTE_LEN];
strncpy(newtext, luaL_checkstring(L, 2), MAX_NOTE_LEN - 1);
if (strcmp(current_markers.GetNote(index).c_str(), newtext))
{
// text differs from old note - rename
current_markers.SetNote(index, newtext);
history.RegisterMarkersChange(MODTYPE_LUA_MARKER_RENAME, current_markers.GetMarkerFrame(index));
selection.must_find_current_marker = playback.must_find_current_marker = true;
}
}
taseditor_lua.setnote(luaL_checkinteger(L, 1), luaL_checkstring(L, 2));
#endif
return 0;
}
@ -4389,14 +4400,10 @@ static int taseditor_setnote(lua_State *L)
static int taseditor_getcurrentbranch(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
lua_pushinteger(L, bookmarks.GetCurrentBranch());
} else
lua_pushinteger(L, taseditor_lua.getcurrentbranch());
#else
lua_pushinteger(L, -1);
#endif
{
lua_pushinteger(L, -1);
}
return 1;
}
@ -4404,14 +4411,10 @@ static int taseditor_getcurrentbranch(lua_State *L)
static int taseditor_getrecordermode(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
lua_pushstring(L, recorder.GetRecordingMode());
} else
lua_pushstring(L, taseditor_lua.getrecordermode());
#else
lua_pushnil(L);
#endif
{
lua_pushnil(L);
}
return 1;
}
@ -4419,17 +4422,35 @@ static int taseditor_getrecordermode(lua_State *L)
static int taseditor_getplaybacktarget(lua_State *L)
{
#ifdef WIN32
if (FCEUMOV_Mode(MOVIEMODE_TASEDIT))
{
lua_pushinteger(L, playback.pause_frame - 1);
} else
lua_pushinteger(L, taseditor_lua.getplaybacktarget());
#else
lua_pushinteger(L, -1);
#endif
{
lua_pushinteger(L, -1);
}
return 1;
}
// taseditor.setplayback(int frame)
static int taseditor_setplayback(lua_State *L)
{
#ifdef WIN32
taseditor_lua.setplayback(luaL_checkinteger(L, 1));
#endif
return 0;
}
// taseditor.stopseeking()
static int taseditor_stopseeking(lua_State *L)
{
#ifdef WIN32
taseditor_lua.stopseeking();
#endif
return 0;
}
static int doPopup(lua_State *L, const char* deftype, const char* deficon) {
const char *str = luaL_checkstring(L, 1);
const char* type = lua_type(L,2) == LUA_TSTRING ? lua_tostring(L,2) : deftype;
@ -5018,6 +5039,7 @@ static const struct luaL_reg emulib [] = {
{"softreset", emu_softreset},
{"speedmode", emu_speedmode},
{"frameadvance", emu_frameadvance},
{"paused", emu_paused},
{"pause", emu_pause},
{"unpause", emu_unpause},
{"exec_count", emu_exec_count},
@ -5188,6 +5210,8 @@ static const struct luaL_reg soundlib[] = {
static const struct luaL_reg taseditorlib[] = {
{"registerauto", taseditor_registerauto},
{"registermanual", taseditor_registermanual},
{"engaged", taseditor_engaged},
{"markedframe", taseditor_markedframe},
{"getmarker", taseditor_getmarker},
@ -5198,6 +5222,8 @@ static const struct luaL_reg taseditorlib[] = {
{"getcurrentbranch", taseditor_getcurrentbranch},
{"getrecordermode", taseditor_getrecordermode},
{"getplaybacktarget", taseditor_getplaybacktarget},
{"setplayback", taseditor_setplayback},
{"stopseeking", taseditor_stopseeking},
{NULL,NULL}
};

View File

@ -396,6 +396,7 @@ MovieData::MovieData()
, PPUflag(false)
, rerecordCount(0)
, binaryFlag(false)
, loadFrameCount(-1)
, microphone(false)
{
memset(&romChecksum,0,sizeof(MD5DATA));

View File

@ -1,6 +1,6 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual C++ Express 2010
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fceux", "vc10_fceux.vcxproj", "{6893EF44-FEA3-46DF-B236-C4C200F54294}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F8647A59-ED57-4975-B40C-054BA8588E4E}"

View File

@ -428,10 +428,14 @@
<ClCompile Include="..\src\drivers\win\taseditlib\inputsnapshot.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\markers.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\playback.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\popup_display.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\recorder.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\screenshot_display.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\tasedit_list.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\tasedit_sel.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_config.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_list.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_lua.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_project.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_sel.cpp" />
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_window.cpp" />
<ClCompile Include="..\src\drivers\win\texthook.cpp" />
<ClCompile Include="..\src\drivers\win\throttle.cpp" />
<ClCompile Include="..\src\drivers\win\timing.cpp" />
@ -506,7 +510,6 @@
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsC</CompileAs>
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsC</CompileAs>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\taseditproj.cpp" />
<ClCompile Include="..\src\emufile.cpp" />
<ClCompile Include="..\src\input\arkanoid.cpp" />
<ClCompile Include="..\src\input\bworld.cpp">
@ -749,10 +752,14 @@
<ClInclude Include="..\src\drivers\win\taseditlib\inputsnapshot.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\markers.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\playback.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\popup_display.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\recorder.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\screenshot_display.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\tasedit_list.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\tasedit_sel.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_config.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_list.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_lua.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_project.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_sel.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_window.h" />
<ClInclude Include="..\src\drivers\win\texthook.h" />
<ClInclude Include="..\src\drivers\win\throttle.h" />
<ClInclude Include="..\src\drivers\win\timing.h" />
@ -766,7 +773,6 @@
<ClInclude Include="..\src\drivers\win\lua\include\lua.hpp" />
<ClInclude Include="..\src\drivers\win\lua\include\luaconf.h" />
<ClInclude Include="..\src\drivers\win\lua\include\lualib.h" />
<ClInclude Include="..\src\drivers\win\taseditlib\taseditproj.h" />
<ClInclude Include="..\src\emufile.h" />
<ClInclude Include="..\src\fir\c44100ntsc.h" />
<ClInclude Include="..\src\fir\c44100pal.h" />
@ -862,8 +868,8 @@
<None Include="..\src\drivers\win\res\icon4.ico" />
<None Include="..\src\drivers\win\res\ICON_1.ico" />
<None Include="..\src\drivers\win\res\ICON_2.ico" />
<None Include="..\src\drivers\win\res\tasedit-icon.ico" />
<None Include="..\src\drivers\win\res\tasedit-icon32.ico" />
<None Include="..\src\drivers\win\res\taseditor-icon.ico" />
<None Include="..\src\drivers\win\res\taseditor-icon32.ico" />
<None Include="..\src\drivers\win\res\te_0.bmp" />
<None Include="..\src\drivers\win\res\te_1.bmp" />
<None Include="..\src\drivers\win\res\te_10.bmp" />
@ -901,8 +907,6 @@
</CustomBuild>
<None Include="..\src\pputile.inc" />
<None Include="ClassDiagram1.cd" />
<None Include="res\tasedit-icon.ico" />
<None Include="res\tasedit-icon32.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -445,9 +445,6 @@
<ClCompile Include="..\src\drivers\win\tasedit.cpp">
<Filter>drivers\win</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\taseditproj.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\texthook.cpp">
<Filter>drivers\win</Filter>
</ClCompile>
@ -931,16 +928,28 @@
<ClCompile Include="..\src\drivers\win\taseditlib\playback.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\tasedit_list.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\tasedit_sel.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\recorder.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\screenshot_display.cpp">
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_config.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_list.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_lua.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_project.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_sel.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\taseditor_window.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
<ClCompile Include="..\src\drivers\win\taseditlib\popup_display.cpp">
<Filter>drivers\win\taseditlib</Filter>
</ClCompile>
</ItemGroup>
@ -1119,9 +1128,6 @@
<ClInclude Include="..\src\drivers\win\tasedit.h">
<Filter>drivers\win</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\taseditproj.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\texthook.h">
<Filter>drivers\win</Filter>
</ClInclude>
@ -1405,16 +1411,28 @@
<ClInclude Include="..\src\drivers\win\taseditlib\playback.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\tasedit_list.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\tasedit_sel.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\recorder.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\screenshot_display.h">
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_window.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_config.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_list.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_lua.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_project.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\taseditor_sel.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
<ClInclude Include="..\src\drivers\win\taseditlib\popup_display.h">
<Filter>drivers\win\taseditlib</Filter>
</ClInclude>
</ItemGroup>
@ -1500,10 +1518,8 @@
</None>
<None Include="..\src\drivers\win\res\icon3.ico" />
<None Include="..\src\drivers\win\res\icon4.ico" />
<None Include="res\tasedit-icon.ico" />
<None Include="..\src\drivers\win\res\tasedit-icon.ico" />
<None Include="res\tasedit-icon32.ico" />
<None Include="..\src\drivers\win\res\tasedit-icon32.ico" />
<None Include="..\src\drivers\win\res\taseditor-icon.ico" />
<None Include="..\src\drivers\win\res\taseditor-icon32.ico" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\src\auxlib.lua" />