This is StatusController.m in view mode; [Download] [Up]
// // $Id: StatusController.m,v 1.7 1997/10/31 04:52:09 nygard Exp $ // // // This file is a part of Empire, a game of exploration and conquest. // Copyright (C) 1996 Steve Nygard // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // // You may contact the author by: // e-mail: nygard@telusplanet.net // #import "Empire.h" RCSID ("$Id: StatusController.m,v 1.7 1997/10/31 04:52:09 nygard Exp $"); #import "StatusController.h" #import "GameManager.h" //====================================================================== // We need some visual representation of a game in progress, since one // instance of the application can host a game of three remote players, // and there would otherwise be no way of knowing when the game was // over. //====================================================================== #define StatusController_VERSION 1 @implementation StatusController + (void) initialize { if (self == [StatusController class]) { [self setVersion:StatusController_VERSION]; } } //---------------------------------------------------------------------- - initWithGameManager:(GameManager *)theGameManager { NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter]; NSString *nibFile; BOOL loaded; [super init]; nibFile = @"GameStatus.nib"; loaded = [NSBundle loadNibNamed:nibFile owner:self]; if (loaded == NO) { NSLog (@"Could not load %@.", nibFile); [super dealloc]; return nil; } // The game manager owns the status controller. gameManager = theGameManager; [self updateCurrentTurn]; [self updateGameStatus]; [self updatePlayerTable]; [defaultCenter addObserver:self selector:@selector (updateGameStatus) name:EMGameStateChangedNotification object:gameManager]; [defaultCenter addObserver:self selector:@selector (updateCurrentTurn) name:EMTurnChangedNotification object:gameManager]; [defaultCenter addObserver:self selector:@selector (updatePlayerTable) name:EMPlayerStateChangedNotification object:gameManager]; return self; } //---------------------------------------------------------------------- - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; SNRelease (statusWindow); [super dealloc]; } //---------------------------------------------------------------------- - (void) showPanel { [statusWindow orderFront:self]; } //---------------------------------------------------------------------- - (void) stopGame:sender { if (gameManager != nil) [gameManager stopGame]; } //---------------------------------------------------------------------- - (void) updateCurrentTurn { [currentTurnTextfield setIntValue:[gameManager turnNumber]]; } //---------------------------------------------------------------------- - (void) updateGameStatus { [gameStateTextfield setStringValue:[gameManager gameStatus]]; } //---------------------------------------------------------------------- - (void) updatePlayerTable { [playerTable reloadData]; } //---------------------------------------------------------------------- - (BOOL) validateMenuItem:(NSMenuItem *)menuCell { BOOL valid = NO; if (gameManager != nil) valid = [gameManager validateMenuItem:menuCell]; return valid; } //====================================================================== // NSTable Data Source //====================================================================== - (int) numberOfRowsInTableView:(NSTableView *)aTableView { return 3; } //---------------------------------------------------------------------- - tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex { NSString *identifier; id tmp; tmp = nil; identifier = [aTableColumn identifier]; if ([identifier isEqualToString:@"Player"] == YES) { tmp = [NSNumber numberWithInt:rowIndex + 1]; } else { if (gameManager != nil) tmp = [[gameManager playerStatus:rowIndex + 1] objectForKey:identifier];; } return tmp; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.