This is StatusView.m in view mode; [Download] [Up]
// // This file is a part of Risk by Mike Ferris. // #import "Risk.h" RCSID ("$Id: StatusView.m,v 1.4 1997/12/15 07:44:22 nygard Exp $"); #import "StatusView.h" #import "BoardSetup.h" #import "RiskGameManager.h" #import "SNUtility.h" #import "RiskPlayer.h" //====================================================================== // The StatusView shows the color of each player (in the order of play) // and, optionally, the number of cards in their hand. This number is // highlighted if the player has a valid card set. //====================================================================== #define StatusView_VERSION 1 static NSTextFieldCell *_textCell = nil; @implementation StatusView + (void) initialize { if (self == [StatusView class]) { [self setVersion:StatusView_VERSION]; _textCell = [[NSTextFieldCell allocWithZone:[self zone]] init]; [_textCell setBackgroundColor:[NSColor lightGrayColor]]; [_textCell setBezeled:NO]; [_textCell setBordered:NO]; [_textCell setFont:[NSFont fontWithName:@"Helvetica" size:10.0]]; [_textCell setAlignment:NSCenterTextAlignment]; [_textCell setEditable:NO]; [_textCell setSelectable:NO]; [_textCell setTextColor:[NSColor blackColor]]; } } //---------------------------------------------------------------------- - initWithFrame:(NSRect)frameRect { if ([super initWithFrame:frameRect] == nil) return nil; showCardSetCounts = [[BoardSetup instance] showCardSetCounts]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (defaultsChanged:) name:RiskBoardSetupShowCardSetCountsChangedNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (defaultsChanged:) name:RiskBoardSetupPlayerColorsChangedNotification object:nil]; return self; } //---------------------------------------------------------------------- - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } //---------------------------------------------------------------------- - (BOOL) isFlipped { return YES; } //---------------------------------------------------------------------- #define INTERSPACE 5.0 #define TEXTWIDTH 10.0 #define TEXTHEIGHT 15.0 #define INSET 5.0 - (void) drawRect:(NSRect)rect { Player currentPlayer; int playerCount; float boxHeight, boxWidth; NSRect boxRect, textRect; int l, offset; NSRect boundsRect; Player number; boundsRect = [self bounds]; #ifdef __APPLE_CPP__ [[NSColor controlColor] set]; #else PSsetgray (NSLightGray); #endif NSRectFill (boundsRect); playerCount = [gameManager activePlayerCount]; if (playerCount == 0 || [gameManager gameInProgress] == NO) { return; } currentPlayer = [gameManager currentPlayerNumber]; boxHeight = (boundsRect.size.height - ((playerCount + 1) * INTERSPACE)) / playerCount; boxWidth = (boundsRect.size.width - (3 * INTERSPACE)) - TEXTWIDTH; boxRect.origin.x = INTERSPACE; boxRect.size.width = boxWidth; boxRect.size.height = boxHeight; textRect.origin.x = (INTERSPACE * 2) + boxWidth; textRect.size.width = TEXTWIDTH; textRect.size.height = TEXTHEIGHT; offset = 0; for (l = 0; l < 6; l++) { number = 1 + ((l + currentPlayer - 1) % 6); if ([gameManager isPlayerActive:number] == YES) { // draw his entry boxRect.origin.y = ((offset + 1) * INTERSPACE) + (offset * boxHeight); NSDrawWhiteBezel (boxRect, boundsRect); [[[BoardSetup instance] colorForPlayer:number] set]; PSrectfill (boxRect.origin.x + INSET, boxRect.origin.y + INSET, boxRect.size.width - (2 * INSET), boxRect.size.height - (2 * INSET)); textRect.origin.y = ((offset + 1) * INTERSPACE) + (offset * boxHeight) + ((boxHeight - TEXTHEIGHT) / 2); if (showCardSetCounts == YES) { RiskPlayer *player; int count; player = [gameManager playerNumber:number]; count = [[player playerCards] count]; if ([player canTurnInCardSet] == YES) #ifdef __APPLE_CPP_ [_textCell setTextColor:[NSColor darkGrayColor]]; #else [_textCell setTextColor:[NSColor whiteColor]]; #endif else [_textCell setTextColor:[NSColor blackColor]]; [_textCell setIntValue:count]; [_textCell drawWithFrame:textRect inView:self]; } offset++; } } } //---------------------------------------------------------------------- - (void) defaultsChanged:(NSNotification *)aNotification { showCardSetCounts = [[BoardSetup instance] showCardSetCounts]; [self setNeedsDisplay:YES]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.