From 879afd182239a214e28a13de40938c2033336ee1 Mon Sep 17 00:00:00 2001 From: preble Date: Sun, 10 Oct 2010 13:01:12 -0400 Subject: [PATCH] Armor items are now properly inverted. --- IJInventoryView.h | 4 +++- IJInventoryView.m | 20 +++++++++++++------- IJInventoryWindowController.m | 6 +++--- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/IJInventoryView.h b/IJInventoryView.h index d91dcbf..f8f3a65 100644 --- a/IJInventoryView.h +++ b/IJInventoryView.h @@ -17,6 +17,8 @@ extern NSString * const IJPasteboardTypeInventoryItem; int rows; int cols; + BOOL invert; + NSEvent *mouseDownEvent; NSArray *items; @@ -27,7 +29,7 @@ extern NSString * const IJPasteboardTypeInventoryItem; } @property (nonatomic, assign) id delegate; -- (void)setRows:(int)numberOfRows columns:(int)numberOfColumns; +- (void)setRows:(int)numberOfRows columns:(int)numberOfColumns invert:(BOOL)invert; - (void)setItems:(NSArray *)theItems; - (NSPoint)pointForItemAtIndex:(int)index; - (void)reloadItemAtIndex:(int)itemIndex; diff --git a/IJInventoryView.m b/IJInventoryView.m index 3fb0660..da0bd09 100644 --- a/IJInventoryView.m +++ b/IJInventoryView.m @@ -61,11 +61,15 @@ const static CGFloat cellOffset = 40; { int x = index % cols; int y = index / cols; + if (invert) + y = rows - 1 - y; return CGPointMake(x * cellOffset, self.bounds.size.height - y * cellOffset); } -- (void)setRows:(int)numberOfRows columns:(int)numberOfColumns +- (void)setRows:(int)numberOfRows columns:(int)numberOfColumns invert:(BOOL)inv { + invert = inv; + CALayer *layer = [CALayer layer]; layer.bounds = NSRectToCGRect(self.bounds); @@ -93,7 +97,12 @@ const static CGFloat cellOffset = 40; { CALayer *layer = [CALayer layer]; layer.anchorPoint = CGPointZero; - layer.position = CGPointMake(x * cellOffset, y * cellOffset); + + if (invert) + layer.position = CGPointMake(x * cellOffset, (rows - 1 - y) * cellOffset); + else + layer.position = CGPointMake(x * cellOffset, y * cellOffset); + layer.bounds = CGRectMake(0, 0, cellSize, cellSize); layer.borderWidth = 1.0; layer.borderColor = [self borderColor]; @@ -121,11 +130,6 @@ const static CGFloat cellOffset = 40; } } -- (CALayer *)layerAtRow:(int)row column:(int)column -{ - return [self.layer.sublayers objectAtIndex:row * cols + column]; -} - - (void)reloadItemAtIndex:(int)itemIndex { IJInventoryItem *item = [items objectAtIndex:itemIndex]; @@ -157,6 +161,8 @@ const static CGFloat cellOffset = 40; point.y = self.bounds.size.height - point.y; point.x /= cellOffset; point.y /= cellOffset; + if (invert) + point.y = rows - 1 - floor(point.y); int index = floor(point.y) * cols + floor(point.x); // flip y return index; } diff --git a/IJInventoryWindowController.m b/IJInventoryWindowController.m index d43627f..7d296b8 100644 --- a/IJInventoryWindowController.m +++ b/IJInventoryWindowController.m @@ -32,9 +32,9 @@ normalInventory = [[NSMutableArray alloc] init]; statusTextField.stringValue = @""; - [inventoryView setRows:3 columns:9]; - [quickView setRows:1 columns:9]; - [armorView setRows:4 columns:1]; + [inventoryView setRows:3 columns:9 invert:NO]; + [quickView setRows:1 columns:9 invert:NO]; + [armorView setRows:4 columns:1 invert:YES]; inventoryView.delegate = self; quickView.delegate = self; armorView.delegate = self;