Cocoa Port: Begin work on cleaning up and refactoring the cheat system. Also add some quality-of-life improvements to the GUI while I'm at it.
- Add new ClientCheatItem C++ class to handle cheat items, greatly reducing dependence on Objective-C code. - Remove a bunch of methods from CocoaDSCheatItem and CocoaDSCheatManager that were never used and are no longer planned to ever be used in the new code refactor. - The Cheat Manager window may now be resized. - The Action Replay code editor now uses Monaco 13 font instead of the system default font. - The command for "Enable/Disable Cheats" has been renamed to "Enable/Disable Cheat System" to help clarify that the command affects the entire cheat system as a whole, as opposed to enabling/disabling individual cheat items.
This commit is contained in:
parent
aeefd86f57
commit
ba83b68b7f
|
@ -54,7 +54,7 @@
|
|||
<string>Set Speed</string>
|
||||
<string>Enable/Disable Speed Limiter</string>
|
||||
<string>Enable/Disable Auto Frame Skip</string>
|
||||
<string>Enable/Disable Cheats</string>
|
||||
<string>Enable/Disable Cheat System</string>
|
||||
<string>Enable/Disable GPU State</string>
|
||||
</array>
|
||||
<key>DefaultInputProfiles</key>
|
||||
|
@ -805,7 +805,7 @@
|
|||
<array/>
|
||||
<key>Enable/Disable Auto Frame Skip</key>
|
||||
<array/>
|
||||
<key>Enable/Disable Cheats</key>
|
||||
<key>Enable/Disable Cheat System</key>
|
||||
<array/>
|
||||
<key>Enable/Disable GPU State</key>
|
||||
<array/>
|
||||
|
|
|
@ -829,7 +829,7 @@
|
|||
<array/>
|
||||
<key>Enable/Disable Auto Frame Skip</key>
|
||||
<array/>
|
||||
<key>Enable/Disable Cheats</key>
|
||||
<key>Enable/Disable Cheat System</key>
|
||||
<array/>
|
||||
<key>Enable/Disable GPU State</key>
|
||||
<array/>
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
along with the this software. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#undef BOOL
|
||||
|
||||
|
@ -46,6 +47,78 @@ enum CheatSystemError
|
|||
CheatSystemError_ExportError = 4
|
||||
};
|
||||
|
||||
class ClientCheatItem
|
||||
{
|
||||
protected:
|
||||
CHEATS_LIST *_engineItemPtr;
|
||||
|
||||
bool _isEnabled;
|
||||
bool _willAddFromDB;
|
||||
|
||||
CheatType _cheatType;
|
||||
std::string _descriptionString;
|
||||
void *_clientData;
|
||||
|
||||
// Internal cheat type parameters
|
||||
CheatFreezeType _freezeType;
|
||||
char _addressString[10+1];
|
||||
uint32_t _address;
|
||||
uint32_t _value;
|
||||
uint8_t _valueLength;
|
||||
|
||||
// Action Replay parameters
|
||||
uint32_t _codeCount;
|
||||
std::string _rawCodeString;
|
||||
std::string _cleanCodeString;
|
||||
|
||||
void _ConvertInternalToActionReplay();
|
||||
void _ConvertActionReplayToInternal();
|
||||
|
||||
public:
|
||||
ClientCheatItem();
|
||||
~ClientCheatItem();
|
||||
|
||||
void Init(const CHEATS_LIST &inCheatItem);
|
||||
void Init(const ClientCheatItem &inCheatItem);
|
||||
|
||||
void SetEngineItemPtr(CHEATS_LIST *cheatItemPtr);
|
||||
CHEATS_LIST* GetEngineItemPtr() const;
|
||||
|
||||
void SetEnabled(bool theState);
|
||||
bool IsEnabled() const;
|
||||
|
||||
void SetWillAddFromDB(bool theState);
|
||||
bool WillAddFromDB() const;
|
||||
|
||||
CheatType GetType() const;
|
||||
void SetType(CheatType requestedType);
|
||||
bool IsSupportedType() const;
|
||||
|
||||
const char* GetDescription() const;
|
||||
void SetDescription(const char *descriptionString);
|
||||
|
||||
CheatFreezeType GetFreezeType() const;
|
||||
void SetFreezeType(CheatFreezeType theFreezeType);
|
||||
|
||||
uint32_t GetAddress() const;
|
||||
void SetAddress(uint32_t theAddress);
|
||||
const char* GetAddressString() const;
|
||||
const char* GetAddressSixDigitString() const;
|
||||
void SetAddressSixDigitString(const char *sixDigitString);
|
||||
|
||||
uint32_t GetValue() const;
|
||||
void SetValue(uint32_t theValue);
|
||||
uint8_t GetValueLength() const;
|
||||
void SetValueLength(uint8_t byteLength);
|
||||
|
||||
void SetRawCodeString(const char *rawString, const bool willSaveValidatedRawString);
|
||||
const char* GetRawCodeString() const;
|
||||
const char* GetCleanCodeString() const;
|
||||
uint32_t GetCodeCount() const;
|
||||
|
||||
void ClientToDesmumeCheatItem(CHEATS_LIST *outCheatItem) const;
|
||||
};
|
||||
|
||||
/********************************************************************************************
|
||||
CocoaDSCheatItem - OBJECTIVE-C CLASS
|
||||
|
||||
|
@ -59,16 +132,16 @@ enum CheatSystemError
|
|||
********************************************************************************************/
|
||||
@interface CocoaDSCheatItem : NSObject
|
||||
{
|
||||
CHEATS_LIST *data;
|
||||
CHEATS_LIST *internalData;
|
||||
ClientCheatItem *_internalData;
|
||||
BOOL willAdd;
|
||||
pthread_mutex_t mutexData;
|
||||
|
||||
CocoaDSCheatItem *workingCopy;
|
||||
CocoaDSCheatItem *parent;
|
||||
|
||||
BOOL _isMemAddressAlreadyUpdating;
|
||||
}
|
||||
|
||||
@property (assign) CHEATS_LIST *data;
|
||||
@property (assign, nonatomic) CHEATS_LIST *data;
|
||||
@property (assign) BOOL willAdd;
|
||||
@property (assign, nonatomic) BOOL enabled;
|
||||
@property (assign, nonatomic) NSInteger cheatType;
|
||||
|
@ -86,16 +159,13 @@ enum CheatSystemError
|
|||
@property (readonly) CocoaDSCheatItem *workingCopy;
|
||||
@property (assign) CocoaDSCheatItem *parent;
|
||||
|
||||
- (id) initWithCheatItem:(CocoaDSCheatItem *)cdsCheatItem;
|
||||
- (id) initWithCheatData:(CHEATS_LIST *)cheatData;
|
||||
- (BOOL) retainData;
|
||||
- (char *) descriptionCString;
|
||||
- (void) update;
|
||||
- (CocoaDSCheatItem *) createWorkingCopy;
|
||||
- (void) destroyWorkingCopy;
|
||||
- (void) mergeFromWorkingCopy;
|
||||
- (void) mergeToParent;
|
||||
- (void) setDataWithDictionary:(NSDictionary *)dataDict;
|
||||
- (NSDictionary *) dataDictionary;
|
||||
|
||||
+ (void) setIconInternalCheat:(NSImage *)iconImage;
|
||||
+ (NSImage *) iconInternalCheat;
|
||||
|
@ -151,7 +221,6 @@ enum CheatSystemError
|
|||
+ (void) applyInternalCheatWithAddress:(UInt32)address value:(UInt32)value bytes:(NSUInteger)bytes;
|
||||
+ (NSMutableArray *) cheatListWithListObject:(CHEATS *)cheatList;
|
||||
+ (NSMutableArray *) cheatListWithItemStructArray:(CHEATS_LIST *)cheatItemArray count:(NSUInteger)itemCount;
|
||||
+ (NSMutableDictionary *) cheatItemWithType:(NSInteger)cheatTypeID description:(NSString *)description;
|
||||
|
||||
@end
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -46,8 +46,8 @@
|
|||
#define NSSTRING_TITLE_ENABLE_SPEED_LIMIT NSLocalizedString(@"Enable Speed Limit", nil)
|
||||
#define NSSTRING_TITLE_DISABLE_AUTO_FRAME_SKIP NSLocalizedString(@"Disable Auto Frame Skip", nil)
|
||||
#define NSSTRING_TITLE_ENABLE_AUTO_FRAME_SKIP NSLocalizedString(@"Enable Auto Frame Skip", nil)
|
||||
#define NSSTRING_TITLE_DISABLE_CHEATS NSLocalizedString(@"Disable Cheats", nil)
|
||||
#define NSSTRING_TITLE_ENABLE_CHEATS NSLocalizedString(@"Enable Cheats", nil)
|
||||
#define NSSTRING_TITLE_DISABLE_CHEATS NSLocalizedString(@"Disable Cheat System", nil)
|
||||
#define NSSTRING_TITLE_ENABLE_CHEATS NSLocalizedString(@"Enable Cheat System", nil)
|
||||
#define NSSTRING_TITLE_DISABLE_HUD NSLocalizedString(@"Disable HUD", nil)
|
||||
#define NSSTRING_TITLE_ENABLE_HUD NSLocalizedString(@"Enable HUD", nil)
|
||||
#define NSSTRING_TITLE_EXIT_FULL_SCREEN NSLocalizedString(@"Exit Full Screen", nil)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1170,7 +1170,7 @@ void HandleDeviceRemovalCallback(void *inContext, IOReturn inResult, void *inSen
|
|||
|
||||
ClientCommandAttributes cmdToggleSpeedLimiter = NewCommandAttributesWithFunction("Enable/Disable Speed Limiter", &ClientCommandToggleSpeedLimiter);
|
||||
ClientCommandAttributes cmdToggleAutoFrameSkip = NewCommandAttributesWithFunction("Enable/Disable Auto Frame Skip", &ClientCommandToggleAutoFrameSkip);
|
||||
ClientCommandAttributes cmdToggleCheats = NewCommandAttributesWithFunction("Enable/Disable Cheats", &ClientCommandToggleCheats);
|
||||
ClientCommandAttributes cmdToggleCheats = NewCommandAttributesWithFunction("Enable/Disable Cheat System", &ClientCommandToggleCheats);
|
||||
ClientCommandAttributes cmdCoreExecute = NewCommandAttributesWithFunction("Execute", &ClientCommandCoreExecute);
|
||||
ClientCommandAttributes cmdCorePause = NewCommandAttributesWithFunction("Pause", &ClientCommandCorePause);
|
||||
ClientCommandAttributes cmdToggleExecutePause = NewCommandAttributesWithFunction("Execute/Pause", &ClientCommandToggleExecutePause);
|
||||
|
@ -1227,7 +1227,7 @@ void HandleDeviceRemovalCallback(void *inContext, IOReturn inResult, void *inSen
|
|||
defaultCommandAttributes["Set Speed"] = cmdToggleSpeed;
|
||||
defaultCommandAttributes["Enable/Disable Speed Limiter"] = cmdToggleSpeedLimiter;
|
||||
defaultCommandAttributes["Enable/Disable Auto Frame Skip"] = cmdToggleAutoFrameSkip;
|
||||
defaultCommandAttributes["Enable/Disable Cheats"] = cmdToggleCheats;
|
||||
defaultCommandAttributes["Enable/Disable Cheat System"] = cmdToggleCheats;
|
||||
defaultCommandAttributes["Execute"] = cmdCoreExecute;
|
||||
defaultCommandAttributes["Pause"] = cmdCorePause;
|
||||
defaultCommandAttributes["Execute/Pause"] = cmdToggleExecutePause;
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
NSWindow *cheatDatabaseSheet;
|
||||
|
||||
NSUInteger untitledCount;
|
||||
NSFont *codeEditorFont;
|
||||
|
||||
NSMutableDictionary *bindings;
|
||||
CocoaDSCheatItem *workingCheat;
|
||||
|
@ -92,6 +93,7 @@
|
|||
@property (readonly) IBOutlet NSWindow *cheatDatabaseSheet;
|
||||
|
||||
@property (assign) NSUInteger untitledCount;
|
||||
@property (assign) NSFont *codeEditorFont;
|
||||
@property (readonly) NSMutableDictionary *bindings;
|
||||
@property (retain) CocoaDSCheatItem *workingCheat;
|
||||
@property (retain) CocoaDSCheatManager *cdsCheats;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Copyright (C) 2011 Roger Manuel
|
||||
Copyright (C) 2012-2022 DeSmuME team
|
||||
Copyright (C) 2012-2023 DeSmuME team
|
||||
|
||||
This file is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -51,6 +51,7 @@
|
|||
@synthesize cheatDatabaseSheet;
|
||||
|
||||
@synthesize untitledCount;
|
||||
@synthesize codeEditorFont;
|
||||
@synthesize bindings;
|
||||
@synthesize cdsCheats;
|
||||
@synthesize cdsCheatSearch;
|
||||
|
@ -85,6 +86,7 @@
|
|||
currentView = nil;
|
||||
currentSearchStyleView = nil;
|
||||
untitledCount = 0;
|
||||
codeEditorFont = [NSFont fontWithName:@"Monaco" size:13.0];
|
||||
|
||||
[bindings setValue:[NSNumber numberWithBool:NO] forKey:@"hasSelection"];
|
||||
[bindings setValue:[NSNumber numberWithBool:NO] forKey:@"hasItems"];
|
||||
|
@ -242,7 +244,8 @@
|
|||
NSInteger cheatTypeID = [CocoaDSUtil getIBActionSenderTag:sender];
|
||||
CocoaDSCheatItem *cheatItem = [cheatSelectedItemController content];
|
||||
|
||||
cheatItem.cheatType = cheatTypeID;
|
||||
[window makeFirstResponder:nil]; // Force end of editing of any text fields.
|
||||
[cheatItem setCheatType:cheatTypeID];
|
||||
|
||||
[self setCheatConfigViewByType:cheatTypeID];
|
||||
}
|
||||
|
@ -458,8 +461,7 @@
|
|||
{
|
||||
if (cheatItem.willAdd)
|
||||
{
|
||||
CocoaDSCheatItem *newCheatItem = [[[CocoaDSCheatItem alloc] initWithCheatData:cheatItem.data] autorelease];
|
||||
[newCheatItem retainData];
|
||||
CocoaDSCheatItem *newCheatItem = [[[CocoaDSCheatItem alloc] initWithCheatItem:cheatItem] autorelease];
|
||||
[cheatListController addObject:newCheatItem];
|
||||
[self.cdsCheats add:newCheatItem];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue