/[hegemonie]/hegemonie/GameEngine/HgGame.m
ViewVC logotype

Diff of /hegemonie/GameEngine/HgGame.m

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by thunder, Mon Jul 7 16:36:52 2003 UTC revision 1.8 by thunder, Wed Jul 16 13:15:59 2003 UTC
# Line 22  Line 22 
22   */   */
23    
24  #include <Foundation/NSArray.h>  #include <Foundation/NSArray.h>
25    #include <Foundation/NSDictionary.h>
26  #include <Foundation/NSException.h>  #include <Foundation/NSException.h>
27  #include <Foundation/NSCoder.h>  #include <Foundation/NSCoder.h>
28    #include <Foundation/NSValue.h>
29    
30  #include "GameEngine/HgGame.h"  #include "GameEngine/HgGame.h"
31  #include "GameEngine/HgPlayer.h"  #include "GameEngine/HgPlayer.h"
# Line 37  Line 39 
39   */   */
40  @implementation HgGame  @implementation HgGame
41    
42    static HgGame *_currentGame = nil;
43    
44    /**
45     * Return the current game in the current processus.
46     */
47    + (HgGame *) currentGame
48    {
49      return _currentGame;
50    }
51    
52  /**  /**
53   * Initialize a new game, with a given name.   * Initialize a new game, with a given name.
54   */   */
# Line 45  Line 57 
57    NSParameterAssert (name);    NSParameterAssert (name);
58    NSParameterAssert ([name length] != 0);    NSParameterAssert ([name length] != 0);
59    
60      NSAssert (!_currentGame, @"A game is already launched");
61    
62    self = [super init];    self = [super init];
63    if (self != nil)    if (self != nil)
64      {      {
65        _name = RETAIN(name);        _name = RETAIN(name);
66        _players = [[NSMutableArray alloc] init];        _players = [[NSMutableDictionary alloc] init];
67        _teams = [[NSMutableArray alloc] init];        _teams = [[NSMutableDictionary alloc] init];
68        _map = nil;        _map = nil;
69        _objects = [[NSMutableArray alloc] init];        _objects = [[NSMutableDictionary alloc] init];
70    
71          _currentGame = self;
72      }      }
73        
74    return self;    return self;
75  }  }
76    
77  /**  // /**
78   * Initialize a new game, with an existing game.  //  * Initialize a new game, with an existing game.
79   */  //  */
80  - (id) initWithGame: (HgGame *)game  // - (id) initWithGame: (HgGame *)game
81  {  // {
82    NSParameterAssert(game);  //   NSParameterAssert(game);
83    
84    self = [super init];  //   self = [super init];
85    if (self != nil)  //   if (self != nil)
86      {  //     {
87        _name = RETAIN([game name]);  //       _name = RETAIN([game name]);
88        _players = [[NSMutableArray alloc] initWithArray: [game players]];  //       _players = [[NSMutableArray alloc] initWithArray: [game players]];
89        _teams = [[NSMutableArray alloc] initWithArray: [game teams]];  //       _teams = [[NSMutableArray alloc] initWithArray: [game teams]];
90        _map = nil;  //       _map = nil;
91        _objects = [[NSMutableArray alloc] initWithArray: [game objects]];  //       _objects = [[NSMutableArray alloc] initWithArray: [game objects]];
92      }  //     }
93        
94    return self;  //   return self;
95  }  // }
96    
97  /**  /**
98   * Dealloc the current game.   * Dealloc the current game.
99   */   */
100  - (void) dealloc  - (void) dealloc
101  {  {
102      _currentGame = nil;
103    
104    RELEASE(_name);    RELEASE(_name);
105    RELEASE(_players);    RELEASE(_players);
106    RELEASE(_teams);    RELEASE(_teams);
# Line 107  Line 125 
125  - (void) addPlayer: (HgPlayer *)player  - (void) addPlayer: (HgPlayer *)player
126  {  {
127    NSParameterAssert (player);    NSParameterAssert (player);
128    NSParameterAssert (![_players containsObject: player]);    NSParameterAssert ([[_players allKeysForObject: player] count] == 0);
129    
130      NSNumber *numId = [NSNumber numberWithInt: [player identifier]];
131    
132    [_players addObject: player];    [_players setObject: player forKey: numId];
133  }  }
134    
135  /**  /**
# Line 119  Line 139 
139  -(void)  removePlayer: (HgPlayer *)player  -(void)  removePlayer: (HgPlayer *)player
140  {  {
141    NSParameterAssert (player);    NSParameterAssert (player);
142    NSParameterAssert ([_players containsObject: player]);    NSParameterAssert ([[_players allKeysForObject: player] count] != 0);
143    
144    [_players removeObject: player];    NSNumber *numId = [NSNumber numberWithInt: [player identifier]];
145    
146      [_players removeObjectForKey: numId];
147  }  }
148    
149  /**  /**
150   * Return the list of players.   * Return the list of players.
151   */   */
152  - (NSArray *) players  - (NSDictionary *) players
153  {  {
154    return _players;    return _players;
155  }  }
# Line 138  Line 160 
160  - (void) addTeam: (HgTeam *)team  - (void) addTeam: (HgTeam *)team
161  {  {
162    NSParameterAssert (team);    NSParameterAssert (team);
163    NSParameterAssert (![_teams containsObject: team]);    NSParameterAssert ([[_teams allKeysForObject: team] count] == 0);
164    
165      NSNumber *numId = [NSNumber numberWithInt: [team identifier]];
166    
167    [_teams addObject: team];    [_teams setObject: team forKey: numId];
168  }  }
169  /**  /**
170   * Remove team from the current game. The team must be contained in   * Remove team from the current game. The team must be contained in
171   * the game.   * the game.
172   */   */
173  - (void) removeTeam: (HgTeam *)team  - (void) removeTeam: (HgTeam *)team
174  {  {
   
175    NSParameterAssert (team);    NSParameterAssert (team);
176    NSParameterAssert ([_teams containsObject: team]);    NSParameterAssert ([[_teams allKeysForObject: team] count] != 0);
177    
178    [_teams removeObject: team];    NSNumber *numId = [NSNumber numberWithInt: [team identifier]];
179    
180      [_teams removeObjectForKey: numId];
181  }  }
182    
183  /**  /**
184   * Return the current team list.   * Return the current team list.
185   */   */
186  - (NSArray *) teams  - (NSDictionary *) teams
187  {  {
188    return _teams;    return _teams;
189  }  }
# Line 172  Line 197 
197    /* FIXME - map is not declared */    /* FIXME - map is not declared */
198        
199    /*    /*
200   NSParameterAssert (map);      NSParameterAssert (map);
201        
202   if (_map)      if (_map)
203     RELEASE(_map);      RELEASE(_map);
204     _map = RETAIN(map);*/      _map = RETAIN(map);*/
205  }  }
206    
207  /**  /**
# Line 193  Line 218 
218  - (void) addObject: (HgObject *)object  - (void) addObject: (HgObject *)object
219  {  {
220    NSParameterAssert (object);    NSParameterAssert (object);
221    NSParameterAssert (![_objects containsObject: object]);    NSParameterAssert ([[_objects allKeysForObject: object] count] == 0);
222    
223    [_objects addObject: object];    NSNumber *numId = [NSNumber numberWithInt: [object identifier]];
224    
225      [_objects setObject: object forKey: numId];
226  }  }
227    
228  /**  /**
# Line 205  Line 232 
232  - (void) removeObject: (HgObject *)object  - (void) removeObject: (HgObject *)object
233  {  {
234    NSParameterAssert (object);    NSParameterAssert (object);
235    NSParameterAssert ([_objects containsObject: object]);    NSParameterAssert ([[_objects allKeysForObject: object] count] != 0);
236    
237      NSNumber *numId = [NSNumber numberWithInt: [object identifier]];
238    
239    [_objects removeObject: object];    [_objects removeObjectForKey: numId];
240  }  }
241    
242  /**  /**
243   * Return the current object list.   * Return the current object list.
244   */   */
245  - (NSArray *) objects  - (NSDictionary *) objects
246  {  {
247    return _objects;    return _objects;
248  }  }
249    
250  /**  // /**
251   *  //  *
252   */  //  */
253  - (void) modifWithGame: (HgGame *)game  // - (void) modifWithGame: (HgGame *)game
254  {  // {
255    NSParameterAssert (game);  //   NSParameterAssert (game);
256    
257    [_name setString: [game name]];  //   [_name setString: [game name]];
258    [_players setArray: [game players]];  //   [_players setArray: [game players]];
259    [_teams setArray: [game teams]];  //   [_teams setArray: [game teams]];
260    _map = [game map];  //   _map = [game map];
261    [_objects setArray: [game objects]];  //   [_objects setArray: [game objects]];
262  }  // }
   
 @end  
   
263    
 @implementation HgGame (Coding)  
264    
265  - (void)encodeWithCoder: (NSCoder *)encoder  - (void)encodeWithCoder: (NSCoder *)encoder
266  {  {

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26