summaryrefslogtreecommitdiff
path: root/macosx/CheatController.m
diff options
context:
space:
mode:
authorSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2014-07-20 05:09:43 +0000
committerSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2014-07-20 05:09:43 +0000
commitd6942932d64a02aa92b1e04e91f6126f33fdb05e (patch)
tree7cad698308e39abc2b0e1c71674c610ec3ce74dd /macosx/CheatController.m
parentb8d0d24d56dbc0ee64f4ec9a72ab917604d8109d (diff)
downloadpcsxr-d6942932d64a02aa92b1e04e91f6126f33fdb05e.tar.gz
OS X: Move source files to their own folder.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@90999 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/CheatController.m')
-rw-r--r--macosx/CheatController.m324
1 files changed, 0 insertions, 324 deletions
diff --git a/macosx/CheatController.m b/macosx/CheatController.m
deleted file mode 100644
index ebe73137..00000000
--- a/macosx/CheatController.m
+++ /dev/null
@@ -1,324 +0,0 @@
-//
-// CheatController.m
-// Pcsxr
-//
-
-#import <Cocoa/Cocoa.h>
-#import "CheatController.h"
-#import "PcsxrCheatHandler.h"
-#import "PcsxrHexadecimalFormatter.h"
-
-#define kTempCheatCodesName @"tempCheatCodes"
-#define kCheatsName @"cheats"
-
-@implementation PcsxrCheatTempObject
-@synthesize cheatAddress, cheatValue;
-
-- (instancetype)init
-{
- return [self initWithAddress:0x10000000 value:0];
-}
-
-- (instancetype)initWithAddress:(uint32_t)add value:(uint16_t)val
-{
- if (self = [super init]) {
- self.cheatAddress = add;
- self.cheatValue = val;
- }
- return self;
-}
-
-- (instancetype)initWithCheatCode:(CheatCode *)theCheat
-{
- return [self initWithAddress:theCheat->Addr value:theCheat->Val];
-}
-
-- (NSString*)description
-{
- return [NSString stringWithFormat:@"%08x %04x", cheatAddress, cheatValue];
-}
-
-- (BOOL)isEqual:(id)object
-{
- if ([object isKindOfClass:[PcsxrCheatTempObject class]]) {
- if (cheatAddress != [object cheatAddress]) {
- return NO;
- } else if (cheatValue != [object cheatValue]) {
- return NO;
- } else
- return YES;
- } else
- return NO;
-}
-
-- (NSUInteger)hash
-{
- return cheatAddress ^ cheatValue;
-}
-
-- (id)copyWithZone:(NSZone *)zone
-{
- return [[[self class] allocWithZone:zone] initWithAddress:cheatAddress value:cheatValue];
-}
-
-@end
-
-@implementation PcsxrCheatTemp
-@synthesize cheatName;
-@synthesize cheatValues;
-@synthesize enabled;
-
-- (instancetype)initWithCheat:(Cheat *)theCheat
-{
- if (self = [super init]) {
- self.cheatName = @(theCheat->Descr);
- self.enabled = theCheat->Enabled ? YES : NO;
- self.cheatValues = [NSMutableArray arrayWithCapacity:theCheat->n];
- for (int i = 0; i < theCheat->n; i++) {
- [cheatValues addObject:[[PcsxrCheatTempObject alloc] initWithCheatCode:&CheatCodes[i+theCheat->First]]];
- }
- }
- return self;
-}
-
-- (NSUInteger)hash
-{
- return [cheatName hash] ^ [cheatValues hash];
-}
-
-- (NSString *)description
-{
- return [NSString stringWithFormat:@"[%@%@]\n%@", enabled ? @"*" : @"", cheatName, [cheatValues componentsJoinedByString:@"\n"]];
-}
-
-@end
-
-@implementation CheatController
-@synthesize addressFormatter;
-@synthesize cheatView;
-@synthesize editCheatView;
-@synthesize editCheatWindow;
-@synthesize valueFormatter;
-
-- (NSString *)windowNibName
-{
- return @"CheatWindow";
-}
-
-- (instancetype)init
-{
- return self = [self initWithWindowNibName:@"CheatWindow"];
-}
-
-- (instancetype)initWithCoder:(NSCoder *)aDecoder
-{
- if (self = [super initWithCoder:aDecoder]) {
- self.tempCheatCodes = [NSMutableArray array];
- }
- return self;
-}
-
-- (instancetype)initWithWindow:(NSWindow *)window
-{
- if (self = [super initWithWindow:window]) {
- self.tempCheatCodes = [NSMutableArray array];
- }
- return self;
-}
-
-- (void)refreshNSCheatArray
-{
- NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithCapacity:NumCheats];
- for (int i = 0; i < NumCheats; i++) {
- PcsxrCheatTemp *tmpObj = [[PcsxrCheatTemp alloc] initWithCheat:&Cheats[i]];
- [tmpArray addObject:tmpObj];
- }
- self.cheats = tmpArray;
- [self setDocumentEdited:NO];
-}
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
-{
- if ([keyPath isEqualToString:kCheatsName]) {
- [self setDocumentEdited:YES];
- }
-}
-
-- (void)refresh
-{
- [cheatView reloadData];
- [self refreshNSCheatArray];
-}
-
-- (void)awakeFromNib
-{
- [valueFormatter setHexPadding:4];
- [addressFormatter setHexPadding:8];
- [self refreshNSCheatArray];
- [self addObserver:self forKeyPath:kCheatsName options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:NULL];
-}
-
-- (IBAction)loadCheats:(id)sender
-{
- NSOpenPanel *openDlg = [NSOpenPanel openPanel];
- [openDlg setAllowsMultipleSelection:NO];
- [openDlg setAllowedFileTypes:[PcsxrCheatHandler supportedUTIs]];
-
- if ([openDlg runModal] == NSFileHandlingPanelOKButton) {
- NSURL *file = [openDlg URL];
- LoadCheats([[file path] fileSystemRepresentation]);
- [self refresh];
- }
-}
-
-- (IBAction)saveCheats:(id)sender
-{
- NSSavePanel *saveDlg = [NSSavePanel savePanel];
- [saveDlg setAllowedFileTypes:[PcsxrCheatHandler supportedUTIs]];
- [saveDlg setCanSelectHiddenExtension:YES];
- [saveDlg setCanCreateDirectories:YES];
- [saveDlg setPrompt:NSLocalizedString(@"Save Cheats", nil)];
- if ([saveDlg runModal] == NSFileHandlingPanelOKButton) {
- NSURL *url = [saveDlg URL];
- NSString *saveString = [self.cheats componentsJoinedByString:@"\n"];
- [saveString writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:NULL];
- }
-}
-
-- (IBAction)clear:(id)sender
-{
- self.cheats = [[NSMutableArray alloc] init];
-}
-
-- (IBAction)closeCheatEdit:(id)sender
-{
- [NSApp endSheet:editCheatWindow returnCode:[sender tag] == 1 ? NSCancelButton : NSOKButton];
-}
-
-- (IBAction)changeCheat:(id)sender
-{
- [self setDocumentEdited:YES];
-}
-
-- (IBAction)removeCheatValue:(id)sender
-{
- if ([editCheatView selectedRow] < 0) {
- NSBeep();
- return;
- }
-
- NSIndexSet *toRemoveIndex = [editCheatView selectedRowIndexes];
- [self willChange:NSKeyValueChangeRemoval valuesAtIndexes:toRemoveIndex forKey:kTempCheatCodesName];
- [self.tempCheatCodes removeObjectsAtIndexes:toRemoveIndex];
- [self didChange:NSKeyValueChangeRemoval valuesAtIndexes:toRemoveIndex forKey:kTempCheatCodesName];
-}
-
-- (IBAction)addCheatValue:(id)sender
-{
- NSIndexSet *newSet = [NSIndexSet indexSetWithIndex:[self.tempCheatCodes count]];
- [self willChange:NSKeyValueChangeInsertion valuesAtIndexes:newSet forKey:kTempCheatCodesName];
- [self.tempCheatCodes addObject:[[PcsxrCheatTempObject alloc] init]];
- [self didChange:NSKeyValueChangeInsertion valuesAtIndexes:newSet forKey:kTempCheatCodesName];
-}
-
-- (void)reloadCheats
-{
- NSFileManager *manager = [NSFileManager defaultManager];
- NSURL *tmpURL = [[manager URLForDirectory:NSItemReplacementDirectory inDomain:NSUserDomainMask appropriateForURL:[[NSBundle mainBundle] bundleURL] create:YES error:nil] URLByAppendingPathComponent:@"temp.cht" isDirectory:NO];
- NSString *tmpStr = [self.cheats componentsJoinedByString:@"\n"];
- [tmpStr writeToURL:tmpURL atomically:NO encoding:NSUTF8StringEncoding error:NULL];
- LoadCheats([[tmpURL path] fileSystemRepresentation]);
- [manager removeItemAtURL:tmpURL error:NULL];
-}
-
-- (IBAction)editCheat:(id)sender
-{
- if ([cheatView selectedRow] < 0) {
- NSBeep();
- return;
- }
- NSMutableArray *tmpArray = [(self.cheats)[[cheatView selectedRow]] cheatValues];
- NSMutableArray *newCheats = [[NSMutableArray alloc] initWithArray:tmpArray copyItems:YES];
- self.tempCheatCodes = newCheats;
- [[self window] beginSheet:editCheatWindow completionHandler:^(NSModalResponse returnCode) {
- if (returnCode == NSOKButton) {
- PcsxrCheatTemp *tmpCheat = (self.cheats)[[cheatView selectedRow]];
- if (![tmpCheat.cheatValues isEqualToArray:self.tempCheatCodes]) {
- tmpCheat.cheatValues = self.tempCheatCodes;
- [self setDocumentEdited:YES];
- }
- }
-
- [editCheatWindow orderOut:nil];
- }];
-}
-
-- (IBAction)addCheat:(id)sender
-{
- NSIndexSet *newSet = [NSIndexSet indexSetWithIndex:[self.cheats count]];
- [self willChange:NSKeyValueChangeInsertion valuesAtIndexes:newSet forKey:kCheatsName];
- PcsxrCheatTemp *tmpCheat = [[PcsxrCheatTemp alloc] init];
- tmpCheat.cheatName = NSLocalizedString(@"New Cheat", @"New Cheat Name" );
- PcsxrCheatTempObject *tmpObj = [[PcsxrCheatTempObject alloc] initWithAddress:0x10000000 value:0];
- NSMutableArray *tmpArray = [NSMutableArray arrayWithObject:tmpObj];
- tmpCheat.cheatValues = tmpArray;
- [self.cheats addObject:tmpCheat];
- [self didChange:NSKeyValueChangeInsertion valuesAtIndexes:newSet forKey:kCheatsName];
- [self setDocumentEdited:YES];
-}
-
-- (IBAction)applyCheats:(id)sender
-{
- [self reloadCheats];
- [self setDocumentEdited:NO];
-}
-
-- (void)sheetDidDismiss:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
-{
- switch (returnCode) {
- case NSAlertDefaultReturn:
- [self reloadCheats];
- [self close];
- break;
-
- default:
- [self refreshNSCheatArray];
- [self close];
- break;
-
- case NSAlertOtherReturn:
- break;
- }
-}
-
-- (BOOL)windowShouldClose:(id)sender
-{
- if (![sender isDocumentEdited] || ![[self window] isEqual:sender]) {
- return YES;
- } else {
- NSBeginAlertSheet(NSLocalizedString(@"Unsaved Changes", @"Unsaved changes"),
- NSLocalizedString(@"Save", @"Save"),
- NSLocalizedString(@"Don't Save",@"Don't Save"),
- NSLocalizedString(@"Cancel", @"Cancel"), [self window], self,
- NULL, @selector(sheetDidDismiss:returnCode:contextInfo:), NULL,
- NSLocalizedString(@"The cheat codes have not been applied. Unapplied cheats will not run nor be saved. Do you wish to save?", nil));
-
- return NO;
- }
-}
-
-- (IBAction)removeCheats:(id)sender
-{
- if ([cheatView selectedRow] < 0) {
- NSBeep();
- return;
- }
-
- NSIndexSet *toRemoveIndex = [cheatView selectedRowIndexes];
- [self willChange:NSKeyValueChangeRemoval valuesAtIndexes:toRemoveIndex forKey:kCheatsName];
- [self.cheats removeObjectsAtIndexes:toRemoveIndex];
- [self didChange:NSKeyValueChangeRemoval valuesAtIndexes:toRemoveIndex forKey:kCheatsName];
- [self setDocumentEdited:YES];
-}
-
-@end