Start mechanism to select SMP Player (no real GUI for now) Save should work, but it's not fully tested until the end. I should simplify error mechanisms on loading, there are now bloated.

This commit is contained in:
Manoël Trapier 2011-03-09 09:28:19 +01:00
parent 1b6b0f77d0
commit 9e2986e6c5
7 changed files with 243 additions and 286 deletions

View File

@ -46,6 +46,7 @@
int loadedWorldIndex;
NSString *loadedWorldFolder;
NSString *attemptedLoadWorldFolder;
NSString *loadedPlayer;
}
@property (nonatomic, assign) IBOutlet NSSegmentedControl *worldSelectionControl;
@ -57,6 +58,7 @@
@property (nonatomic, assign) IBOutlet NSTableView *itemTableView;
@property (nonatomic, retain) NSNumber *worldTime;
@property (nonatomic, retain) NSString *playerName;
- (IBAction)menuSelectWorldFromPath:(id)sender;
- (IBAction)menuSelectWorld:(id)sender;

View File

@ -60,6 +60,7 @@
[normalInventory release];
[inventory release];
[level release];
[player release];
[super dealloc];
}
@ -116,6 +117,8 @@
[self willChangeValueForKey:@"worldTime"];
[level release];
level = nil;
[player release];
player = nil;
[inventory release];
inventory = nil;
[self didChangeValueForKey:@"worldTime"];
@ -136,12 +139,18 @@
[self willChangeValueForKey:@"worldTime"];
/* Now search for first player .dat file (but by default try to load from level.dat */
NSString *playerPath = [IJMinecraftLevel pathForLevelDatAtFolder:worldPath];
#if 1
loadedPlayer = nil;
NSString *playerPath = [IJMinecraftLevel pathForPlayer:loadedPlayer withWorld:worldPath];
#else
NSString *playerPath = [worldPath stringByAppendingString:@"/players/Godzil.dat"];
#endif
NSData *playerFileData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:playerPath]];
if (!fileData)
if (!playerFileData)
{
// Error loading
NSBeginCriticalAlertSheet(@"Error loading world.", @"Dismiss", nil, nil, self.window, nil, nil, nil, nil, @"InsideJob was unable to load the level at %@.", levelPath);
NSBeginCriticalAlertSheet(@"Error loading player.", @"Dismiss", nil, nil, self.window, nil, nil, nil, nil, @"InsideJob was unable to load the level at %@.", playerPath);
return;
}
@ -190,7 +199,7 @@
[self setDocumentEdited:NO];
statusTextField.stringValue = @"";
loadedWorldFolder = worldPath;
loadedWorldFolder = [worldPath copy];
}
- (void)loadWorldAtIndex:(int)worldIndex
@ -204,19 +213,20 @@
- (void)saveWorld
{
#if 0
int worldIndex = loadedWorldIndex;
NSString *worldPath = loadedWorldFolder;
if (inventory == nil)
return; // no world loaded, nothing to save
if (![IJMinecraftLevel checkSessionLockAtIndex:worldIndex value:sessionLockValue])
if (![IJMinecraftLevel checkSessionLockAtFolder:worldPath value:sessionLockValue])
{
NSBeginCriticalAlertSheet(@"Another application has modified this world.", @"Dismiss", nil, nil, self.window, nil, nil, nil, nil, @"The session lock was changed by another application.");
return;
}
NSString *levelPath = [IJMinecraftLevel pathForLevelDatAtIndex:worldIndex];
NSString *levelPath = [IJMinecraftLevel pathForLevelDatAtFolder:worldPath];
NSString *playerPath = [IJMinecraftLevel pathForPlayer:loadedPlayer withWorld:worldPath];
NSMutableArray *newInventory = [NSMutableArray array];
for (NSArray *items in [NSArray arrayWithObjects:armorInventory, quickInventory, normalInventory, nil])
@ -228,17 +238,29 @@
}
}
[level setInventory:newInventory];
[player setInventory:newInventory];
NSString *backupPath = [levelPath stringByAppendingPathExtension:@"insidejobbackup"];
NSString *backupLevelPath = [levelPath stringByAppendingPathExtension:@"insidejobbackup"];
NSString *backupPlayerPath = [playerPath stringByAppendingPathExtension:@"insidejobbackup"];
BOOL success = NO;
NSError *error = nil;
// Remove a previously-created .insidejobbackup, if it exists:
if ([[NSFileManager defaultManager] fileExistsAtPath:backupPath])
if ([[NSFileManager defaultManager] fileExistsAtPath:backupLevelPath])
{
success = [[NSFileManager defaultManager] removeItemAtPath:backupPath error:&error];
success = [[NSFileManager defaultManager] removeItemAtPath:backupLevelPath error:&error];
if (!success)
{
NSLog(@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [error localizedDescription]);
NSBeginCriticalAlertSheet(@"An error occurred while saving.", @"Dismiss", nil, nil, self.window, nil, nil, nil, nil, @"Inside Job was unable to remove the prior backup of this level file:\n%@", [error localizedDescription]);
return;
}
}
// Remove a previously-created .insidejobbackup, if it exists:
if ([[NSFileManager defaultManager] fileExistsAtPath:backupLevelPath])
{
success = [[NSFileManager defaultManager] removeItemAtPath:backupPlayerPath error:&error];
if (!success)
{
NSLog(@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [error localizedDescription]);
@ -248,22 +270,38 @@
}
// Create the backup:
success = [[NSFileManager defaultManager] copyItemAtPath:levelPath toPath:backupPath error:&error];
success = [[NSFileManager defaultManager] copyItemAtPath:levelPath toPath:backupLevelPath error:&error];
if (!success)
{
NSLog(@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [error localizedDescription]);
NSBeginCriticalAlertSheet(@"An error occurred while saving.", @"Dismiss", nil, nil, self.window, nil, nil, nil, nil, @"Inside Job was unable to create a backup of the existing level file:\n%@", [error localizedDescription]);
return;
}
success = [[NSFileManager defaultManager] copyItemAtPath:playerPath toPath:backupPlayerPath error:&error];
if (!success)
{
NSLog(@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [error localizedDescription]);
NSBeginCriticalAlertSheet(@"An error occurred while saving.", @"Dismiss", nil, nil, self.window, nil, nil, nil, nil, @"Inside Job was unable to create a backup of the existing level file:\n%@", [error localizedDescription]);
return;
}
// Write the new level.dat out:
success = [[level writeData] writeToURL:[NSURL fileURLWithPath:levelPath] options:0 error:&error];
success = [[player writeData] writeToURL:[NSURL fileURLWithPath:levelPath] options:0 error:&error];
if (!success)
{
NSLog(@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [error localizedDescription]);
NSError *restoreError = nil;
success = [[NSFileManager defaultManager] copyItemAtPath:backupPath toPath:levelPath error:&restoreError];
success = [[NSFileManager defaultManager] copyItemAtPath:backupLevelPath toPath:levelPath error:&restoreError];
if (!success)
{
NSLog(@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [restoreError localizedDescription]);
NSBeginCriticalAlertSheet(@"An error occurred while saving.", @"Dismiss", nil, nil, self.window, nil, nil, nil, nil, @"Inside Job was unable to save to the existing level file, and the backup could not be restored.\n%@\n%@", [error localizedDescription], [restoreError localizedDescription]);
}
success = [[NSFileManager defaultManager] copyItemAtPath:backupPlayerPath toPath:playerPath error:&restoreError];
if (!success)
{
NSLog(@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [restoreError localizedDescription]);
@ -278,7 +316,6 @@
[self setDocumentEdited:NO];
statusTextField.stringValue = @"Saved.";
#endif
}
- (void)setDocumentEdited:(BOOL)edited
@ -327,7 +364,6 @@
}
/* Now try to open the world... */
[self loadWorldAtFolder:[[panel directoryURL] path]];
}
}
@ -377,6 +413,18 @@
[self setDocumentEdited:YES];
}
- (NSNumber *)worldTime
{
return [level worldTimeContainer].numberValue;
}
- (void)setWorldTime:(NSNumber *)number
{
[self willChangeValueForKey:@"worldTime"];
[level worldTimeContainer].numberValue = number;
[self didChangeValueForKey:@"worldTime"];
[self setDocumentEdited:YES];
}
#pragma mark -
#pragma mark IJInventoryViewDelegate

View File

@ -21,6 +21,7 @@
+ (NSString *)pathForLevelDatAtFolder:(NSString *)worldPath;
+ (NSString *)pathForSessionLockAtFolder:(NSString *)worldPath;
+ (NSString *)pathForPlayer:(NSString *)loadedPlayer withWorld:(NSString *)worldPath;
+ (BOOL)worldExistsAtFolder:(NSString *)worldPath;

View File

@ -29,8 +29,19 @@
// - compound "Player"
// - list "Inventory"
// *
// SMP Player have not the same structure, there is no "DATA" compound, nor "player"
NBTContainer *playerCompound;
NBTContainer *dataCompound = [self childNamed:@"Data"];
NBTContainer *playerCompound = [dataCompound childNamed:@"Player"];
if (dataCompound != nil)
{
playerCompound = [dataCompound childNamed:@"Player"];
}
else
{
NSLog(@"Player file is from a SMP file, not level.dat one");
playerCompound = self;
}
NBTContainer *inventoryList = [playerCompound childNamed:@"Inventory"];
// TODO: Check for error conditions here.
return inventoryList;
@ -126,6 +137,15 @@
return [worldPath stringByAppendingPathComponent:@"session.lock"];
}
+ (NSString *)pathForPlayer:(NSString *)loadedPlayer withWorld:(NSString *)worldPath;
{
/* loadedPlayer == nil, we use level.dat, or else we use the name */
if (loadedPlayer == nil)
return [self pathForLevelDatAtFolder:worldPath];
return [[[worldPath stringByAppendingPathComponent:@"players"] stringByAppendingPathComponent:loadedPlayer] stringByAppendingPathExtension:@".dat"];
}
+ (BOOL)worldExistsAtFolder:(NSString *)worldPath
{
return [[NSFileManager defaultManager] fileExistsAtPath:[[self class] pathForLevelDatAtFolder:worldPath]];

View File

@ -12,7 +12,7 @@
#ifndef NBT_LOGGING
#define NBT_LOGGING 0
#define NBT_LOGGING 0
#endif
#if NBT_LOGGING

View File

@ -554,8 +554,7 @@
<int key="NSvFlags">266</int>
<string key="NSFrame">{{303, 369}, {274, 14}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="335227372"/>
<reference key="NSNextKeyView" ref="263108995"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="828498206">
<int key="NSCellFlags">68288064</int>
@ -592,8 +591,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{101, 327}, {85, 19}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="17633893"/>
<reference key="NSNextKeyView" ref="741930684"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="52955396">
<int key="NSCellFlags">-1804468671</int>
@ -675,7 +673,7 @@
<bytes key="NSWhite">MQA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor">
<object class="NSColor" key="NSTextColor" id="722042078">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">textColor</string>
@ -688,7 +686,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{56, 329}, {40, 14}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="395301483"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="421186712">
@ -701,12 +698,28 @@
<reference key="NSTextColor" ref="915322728"/>
</object>
</object>
<object class="NSTextField" id="741930684">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{203, 329}, {43, 14}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSNextKeyView" ref="239710738"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="592159044">
<int key="NSCellFlags">68288064</int>
<int key="NSCellFlags2">71435264</int>
<string key="NSContents">Player :</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="741930684"/>
<reference key="NSBackgroundColor" ref="470684793"/>
<reference key="NSTextColor" ref="915322728"/>
</object>
</object>
<object class="NSBox" id="263108995">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">10</int>
<string key="NSFrame">{{0, 355}, {585, 5}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="784892978"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@ -734,8 +747,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{11, 364}, {195, 25}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="574149520"/>
<reference key="NSNextKeyView" ref="335227372"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSegmentedCell" key="NSCell" id="587756353">
<int key="NSCellFlags">67239424</int>
@ -783,7 +795,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{11, 58}, {360, 120}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="183792805"/>
<string key="NSClassName">IJInventoryView</string>
</object>
@ -792,7 +803,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{11, 10}, {360, 40}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="896048265"/>
<string key="NSClassName">IJInventoryView</string>
</object>
@ -801,7 +811,6 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{11, 186}, {40, 160}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="924742053"/>
<string key="NSClassName">IJInventoryView</string>
</object>
@ -810,7 +819,6 @@
<int key="NSvFlags">265</int>
<string key="NSFrame">{{379, 327}, {195, 22}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="30251356"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSearchFieldCell" key="NSCell" id="802847124">
@ -884,7 +892,6 @@
<int key="NSvFlags">4352</int>
<string key="NSFrameSize">{193, 307}</string>
<reference key="NSSuperview" ref="666454848"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="324287214"/>
<bool key="NSEnabled">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
@ -1064,7 +1071,6 @@
</object>
<string key="NSFrame">{{1, 1}, {193, 307}}</string>
<reference key="NSSuperview" ref="896048265"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="497206092"/>
<reference key="NSDocView" ref="497206092"/>
<reference key="NSBGColor" ref="451382550"/>
@ -1075,7 +1081,6 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{191, 17}, {15, 365}}</string>
<reference key="NSSuperview" ref="896048265"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1005482342"/>
<reference key="NSTarget" ref="896048265"/>
<string key="NSAction">_doScroller:</string>
@ -1086,7 +1091,6 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 382}, {190, 15}}</string>
<reference key="NSSuperview" ref="896048265"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="896048265"/>
@ -1096,7 +1100,6 @@
</object>
<string key="NSFrame">{{379, 10}, {195, 309}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="666454848"/>
<int key="NSsFlags">562</int>
<reference key="NSVScroller" ref="324287214"/>
@ -1109,8 +1112,7 @@
<int key="NSvFlags">-2147483380</int>
<string key="NSFrame">{{212, 368}, {88, 18}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="263108995"/>
<reference key="NSNextKeyView" ref="574149520"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="569740595">
<int key="NSCellFlags">67239424</int>
@ -1133,10 +1135,56 @@
<int key="NSPeriodicInterval">25</int>
</object>
</object>
<object class="NSButton" id="822639519">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{351, 326}, {20, 21}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSNextKeyView" ref="17633893"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="508646862">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="731765667"/>
<reference key="NSControlView" ref="822639519"/>
<int key="NSButtonFlags">-2033434369</int>
<int key="NSButtonFlags2">162</int>
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSUser</string>
</object>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
</object>
<object class="NSTextField" id="239710738">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{251, 327}, {96, 19}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSNextKeyView" ref="822639519"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="265135017">
<int key="NSCellFlags">-1804468671</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents"/>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">11</double>
<int key="NSfFlags">16</int>
</object>
<reference key="NSControlView" ref="239710738"/>
<bool key="NSDrawsBackground">YES</bool>
<reference key="NSBackgroundColor" ref="61377669"/>
<reference key="NSTextColor" ref="722042078"/>
</object>
</object>
</object>
<string key="NSFrame">{{7, 11}, {585, 396}}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="626341130"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
@ -1524,6 +1572,22 @@
</object>
<int key="connectionID">694</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: playerName</string>
<reference key="source" ref="239710738"/>
<reference key="destination" ref="760161335"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="239710738"/>
<reference key="NSDestination" ref="760161335"/>
<string key="NSLabel">value: playerName</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">playerName</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">710</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -1850,6 +1914,9 @@
<reference ref="395301483"/>
<reference ref="924742053"/>
<reference ref="335227372"/>
<reference ref="822639519"/>
<reference ref="741930684"/>
<reference ref="239710738"/>
</object>
<reference key="parent" ref="972006081"/>
</object>
@ -2159,6 +2226,48 @@
<reference key="object" ref="569740595"/>
<reference key="parent" ref="335227372"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">698</int>
<reference key="object" ref="741930684"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="592159044"/>
</object>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">699</int>
<reference key="object" ref="592159044"/>
<reference key="parent" ref="741930684"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">705</int>
<reference key="object" ref="822639519"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="508646862"/>
</object>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">706</int>
<reference key="object" ref="508646862"/>
<reference key="parent" ref="822639519"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">707</int>
<reference key="object" ref="239710738"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="265135017"/>
</object>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">708</int>
<reference key="object" ref="265135017"/>
<reference key="parent" ref="239710738"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -2309,6 +2418,13 @@
<string>693.IBPluginDependency</string>
<string>695.IBPluginDependency</string>
<string>696.IBPluginDependency</string>
<string>698.IBPluginDependency</string>
<string>698.IBViewBoundsToFrameTransform</string>
<string>699.IBPluginDependency</string>
<string>705.IBPluginDependency</string>
<string>706.IBPluginDependency</string>
<string>707.IBPluginDependency</string>
<string>708.IBPluginDependency</string>
<string>75.IBPluginDependency</string>
<string>75.ImportedFromIB2</string>
<string>81.IBEditorWindowLastContentRect</string>
@ -2490,6 +2606,15 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABDBQAAw6qAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{483, 773}, {178, 63}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -2513,250 +2638,9 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
<int key="maxID">696</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">IJInventoryView</string>
<string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/IJInventoryView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">IJInventoryWindowController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>itemTableViewDoubleClicked:</string>
<string>makeSearchFieldFirstResponder:</string>
<string>menuSelectWorld:</string>
<string>menuSelectWorldFromPath:</string>
<string>updateItemSearchFilter:</string>
<string>worldSelectionChanged:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>itemTableViewDoubleClicked:</string>
<string>makeSearchFieldFirstResponder:</string>
<string>menuSelectWorld:</string>
<string>menuSelectWorldFromPath:</string>
<string>updateItemSearchFilter:</string>
<string>worldSelectionChanged:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">itemTableViewDoubleClicked:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">makeSearchFieldFirstResponder:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">menuSelectWorld:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">menuSelectWorldFromPath:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">updateItemSearchFilter:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">worldSelectionChanged:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>armorView</string>
<string>inventoryView</string>
<string>itemSearchField</string>
<string>itemTableView</string>
<string>quickView</string>
<string>statusTextField</string>
<string>worldSelectionControl</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>IJInventoryView</string>
<string>IJInventoryView</string>
<string>NSSearchField</string>
<string>NSTableView</string>
<string>IJInventoryView</string>
<string>NSTextField</string>
<string>NSSegmentedControl</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>armorView</string>
<string>inventoryView</string>
<string>itemSearchField</string>
<string>itemTableView</string>
<string>quickView</string>
<string>statusTextField</string>
<string>worldSelectionControl</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
<string key="name">armorView</string>
<string key="candidateClassName">IJInventoryView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">inventoryView</string>
<string key="candidateClassName">IJInventoryView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">itemSearchField</string>
<string key="candidateClassName">NSSearchField</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">itemTableView</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">quickView</string>
<string key="candidateClassName">IJInventoryView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">statusTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">worldSelectionControl</string>
<string key="candidateClassName">NSSegmentedControl</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/IJInventoryWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">IJTableView</string>
<string key="superclassName">NSTableView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/IJTableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">InsideJobAppDelegate</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<string key="NS.key.0">inventoryWindowController</string>
<string key="NS.object.0">IJInventoryWindowController</string>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<string key="NS.key.0">inventoryWindowController</string>
<object class="IBToOneOutletInfo" key="NS.object.0">
<string key="name">inventoryWindowController</string>
<string key="candidateClassName">IJInventoryWindowController</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/InsideJobAppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSDocument</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>printDocument:</string>
<string>revertDocumentToSaved:</string>
<string>runPageLayout:</string>
<string>saveDocument:</string>
<string>saveDocumentAs:</string>
<string>saveDocumentTo:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>printDocument:</string>
<string>revertDocumentToSaved:</string>
<string>runPageLayout:</string>
<string>saveDocument:</string>
<string>saveDocumentAs:</string>
<string>saveDocumentTo:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">printDocument:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">revertDocumentToSaved:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">runPageLayout:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">saveDocument:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">saveDocumentAs:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
<string key="name">saveDocumentTo:</string>
<string key="candidateClassName">id</string>
</object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/NSDocument.h</string>
</object>
</object>
</object>
<int key="maxID">710</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
@ -2776,12 +2660,14 @@
<string>NSMenuCheckmark</string>
<string>NSMenuMixedState</string>
<string>NSSwitch</string>
<string>NSUser</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{9, 8}</string>
<string>{7, 2}</string>
<string>{15, 15}</string>
<string>{32, 32}</string>
</object>
</object>
</data>

View File

@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.2-gdz</string>
<string>1.0.2-smp</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>