1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/Source/BitHolder.m Wed Mar 12 15:51:32 2008 -0700
1.3 @@ -0,0 +1,80 @@
1.4 +/* This code is based on Apple's "GeekGameBoard" sample code, version 1.0.
1.5 + http://developer.apple.com/samplecode/GeekGameBoard/
1.6 + Copyright © 2007 Apple Inc. Copyright © 2008 Jens Alfke. All Rights Reserved.
1.7 +
1.8 + Redistribution and use in source and binary forms, with or without modification, are permitted
1.9 + provided that the following conditions are met:
1.10 +
1.11 + * Redistributions of source code must retain the above copyright notice, this list of conditions
1.12 + and the following disclaimer.
1.13 + * Redistributions in binary form must reproduce the above copyright notice, this list of
1.14 + conditions and the following disclaimer in the documentation and/or other materials provided
1.15 + with the distribution.
1.16 +
1.17 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
1.18 + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
1.19 + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRI-
1.20 + BUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1.21 + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
1.22 + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1.23 + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
1.24 + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1.25 +*/
1.26 +#import "BitHolder.h"
1.27 +#import "Bit.h"
1.28 +#import "QuartzUtils.h"
1.29 +#import "GGBUtils.h"
1.30 +
1.31 +
1.32 +@implementation BitHolder
1.33 +
1.34 +
1.35 +- (void) dealloc
1.36 +{
1.37 + [_bit release];
1.38 + [super dealloc];
1.39 +}
1.40 +
1.41 +
1.42 +- (Bit*) bit
1.43 +{
1.44 + if( _bit && _bit.superlayer != self && !_bit.pickedUp )
1.45 + setObj(&_bit,nil);
1.46 + return _bit;
1.47 +}
1.48 +
1.49 +- (void) setBit: (Bit*)bit
1.50 +{
1.51 + if( bit != self.bit ) {
1.52 + if( bit && _bit )
1.53 + [_bit destroy];
1.54 + setObj(&_bit,bit);
1.55 + ChangeSuperlayer(bit,self,-1);
1.56 + }
1.57 +}
1.58 +
1.59 +- (BOOL) isEmpty {return self.bit==nil;}
1.60 +
1.61 +@synthesize highlighted=_highlighted;
1.62 +
1.63 +- (Bit*) canDragBit: (Bit*)bit
1.64 +{
1.65 + if( bit.superlayer == self && ! bit.unfriendly )
1.66 + return bit;
1.67 + else
1.68 + return nil;
1.69 +}
1.70 +
1.71 +- (void) cancelDragBit: (Bit*)bit { }
1.72 +- (void) draggedBit: (Bit*)bit to: (id<BitHolder>)dst {self.bit = nil;}
1.73 +
1.74 +- (BOOL) canDropBit: (Bit*)bit atPoint: (CGPoint)point {return YES;}
1.75 +- (void) willNotDropBit: (Bit*)bit { }
1.76 +
1.77 +- (BOOL) dropBit: (Bit*)bit atPoint: (CGPoint)point
1.78 +{
1.79 + self.bit = bit;
1.80 + return YES;
1.81 +}
1.82 +
1.83 +@end