Skip to content

Commit ea90505

Browse files
author
Michael Markowski
committed
added
0 parents  commit ea90505

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+23142
-0
lines changed

AFGameEditor+LayerManagement.h

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
//
2+
// AFGameEditor+LayerManagement.h
3+
// Leveleditor
4+
//
5+
// Created by Michael Markowski on 30.11.09.
6+
// Copyright 2009 Artifacts. All rights reserved.
7+
//
8+
9+
#import <Cocoa/Cocoa.h>
10+
#import "AFGameEditor.h"
11+
12+
@interface AFGameEditor (LayerManagement)
13+
14+
- (NSArray *)copyItems:(NSArray *)itemsToCopyArray;
15+
16+
@end

AFGameEditor+LayerManagement.m

+150
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
//
2+
// AFGameEditor+LayerManagement.m
3+
// Leveleditor
4+
//
5+
// Created by Michael Markowski on 30.11.09.
6+
// Copyright 2009 Artifacts. All rights reserved.
7+
//
8+
9+
#import "AFGameEditor+LayerManagement.h"
10+
#import "CoreDataHelper.h"
11+
#import "AFGameEditor.h"
12+
13+
@implementation AFGameEditor (LayerManagement)
14+
15+
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
16+
{
17+
[levelView setNeedsDisplay:YES];
18+
}
19+
20+
- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pasteboard
21+
{
22+
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes];
23+
[pasteboard declareTypes:[NSArray arrayWithObject:LayerItemsDropType] owner:self];
24+
[pasteboard setData:data forType:LayerItemsDropType];
25+
return YES;
26+
}
27+
28+
- (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id <NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)op
29+
{
30+
if( [info draggingSource] == layerTableView )
31+
{
32+
if( op == NSTableViewDropOn )
33+
[tv setDropRow:row dropOperation:NSTableViewDropAbove];
34+
35+
if(( [[[NSApplication sharedApplication] currentEvent] modifierFlags] & NSAlternateKeyMask ) )
36+
return NSDragOperationCopy;
37+
else
38+
return NSDragOperationMove;
39+
}
40+
else
41+
{
42+
return NSDragOperationNone;
43+
}
44+
}
45+
46+
- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info
47+
row:(NSInteger)row dropOperation:(NSTableViewDropOperation)operation
48+
{
49+
CoreDataHelper *helper = [[[CoreDataHelper alloc]
50+
initWithManagedObjectContext:[self managedObjectContext]
51+
sortDescriptors:[self sortDescriptors]
52+
entityName:@"Layer"] autorelease];
53+
54+
NSPasteboard *pasteboard = [info draggingPasteboard];
55+
NSData *rowData = [pasteboard dataForType:LayerItemsDropType];
56+
NSIndexSet *rowIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:rowData];
57+
58+
NSArray *allItemsArray = [layerArrayController arrangedObjects];
59+
NSMutableArray *draggedItemsArray = [NSMutableArray arrayWithCapacity:[rowIndexes count]];
60+
61+
NSUInteger currentItemIndex;
62+
NSRange range = NSMakeRange( 0, [rowIndexes lastIndex] + 1 );
63+
while([rowIndexes getIndexes:&currentItemIndex maxCount:1 inIndexRange:&range] > 0)
64+
{
65+
NSManagedObject *thisItem = [allItemsArray objectAtIndex:currentItemIndex];
66+
67+
[draggedItemsArray addObject:thisItem];
68+
}
69+
70+
if( [info draggingSourceOperationMask] & NSDragOperationMove )
71+
{
72+
int count;
73+
for( count = 0; count < [draggedItemsArray count]; count++ )
74+
{
75+
NSManagedObject *currentItemToMove = [draggedItemsArray objectAtIndex:count];
76+
[currentItemToMove setValue:[NSNumber numberWithInt:kTemporaryViewPosition] forKey:@"viewPosition"];
77+
}
78+
79+
int tempRow;
80+
if( row == 0 )
81+
tempRow = -1;
82+
else
83+
tempRow = row;
84+
85+
NSArray *startItemsArray = [helper entitiesWithViewPositionBetween:0 and:tempRow];
86+
NSArray *endItemsArray = [helper entitiesWithViewPositionGreaterThanOrEqualTo:row];
87+
88+
int currentViewPosition;
89+
90+
currentViewPosition = [helper renumberViewPositionsOfEntities:startItemsArray startingAt:0];
91+
92+
currentViewPosition = [helper renumberViewPositionsOfEntities:draggedItemsArray startingAt:currentViewPosition];
93+
94+
currentViewPosition = [helper renumberViewPositionsOfEntities:endItemsArray startingAt:currentViewPosition];
95+
96+
return YES;
97+
}
98+
else if( [info draggingSourceOperationMask] & NSDragOperationCopy )
99+
{
100+
NSArray *copiedItemsArray = [self copyItems:draggedItemsArray];
101+
102+
int tempRow;
103+
if( row == 0 )
104+
tempRow = -1;
105+
else
106+
tempRow = row;
107+
108+
NSArray *startItemsArray = [helper entitiesWithViewPositionBetween:0 and:tempRow];
109+
NSArray *endItemsArray = [helper entitiesWithViewPositionGreaterThanOrEqualTo:row];
110+
111+
int currentViewPosition;
112+
113+
currentViewPosition = [helper renumberViewPositionsOfEntities:startItemsArray startingAt:0];
114+
115+
currentViewPosition = [helper renumberViewPositionsOfEntities:copiedItemsArray startingAt:currentViewPosition];
116+
117+
currentViewPosition = [helper renumberViewPositionsOfEntities:endItemsArray startingAt:currentViewPosition];
118+
119+
return YES;
120+
}
121+
122+
return NO;
123+
}
124+
125+
- (NSArray *)copyItems:(NSArray *)itemsToCopyArray
126+
{
127+
NSMutableArray *arrayOfCopiedItems = [NSMutableArray arrayWithCapacity:[itemsToCopyArray count]];
128+
129+
int count;
130+
for( count = 0; count < [itemsToCopyArray count]; count++ )
131+
{
132+
NSManagedObject *itemToCopy = [itemsToCopyArray objectAtIndex:count];
133+
NSManagedObject *copiedItem = [NSEntityDescription insertNewObjectForEntityForName:@"Layer" inManagedObjectContext:[self managedObjectContext]];
134+
135+
[copiedItem setValue:[itemToCopy valueForKey:@"name"] forKey:@"name"];
136+
[copiedItem setValue:[itemToCopy valueForKey:@"visibleInEditor"] forKey:@"visibleInEditor"];
137+
[copiedItem setValue:[itemToCopy valueForKey:@"visibleInScenery"] forKey:@"visibleInScenery"];
138+
[copiedItem setValue:[itemToCopy valueForKey:@"level"] forKey:@"level"];
139+
[copiedItem setValue:[itemToCopy valueForKey:@"sprites"] forKey:@"sprites"];
140+
[copiedItem setValue:[itemToCopy valueForKey:@"tintColor"] forKey:@"tintColor"];
141+
[copiedItem setValue:[itemToCopy valueForKey:@"tintEnabled"] forKey:@"tintEnabled"];
142+
[copiedItem setValue:[NSNumber numberWithInt:kTemporaryViewPosition] forKey:@"viewPosition"];
143+
144+
[arrayOfCopiedItems addObject:copiedItem];
145+
}
146+
147+
return arrayOfCopiedItems;
148+
}
149+
150+
@end

AFGameEditor.h

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//
2+
// MyDocument.h
3+
// LevelEditor
4+
//
5+
// Created by Michael Markowski on 20.11.09.
6+
// Copyright Artifacts 2009 . All rights reserved.
7+
//
8+
9+
#import <Cocoa/Cocoa.h>
10+
#import <Quartz/Quartz.h>
11+
#import "TextureAtlasView.h"
12+
#import "LevelView.h"
13+
#import "Game.h"
14+
15+
#define LayerItemsDropType @"LayerItemsDropType"
16+
17+
@interface AFGameEditor : NSPersistentDocument {
18+
IBOutlet TextureAtlasView *textureAtlasView;
19+
IBOutlet NSScrollView *spriteSheetScrollView;
20+
IBOutlet NSArrayController *levelArrayController;
21+
IBOutlet NSArrayController *layerArrayController;
22+
IBOutlet NSArrayController *textureAtlasArrayController;
23+
IBOutlet NSDrawer *drawer;
24+
IBOutlet LevelView *levelView;
25+
Texture *selectedTexture;
26+
IBOutlet NSButton *infoButton;
27+
IBOutlet Sprite *selectedSprite;
28+
NSMutableArray *selectedSprites;
29+
IBOutlet NSPanel *infoHUD;
30+
NSArray *_sortDescriptors;
31+
IBOutlet NSTableView *layerTableView;
32+
IBOutlet NSButton *showGridCheckbox;
33+
Game *game;
34+
35+
NSMutableDictionary *volatileTextures;
36+
NSMutableDictionary *volatileTextureToAtlasNameMap;
37+
}
38+
39+
@property (nonatomic, retain) IBOutlet NSArrayController *levelArrayController;
40+
@property (nonatomic, retain) IBOutlet NSArrayController *layerArrayController;
41+
@property (nonatomic, retain) IBOutlet NSArrayController *textureAtlasArrayController;
42+
@property (nonatomic, retain) Texture *selectedTexture;
43+
@property (nonatomic, retain) IBOutlet NSButton *infoButton;
44+
@property (nonatomic, retain) IBOutlet Sprite *selectedSprite;
45+
@property (nonatomic, retain) NSMutableArray *selectedSprites;
46+
@property (nonatomic, retain) IBOutlet NSPanel *infoHUD;
47+
@property (nonatomic, retain) IBOutlet NSTableView *layerTableView;
48+
@property (nonatomic, retain) IBOutlet NSButton *showGridCheckbox;
49+
@property (nonatomic, retain) Game *game;
50+
51+
@property (nonatomic, retain) NSMutableDictionary *volatileTextures;
52+
@property (nonatomic, retain) NSMutableDictionary *volatileTextureToAtlasNameMap;
53+
54+
- (IBAction)openSpriteSheetAction:(id)sender;
55+
- (IBAction)openCoordsAction:(id)sender;
56+
- (IBAction)toggleDrawer:(id)sender;
57+
- (IBAction)toggleSpriteInfo:(id)sender;
58+
- (NSMutableDictionary*)allTextures;
59+
- (void)invalidateTextures;
60+
- (IBAction)addNewLayer:(id)sender;
61+
- (IBAction)addNewLevel:(id)sender;
62+
- (IBAction)removeSelectedLayers:(id)sender;
63+
- (IBAction)removeSelectedLevels:(id)sender;
64+
- (NSArray *)sortDescriptors;
65+
66+
@end

0 commit comments

Comments
 (0)