X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=TargetController.m;fp=TargetController.m;h=0000000000000000000000000000000000000000;hp=1da2c99a6e7157f038ac8d13a5eb6fa8a6cacab3;hb=dcedf147ddcb6c21768cea94a2f06b93007d2a82;hpb=e2a4d830dd9817f6a515a3b1b6aa152d3bb98c2b diff --git a/TargetController.m b/TargetController.m deleted file mode 100644 index 1da2c99..0000000 --- a/TargetController.m +++ /dev/null @@ -1,235 +0,0 @@ -// -// TargetController.m -// Enjoy -// -// Created by Sam McCall on 5/05/09. -// - -#import "TargetController.h" - -#import "NJMappingsController.h" -#import "NJMapping.h" -#import "NJInput.h" -#import "NJInputController.h" -#import "NJKeyInputField.h" -#import "TargetConfig.h" -#import "TargetController.h" -#import "TargetKeyboard.h" -#import "TargetMouseBtn.h" -#import "TargetMouseMove.h" -#import "TargetMouseScroll.h" -#import "TargetToggleMouseScope.h" - -@implementation TargetController - -- (void)cleanUpInterface { - NSInteger row = radioButtons.selectedRow; - - if (row != 1) { - keyInput.keyCode = -1; - [keyInput resignIfFirstResponder]; - } - - if (row != 2) { - [mappingPopup selectItemAtIndex:-1]; - [mappingPopup resignIfFirstResponder]; - } else if (!mappingPopup.selectedItem) - [mappingPopup selectItemAtIndex:0]; - - if (row != 3) { - mouseDirSelect.selectedSegment = -1; - [mouseDirSelect resignIfFirstResponder]; - } else if (mouseDirSelect.selectedSegment == -1) - mouseDirSelect.selectedSegment = 0; - - if (row != 4) { - mouseBtnSelect.selectedSegment = -1; - [mouseBtnSelect resignIfFirstResponder]; - } else if (mouseBtnSelect.selectedSegment == -1) - mouseBtnSelect.selectedSegment = 0; - - if (row != 5) { - scrollDirSelect.selectedSegment = -1; - [scrollDirSelect resignIfFirstResponder]; - } else if (scrollDirSelect.selectedSegment == -1) - scrollDirSelect.selectedSegment = 0; -} - -- (IBAction)radioChanged:(NSView *)sender { - [sender.window makeFirstResponder:sender]; - if (radioButtons.selectedRow == 1) - [keyInput.window makeFirstResponder:keyInput]; - [self commit]; -} - -- (void)keyInputField:(NJKeyInputField *)keyInput didChangeKey:(CGKeyCode)keyCode { - [radioButtons selectCellAtRow:1 column:0]; - [radioButtons.window makeFirstResponder:radioButtons]; - [self commit]; -} - -- (void)keyInputFieldDidClear:(NJKeyInputField *)keyInput { - [radioButtons selectCellAtRow:0 column:0]; - [self commit]; -} - -- (void)mappingChosen:(id)sender { - [radioButtons selectCellAtRow:2 column:0]; - [mappingPopup.window makeFirstResponder:mappingPopup]; - [self commit]; -} - -- (void)mdirChanged:(NSView *)sender { - [radioButtons selectCellAtRow:3 column:0]; - [sender.window makeFirstResponder:sender]; - [self commit]; -} - -- (void)mbtnChanged:(NSView *)sender { - [radioButtons selectCellAtRow:4 column:0]; - [sender.window makeFirstResponder:sender]; - [self commit]; -} - -- (void)sdirChanged:(NSView *)sender { - [radioButtons selectCellAtRow:5 column:0]; - [sender.window makeFirstResponder:sender]; - [self commit]; -} - -- (Target *)currentTarget { - return mappingsController.currentMapping[joystickController.selectedInput]; -} - -- (Target *)makeTarget { - switch (radioButtons.selectedRow) { - case 0: - return nil; - case 1: - if (keyInput.hasKeyCode) { - TargetKeyboard *k = [[TargetKeyboard alloc] init]; - k.vk = keyInput.keyCode; - return k; - } else { - return nil; - } - break; - case 2: { - TargetConfig *c = [[TargetConfig alloc] init]; - c.mapping = mappingsController.mappings[mappingPopup.indexOfSelectedItem]; - return c; - } - case 3: { - TargetMouseMove *mm = [[TargetMouseMove alloc] init]; - mm.axis = mouseDirSelect.selectedSegment; - return mm; - } - case 4: { - TargetMouseBtn *mb = [[TargetMouseBtn alloc] init]; - mb.button = mouseBtnSelect.selectedSegment == 0 ? kCGMouseButtonLeft : kCGMouseButtonRight; - return mb; - } - case 5: { - TargetMouseScroll *ms = [[TargetMouseScroll alloc] init]; - ms.amount = scrollDirSelect.selectedSegment ? 1 : -1; - return ms; - } - case 6: { - TargetToggleMouseScope *tms = [[TargetToggleMouseScope alloc] init]; - return tms; - } - default: - return nil; - } -} - -- (void)commit { - [self cleanUpInterface]; - mappingsController.currentMapping[joystickController.selectedInput] = [self makeTarget]; - [mappingsController save]; -} - -- (BOOL)enabled { - return [radioButtons isEnabled]; -} - -- (void)setEnabled:(BOOL)enabled { - [radioButtons setEnabled:enabled]; - [keyInput setEnabled:enabled]; - [mappingPopup setEnabled:enabled]; - [mouseDirSelect setEnabled:enabled]; - [mouseBtnSelect setEnabled:enabled]; - [scrollDirSelect setEnabled:enabled]; -} - -- (void)loadTarget:(Target *)target forInput:(NJInput *)input { - if (!input) { - self.enabled = NO; - title.stringValue = @""; - } else { - self.enabled = YES; - NSString *inpFullName = input.name; - for (id cur = input.base; cur; cur = cur.base) { - inpFullName = [[NSString alloc] initWithFormat:@"%@ > %@", cur.name, inpFullName]; - } - title.stringValue = [[NSString alloc] initWithFormat:@"%@ > %@", mappingsController.currentMapping.name, inpFullName]; - } - - if ([target isKindOfClass:TargetKeyboard.class]) { - [radioButtons selectCellAtRow:1 column:0]; - keyInput.keyCode = [(TargetKeyboard*)target vk]; - } else if ([target isKindOfClass:TargetConfig.class]) { - [radioButtons selectCellAtRow:2 column:0]; - NSUInteger idx = [mappingsController.mappings - indexOfObject:[(TargetConfig *)target mapping]]; - if (idx == NSNotFound) { - [radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0]; - [mappingPopup selectItemAtIndex:-1]; - } else - [mappingPopup selectItemAtIndex:idx]; - } - else if ([target isKindOfClass:TargetMouseMove.class]) { - [radioButtons selectCellAtRow:3 column:0]; - [mouseDirSelect setSelectedSegment:[(TargetMouseMove *)target axis]]; - } - else if ([target isKindOfClass:TargetMouseBtn.class]) { - [radioButtons selectCellAtRow:4 column:0]; - mouseBtnSelect.selectedSegment = [(TargetMouseBtn *)target button] == kCGMouseButtonLeft ? 0 : 1; - } - else if ([target isKindOfClass:TargetMouseScroll.class]) { - [radioButtons selectCellAtRow:5 column:0]; - scrollDirSelect.selectedSegment = [(TargetMouseScroll *)target amount] > 0; - } - else if ([target isKindOfClass:TargetToggleMouseScope.class]) { - [radioButtons selectCellAtRow:6 column:0]; - } else { - [radioButtons selectCellAtRow:self.enabled ? 0 : -1 column:0]; - } - [self cleanUpInterface]; -} - -- (void)loadCurrent { - [self loadTarget:self.currentTarget forInput:joystickController.selectedInput]; -} - -- (void)focusKey { - if (radioButtons.selectedRow <= 1) - [keyInput.window makeFirstResponder:keyInput]; - else - [keyInput resignIfFirstResponder]; -} - -- (void)refreshMappings { - NSInteger initialIndex = mappingPopup.indexOfSelectedItem; - [mappingPopup.menu removeAllItems]; - for (NJMapping *mapping in mappingsController.mappings) { - NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:mapping.name - action:@selector(mappingChosen:) - keyEquivalent:@""]; - item.target = self; - [mappingPopup.menu addItem:item]; - } - [mappingPopup selectItemAtIndex:initialIndex]; -} - -@end