Game class now tracks board state and moves, as strings, and can step through its history.
Fixed another bug in Go (you could drag your captured stones back to the board!)
9 /* Begin PBXBuildFile section */
10 27224FA00CC29B1A00814095 /* Grid.m in Sources */ = {isa = PBXBuildFile; fileRef = 27224F9F0CC29B1A00814095 /* Grid.m */; };
11 2722526F0CC2E86600814095 /* QuartzUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2722526E0CC2E86600814095 /* QuartzUtils.m */; };
12 2727556A0CC3234F009C4C6C /* Dispenser.m in Sources */ = {isa = PBXBuildFile; fileRef = 272755690CC3234F009C4C6C /* Dispenser.m */; };
13 27275A550CC6713E009C4C6C /* HexGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 27275A540CC6713E009C4C6C /* HexGrid.m */; };
14 27275C4B0CC700F2009C4C6C /* Game.m in Sources */ = {isa = PBXBuildFile; fileRef = 27275C4A0CC700F2009C4C6C /* Game.m */; };
15 27275C920CC7C578009C4C6C /* TicTacToeGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27275C910CC7C578009C4C6C /* TicTacToeGame.m */; };
16 272C90AB0CCACBA4009EE530 /* DiscPiece.m in Sources */ = {isa = PBXBuildFile; fileRef = 272C90AA0CCACBA4009EE530 /* DiscPiece.m */; };
17 2731E0280CD430B800E6E4C8 /* Deck.m in Sources */ = {isa = PBXBuildFile; fileRef = 2731E0270CD430B800E6E4C8 /* Deck.m */; };
18 2731E2A80CD5630600E6E4C8 /* BitHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2731E2A70CD5630600E6E4C8 /* BitHolder.m */; };
19 2734B2620CC7F25A0070C008 /* HexchequerGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 2734B2610CC7F25A0070C008 /* HexchequerGame.m */; };
20 2734B4F00CCA5BDB0070C008 /* CheckersGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 2734B4EF0CCA5BDB0070C008 /* CheckersGame.m */; };
21 274124060CFCCF9D00842A9B /* DemoBoardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 274124050CFCCF9D00842A9B /* DemoBoardView.m */; };
22 276DFC410D00867000D329AE /* Green Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 276DFC400D00867000D329AE /* Green Ball.png */; };
23 276DFC560D00890C00D329AE /* Red Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 276DFC530D00890C00D329AE /* Red Ball.png */; };
24 276DFC570D00890C00D329AE /* Yellow Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 276DFC540D00890C00D329AE /* Yellow Ball.png */; };
25 276DFC580D00890C00D329AE /* White Ball.png in Resources */ = {isa = PBXBuildFile; fileRef = 276DFC550D00890C00D329AE /* White Ball.png */; };
26 2795C2B80CC278C800D7B2BD /* Piece.m in Sources */ = {isa = PBXBuildFile; fileRef = 2795C2B70CC278C800D7B2BD /* Piece.m */; };
27 279F4D870D8606C200B32DBF /* GGBLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F4D840D8606C200B32DBF /* GGBLayer.m */; };
28 279F4D880D8606C200B32DBF /* GGBTextLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 279F4D860D8606C200B32DBF /* GGBTextLayer.m */; };
29 279F4DB20D8607AD00B32DBF /* O.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 279F4DB00D8607AD00B32DBF /* O.tiff */; };
30 279F4DB30D8607AD00B32DBF /* X.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 279F4DB10D8607AD00B32DBF /* X.tiff */; };
31 279F4DE20D8609C200B32DBF /* Background.png in Resources */ = {isa = PBXBuildFile; fileRef = 279F4DE10D8609C200B32DBF /* Background.png */; };
32 27B7543E0D08884F000516B9 /* Wood.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 27B7543D0D08884F000516B9 /* Wood.jpg */; };
33 27C999C30D81185E005AFD4F /* GGBUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C999C20D81185E005AFD4F /* GGBUtils.m */; };
34 27CCA8050CB8A3F9001CFE24 /* BoardView.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CCA8040CB8A3F9001CFE24 /* BoardView.m */; };
35 27CCA95F0CB8A74D001CFE24 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27CCA95E0CB8A74D001CFE24 /* Quartz.framework */; };
36 27CCAABD0CB92A9F001CFE24 /* Card.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CCAABC0CB92A9F001CFE24 /* Card.m */; };
37 27CCABBF0CB9496B001CFE24 /* Bit.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CCABBE0CB9496B001CFE24 /* Bit.m */; };
38 27CCAC750CB95C2B001CFE24 /* PlayingCard.m in Sources */ = {isa = PBXBuildFile; fileRef = 27CCAC740CB95C2B001CFE24 /* PlayingCard.m */; };
39 27D4F1260CCF011200923605 /* Stack.m in Sources */ = {isa = PBXBuildFile; fileRef = 27D4F1250CCF011200923605 /* Stack.m */; };
40 27DFC4410CCD01B7005E34CE /* GoGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27DFC4400CCD01B7005E34CE /* GoGame.m */; };
41 27F230B90CD1A61B006939C1 /* KlondikeGame.m in Sources */ = {isa = PBXBuildFile; fileRef = 27F230B80CD1A61B006939C1 /* KlondikeGame.m */; };
42 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
43 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
44 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
45 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
46 /* End PBXBuildFile section */
48 /* Begin PBXFileReference section */
49 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
50 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
51 27224F9E0CC29B1A00814095 /* Grid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Grid.h; sourceTree = "<group>"; };
52 27224F9F0CC29B1A00814095 /* Grid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Grid.m; sourceTree = "<group>"; };
53 2722526D0CC2E86600814095 /* QuartzUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuartzUtils.h; sourceTree = "<group>"; };
54 2722526E0CC2E86600814095 /* QuartzUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QuartzUtils.m; sourceTree = "<group>"; };
55 272755680CC3234F009C4C6C /* Dispenser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Dispenser.h; sourceTree = "<group>"; };
56 272755690CC3234F009C4C6C /* Dispenser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Dispenser.m; sourceTree = "<group>"; };
57 27275A530CC6713E009C4C6C /* HexGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexGrid.h; sourceTree = "<group>"; };
58 27275A540CC6713E009C4C6C /* HexGrid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HexGrid.m; sourceTree = "<group>"; };
59 27275C490CC700F2009C4C6C /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = "<group>"; };
60 27275C4A0CC700F2009C4C6C /* Game.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Game.m; sourceTree = "<group>"; };
61 27275C900CC7C578009C4C6C /* TicTacToeGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TicTacToeGame.h; sourceTree = "<group>"; };
62 27275C910CC7C578009C4C6C /* TicTacToeGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TicTacToeGame.m; sourceTree = "<group>"; };
63 272C90A90CCACBA4009EE530 /* DiscPiece.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiscPiece.h; sourceTree = "<group>"; };
64 272C90AA0CCACBA4009EE530 /* DiscPiece.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiscPiece.m; sourceTree = "<group>"; };
65 2731E0260CD430B800E6E4C8 /* Deck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Deck.h; sourceTree = "<group>"; };
66 2731E0270CD430B800E6E4C8 /* Deck.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Deck.m; sourceTree = "<group>"; };
67 2731E2A60CD5630600E6E4C8 /* BitHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitHolder.h; sourceTree = "<group>"; };
68 2731E2A70CD5630600E6E4C8 /* BitHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BitHolder.m; sourceTree = "<group>"; };
69 2734B2600CC7F25A0070C008 /* HexchequerGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HexchequerGame.h; sourceTree = "<group>"; };
70 2734B2610CC7F25A0070C008 /* HexchequerGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HexchequerGame.m; sourceTree = "<group>"; };
71 2734B4EE0CCA5BDB0070C008 /* CheckersGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CheckersGame.h; sourceTree = "<group>"; };
72 2734B4EF0CCA5BDB0070C008 /* CheckersGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CheckersGame.m; sourceTree = "<group>"; };
73 274124040CFCCF9D00842A9B /* DemoBoardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoBoardView.h; sourceTree = "<group>"; };
74 274124050CFCCF9D00842A9B /* DemoBoardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoBoardView.m; sourceTree = "<group>"; };
75 276DFC400D00867000D329AE /* Green Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Green Ball.png"; path = "Resources/Green Ball.png"; sourceTree = "<group>"; };
76 276DFC530D00890C00D329AE /* Red Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Red Ball.png"; path = "Resources/Red Ball.png"; sourceTree = "<group>"; };
77 276DFC540D00890C00D329AE /* Yellow Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Yellow Ball.png"; path = "Resources/Yellow Ball.png"; sourceTree = "<group>"; };
78 276DFC550D00890C00D329AE /* White Ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "White Ball.png"; path = "Resources/White Ball.png"; sourceTree = "<group>"; };
79 2795C2B60CC278C800D7B2BD /* Piece.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Piece.h; sourceTree = "<group>"; };
80 2795C2B70CC278C800D7B2BD /* Piece.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Piece.m; sourceTree = "<group>"; };
81 279F4D830D8606C200B32DBF /* GGBLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GGBLayer.h; sourceTree = "<group>"; };
82 279F4D840D8606C200B32DBF /* GGBLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GGBLayer.m; sourceTree = "<group>"; };
83 279F4D850D8606C200B32DBF /* GGBTextLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GGBTextLayer.h; sourceTree = "<group>"; };
84 279F4D860D8606C200B32DBF /* GGBTextLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GGBTextLayer.m; sourceTree = "<group>"; };
85 279F4DB00D8607AD00B32DBF /* O.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = O.tiff; path = Resources/O.tiff; sourceTree = "<group>"; };
86 279F4DB10D8607AD00B32DBF /* X.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = X.tiff; path = Resources/X.tiff; sourceTree = "<group>"; };
87 279F4DE10D8609C200B32DBF /* Background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Background.png; path = Resources/Background.png; sourceTree = "<group>"; };
88 27B7543D0D08884F000516B9 /* Wood.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = Wood.jpg; path = Resources/Wood.jpg; sourceTree = "<group>"; };
89 27C999C10D81185E005AFD4F /* GGBUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GGBUtils.h; sourceTree = "<group>"; };
90 27C999C20D81185E005AFD4F /* GGBUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GGBUtils.m; sourceTree = "<group>"; };
91 27C99AB40D820500005AFD4F /* BoardUIView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoardUIView.h; sourceTree = "<group>"; };
92 27C99AB50D820500005AFD4F /* BoardUIView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BoardUIView.m; sourceTree = "<group>"; };
93 27CCA8030CB8A3F9001CFE24 /* BoardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoardView.h; sourceTree = "<group>"; };
94 27CCA8040CB8A3F9001CFE24 /* BoardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BoardView.m; sourceTree = "<group>"; };
95 27CCA95E0CB8A74D001CFE24 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = "<absolute>"; };
96 27CCAABB0CB92A9F001CFE24 /* Card.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Card.h; sourceTree = "<group>"; };
97 27CCAABC0CB92A9F001CFE24 /* Card.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Card.m; sourceTree = "<group>"; };
98 27CCABBD0CB9496B001CFE24 /* Bit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bit.h; sourceTree = "<group>"; };
99 27CCABBE0CB9496B001CFE24 /* Bit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Bit.m; sourceTree = "<group>"; };
100 27CCAC730CB95C2B001CFE24 /* PlayingCard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlayingCard.h; sourceTree = "<group>"; };
101 27CCAC740CB95C2B001CFE24 /* PlayingCard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlayingCard.m; sourceTree = "<group>"; };
102 27D4F1240CCF011200923605 /* Stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stack.h; sourceTree = "<group>"; };
103 27D4F1250CCF011200923605 /* Stack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Stack.m; sourceTree = "<group>"; };
104 27DFC43F0CCD01B7005E34CE /* GoGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GoGame.h; sourceTree = "<group>"; };
105 27DFC4400CCD01B7005E34CE /* GoGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoGame.m; sourceTree = "<group>"; };
106 27F230B70CD1A61B006939C1 /* KlondikeGame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KlondikeGame.h; sourceTree = "<group>"; };
107 27F230B80CD1A61B006939C1 /* KlondikeGame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KlondikeGame.m; sourceTree = "<group>"; };
108 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
109 29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
110 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
111 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
112 32CA4F630368D1EE00C91783 /* GeekGameBoard_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeekGameBoard_Prefix.pch; sourceTree = "<group>"; };
113 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Resources/Info.plist; sourceTree = "<group>"; };
114 8D1107320486CEB800E47090 /* GeekGameBoard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GeekGameBoard.app; sourceTree = BUILT_PRODUCTS_DIR; };
115 /* End PBXFileReference section */
117 /* Begin PBXFrameworksBuildPhase section */
118 8D11072E0486CEB800E47090 /* Frameworks */ = {
119 isa = PBXFrameworksBuildPhase;
120 buildActionMask = 2147483647;
122 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
123 27CCA95F0CB8A74D001CFE24 /* Quartz.framework in Frameworks */,
125 runOnlyForDeploymentPostprocessing = 0;
127 /* End PBXFrameworksBuildPhase section */
129 /* Begin PBXGroup section */
130 080E96DDFE201D6D7F000001 /* Source */ = {
133 27CCA8030CB8A3F9001CFE24 /* BoardView.h */,
134 27CCA8040CB8A3F9001CFE24 /* BoardView.m */,
135 27C99AB40D820500005AFD4F /* BoardUIView.h */,
136 27C99AB50D820500005AFD4F /* BoardUIView.m */,
137 27CCABBD0CB9496B001CFE24 /* Bit.h */,
138 27CCABBE0CB9496B001CFE24 /* Bit.m */,
139 2731E2A60CD5630600E6E4C8 /* BitHolder.h */,
140 2731E2A70CD5630600E6E4C8 /* BitHolder.m */,
141 27D4F1240CCF011200923605 /* Stack.h */,
142 27D4F1250CCF011200923605 /* Stack.m */,
143 27275C440CC70095009C4C6C /* Cards */,
144 27275C450CC700C4009C4C6C /* Boards and Pieces */,
145 27275C480CC700D8009C4C6C /* Games */,
146 279F4D830D8606C200B32DBF /* GGBLayer.h */,
147 279F4D840D8606C200B32DBF /* GGBLayer.m */,
148 279F4D850D8606C200B32DBF /* GGBTextLayer.h */,
149 279F4D860D8606C200B32DBF /* GGBTextLayer.m */,
150 2722526D0CC2E86600814095 /* QuartzUtils.h */,
151 2722526E0CC2E86600814095 /* QuartzUtils.m */,
152 27C999C10D81185E005AFD4F /* GGBUtils.h */,
153 27C999C20D81185E005AFD4F /* GGBUtils.m */,
156 sourceTree = "<group>";
158 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
161 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
163 name = "Linked Frameworks";
164 sourceTree = "<group>";
166 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
169 29B97324FDCFA39411CA2CEA /* AppKit.framework */,
170 27CCA95E0CB8A74D001CFE24 /* Quartz.framework */,
171 29B97325FDCFA39411CA2CEA /* Foundation.framework */,
173 name = "Other Frameworks";
174 sourceTree = "<group>";
176 19C28FACFE9D520D11CA2CBB /* Products */ = {
179 8D1107320486CEB800E47090 /* GeekGameBoard.app */,
182 sourceTree = "<group>";
184 27275C440CC70095009C4C6C /* Cards */ = {
187 27CCAABB0CB92A9F001CFE24 /* Card.h */,
188 27CCAABC0CB92A9F001CFE24 /* Card.m */,
189 2731E0260CD430B800E6E4C8 /* Deck.h */,
190 2731E0270CD430B800E6E4C8 /* Deck.m */,
191 27CCAC730CB95C2B001CFE24 /* PlayingCard.h */,
192 27CCAC740CB95C2B001CFE24 /* PlayingCard.m */,
195 sourceTree = "<group>";
197 27275C450CC700C4009C4C6C /* Boards and Pieces */ = {
200 2795C2B60CC278C800D7B2BD /* Piece.h */,
201 2795C2B70CC278C800D7B2BD /* Piece.m */,
202 272C90A90CCACBA4009EE530 /* DiscPiece.h */,
203 272C90AA0CCACBA4009EE530 /* DiscPiece.m */,
204 27224F9E0CC29B1A00814095 /* Grid.h */,
205 27224F9F0CC29B1A00814095 /* Grid.m */,
206 27275A530CC6713E009C4C6C /* HexGrid.h */,
207 27275A540CC6713E009C4C6C /* HexGrid.m */,
208 272755680CC3234F009C4C6C /* Dispenser.h */,
209 272755690CC3234F009C4C6C /* Dispenser.m */,
211 name = "Boards and Pieces";
212 sourceTree = "<group>";
214 27275C480CC700D8009C4C6C /* Games */ = {
217 27275C490CC700F2009C4C6C /* Game.h */,
218 27275C4A0CC700F2009C4C6C /* Game.m */,
219 27275C900CC7C578009C4C6C /* TicTacToeGame.h */,
220 27275C910CC7C578009C4C6C /* TicTacToeGame.m */,
221 2734B4EE0CCA5BDB0070C008 /* CheckersGame.h */,
222 2734B4EF0CCA5BDB0070C008 /* CheckersGame.m */,
223 2734B2600CC7F25A0070C008 /* HexchequerGame.h */,
224 2734B2610CC7F25A0070C008 /* HexchequerGame.m */,
225 27DFC43F0CCD01B7005E34CE /* GoGame.h */,
226 27DFC4400CCD01B7005E34CE /* GoGame.m */,
227 27F230B70CD1A61B006939C1 /* KlondikeGame.h */,
228 27F230B80CD1A61B006939C1 /* KlondikeGame.m */,
231 sourceTree = "<group>";
233 29B97314FDCFA39411CA2CEA /* BoardGame */ = {
236 080E96DDFE201D6D7F000001 /* Source */,
237 29B97315FDCFA39411CA2CEA /* Demo Application */,
238 29B97317FDCFA39411CA2CEA /* Resources */,
239 29B97323FDCFA39411CA2CEA /* Frameworks */,
240 19C28FACFE9D520D11CA2CBB /* Products */,
243 sourceTree = "<group>";
245 29B97315FDCFA39411CA2CEA /* Demo Application */ = {
248 274124040CFCCF9D00842A9B /* DemoBoardView.h */,
249 274124050CFCCF9D00842A9B /* DemoBoardView.m */,
250 32CA4F630368D1EE00C91783 /* GeekGameBoard_Prefix.pch */,
251 29B97316FDCFA39411CA2CEA /* main.m */,
253 name = "Demo Application";
255 sourceTree = "<group>";
257 29B97317FDCFA39411CA2CEA /* Resources */ = {
260 29B97318FDCFA39411CA2CEA /* MainMenu.nib */,
261 8D1107310486CEB800E47090 /* Info.plist */,
262 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
263 279F4DE10D8609C200B32DBF /* Background.png */,
264 276DFC400D00867000D329AE /* Green Ball.png */,
265 276DFC530D00890C00D329AE /* Red Ball.png */,
266 276DFC540D00890C00D329AE /* Yellow Ball.png */,
267 276DFC550D00890C00D329AE /* White Ball.png */,
268 27B7543D0D08884F000516B9 /* Wood.jpg */,
269 279F4DB00D8607AD00B32DBF /* O.tiff */,
270 279F4DB10D8607AD00B32DBF /* X.tiff */,
273 sourceTree = "<group>";
275 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
278 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
279 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
282 sourceTree = "<group>";
284 /* End PBXGroup section */
286 /* Begin PBXNativeTarget section */
287 8D1107260486CEB800E47090 /* BoardGame */ = {
288 isa = PBXNativeTarget;
289 buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "BoardGame" */;
291 8D1107290486CEB800E47090 /* Resources */,
292 8D11072C0486CEB800E47090 /* Sources */,
293 8D11072E0486CEB800E47090 /* Frameworks */,
300 productInstallPath = "$(HOME)/Applications";
301 productName = BoardGame;
302 productReference = 8D1107320486CEB800E47090 /* GeekGameBoard.app */;
303 productType = "com.apple.product-type.application";
305 /* End PBXNativeTarget section */
307 /* Begin PBXProject section */
308 29B97313FDCFA39411CA2CEA /* Project object */ = {
310 buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GeekGameBoard" */;
311 compatibilityVersion = "Xcode 3.0";
312 hasScannedForEncodings = 1;
313 mainGroup = 29B97314FDCFA39411CA2CEA /* BoardGame */;
317 8D1107260486CEB800E47090 /* BoardGame */,
320 /* End PBXProject section */
322 /* Begin PBXResourcesBuildPhase section */
323 8D1107290486CEB800E47090 /* Resources */ = {
324 isa = PBXResourcesBuildPhase;
325 buildActionMask = 2147483647;
327 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */,
328 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
329 276DFC410D00867000D329AE /* Green Ball.png in Resources */,
330 276DFC560D00890C00D329AE /* Red Ball.png in Resources */,
331 276DFC570D00890C00D329AE /* Yellow Ball.png in Resources */,
332 276DFC580D00890C00D329AE /* White Ball.png in Resources */,
333 27B7543E0D08884F000516B9 /* Wood.jpg in Resources */,
334 279F4DB20D8607AD00B32DBF /* O.tiff in Resources */,
335 279F4DB30D8607AD00B32DBF /* X.tiff in Resources */,
336 279F4DE20D8609C200B32DBF /* Background.png in Resources */,
338 runOnlyForDeploymentPostprocessing = 0;
340 /* End PBXResourcesBuildPhase section */
342 /* Begin PBXSourcesBuildPhase section */
343 8D11072C0486CEB800E47090 /* Sources */ = {
344 isa = PBXSourcesBuildPhase;
345 buildActionMask = 2147483647;
347 8D11072D0486CEB800E47090 /* main.m in Sources */,
348 27CCA8050CB8A3F9001CFE24 /* BoardView.m in Sources */,
349 27CCAABD0CB92A9F001CFE24 /* Card.m in Sources */,
350 27CCABBF0CB9496B001CFE24 /* Bit.m in Sources */,
351 27CCAC750CB95C2B001CFE24 /* PlayingCard.m in Sources */,
352 2795C2B80CC278C800D7B2BD /* Piece.m in Sources */,
353 27224FA00CC29B1A00814095 /* Grid.m in Sources */,
354 2722526F0CC2E86600814095 /* QuartzUtils.m in Sources */,
355 2727556A0CC3234F009C4C6C /* Dispenser.m in Sources */,
356 27275A550CC6713E009C4C6C /* HexGrid.m in Sources */,
357 27275C4B0CC700F2009C4C6C /* Game.m in Sources */,
358 27275C920CC7C578009C4C6C /* TicTacToeGame.m in Sources */,
359 2734B2620CC7F25A0070C008 /* HexchequerGame.m in Sources */,
360 2734B4F00CCA5BDB0070C008 /* CheckersGame.m in Sources */,
361 272C90AB0CCACBA4009EE530 /* DiscPiece.m in Sources */,
362 27DFC4410CCD01B7005E34CE /* GoGame.m in Sources */,
363 27D4F1260CCF011200923605 /* Stack.m in Sources */,
364 27F230B90CD1A61B006939C1 /* KlondikeGame.m in Sources */,
365 2731E0280CD430B800E6E4C8 /* Deck.m in Sources */,
366 2731E2A80CD5630600E6E4C8 /* BitHolder.m in Sources */,
367 274124060CFCCF9D00842A9B /* DemoBoardView.m in Sources */,
368 27C999C30D81185E005AFD4F /* GGBUtils.m in Sources */,
369 279F4D870D8606C200B32DBF /* GGBLayer.m in Sources */,
370 279F4D880D8606C200B32DBF /* GGBTextLayer.m in Sources */,
372 runOnlyForDeploymentPostprocessing = 0;
374 /* End PBXSourcesBuildPhase section */
376 /* Begin PBXVariantGroup section */
377 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
378 isa = PBXVariantGroup;
380 089C165DFE840E0CC02AAC07 /* English */,
382 name = InfoPlist.strings;
383 sourceTree = "<group>";
385 29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = {
386 isa = PBXVariantGroup;
388 29B97319FDCFA39411CA2CEA /* English */,
391 sourceTree = "<group>";
393 /* End PBXVariantGroup section */
395 /* Begin XCBuildConfiguration section */
396 C01FCF4B08A954540054247B /* Debug */ = {
397 isa = XCBuildConfiguration;
399 COPY_PHASE_STRIP = NO;
400 GCC_DYNAMIC_NO_PIC = NO;
401 GCC_ENABLE_FIX_AND_CONTINUE = YES;
402 GCC_MODEL_TUNING = G5;
403 GCC_OPTIMIZATION_LEVEL = 0;
404 GCC_PRECOMPILE_PREFIX_HEADER = YES;
405 GCC_PREFIX_HEADER = Source/GeekGameBoard_Prefix.pch;
406 INFOPLIST_FILE = Resources/Info.plist;
407 INSTALL_PATH = "$(HOME)/Applications";
408 PRODUCT_NAME = GeekGameBoard;
409 WRAPPER_EXTENSION = app;
414 C01FCF4C08A954540054247B /* Release */ = {
415 isa = XCBuildConfiguration;
423 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
424 GCC_MODEL_TUNING = G5;
425 GCC_PRECOMPILE_PREFIX_HEADER = YES;
426 GCC_PREFIX_HEADER = Source/GeekGameBoard_Prefix.pch;
427 INFOPLIST_FILE = Resources/Info.plist;
428 INSTALL_PATH = "$(HOME)/Applications";
429 PRODUCT_NAME = GeekGameBoard;
430 WRAPPER_EXTENSION = app;
434 C01FCF4F08A954540054247B /* Debug */ = {
435 isa = XCBuildConfiguration;
437 GCC_C_LANGUAGE_STANDARD = gnu99;
438 GCC_ENABLE_OBJC_GC = unsupported;
439 GCC_TREAT_WARNINGS_AS_ERRORS = YES;
440 GCC_WARN_ABOUT_RETURN_TYPE = YES;
441 GCC_WARN_UNUSED_VARIABLE = YES;
443 SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
444 WARNING_CFLAGS = "-Wall";
448 C01FCF5008A954540054247B /* Release */ = {
449 isa = XCBuildConfiguration;
455 GCC_C_LANGUAGE_STANDARD = gnu99;
456 GCC_ENABLE_OBJC_GC = unsupported;
457 GCC_TREAT_WARNINGS_AS_ERRORS = YES;
458 GCC_WARN_ABOUT_RETURN_TYPE = YES;
459 GCC_WARN_UNUSED_VARIABLE = YES;
461 SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
462 WARNING_CFLAGS = "-Wall";
466 /* End XCBuildConfiguration section */
468 /* Begin XCConfigurationList section */
469 C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "BoardGame" */ = {
470 isa = XCConfigurationList;
471 buildConfigurations = (
472 C01FCF4B08A954540054247B /* Debug */,
473 C01FCF4C08A954540054247B /* Release */,
475 defaultConfigurationIsVisible = 0;
476 defaultConfigurationName = Release;
478 C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GeekGameBoard" */ = {
479 isa = XCConfigurationList;
480 buildConfigurations = (
481 C01FCF4F08A954540054247B /* Debug */,
482 C01FCF5008A954540054247B /* Release */,
484 defaultConfigurationIsVisible = 0;
485 defaultConfigurationName = Release;
487 /* End XCConfigurationList section */
489 rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;