This is ArmyView.m in view mode; [Download] [Up]
// ArmyView.m // Part of Risk by Mike Ferris #import "ArmyView.h" #import <appkit/TextField.h> #import <appkit/NXImage.h> #import <appkit/Panel.h> @implementation ArmyView + initialize { if (self == [ArmyView class]) { [self setVersion:1]; } return self; } - initFrame:(NXRect *)frm { [super initFrame:frm]; armiesLeft=0; soldierImage = [NXImage findImageNamed:"Soldier"]; fiveImage = [NXImage findImageNamed:"5Soldiers"]; tenImage = [NXImage findImageNamed:"10Soldiers"]; if (soldierImage==nil) { NXRunAlertPanel("Error", "Couldn't find soldier image.", "OK", NULL, NULL); } return self; } - free { [soldierImage free]; [fiveImage free]; [tenImage free]; return [super free]; } - (int)armiesLeft { return armiesLeft; } - setArmiesLeft:(int)num { armiesLeft=num; [armiesLeftTextField setIntValue:armiesLeft]; [self display]; return self; } - decreaseArmiesLeftBy:(int)num { armiesLeft-=num; [armiesLeftTextField setIntValue:armiesLeft]; [self display]; return self; } - increaseArmiesLeftBy:(int)num; { armiesLeft+=num; [armiesLeftTextField setIntValue:armiesLeft]; [self display]; return self; } #define INTERSPACE -1.0 - drawSelf:(NXRect *)rects :(int)rectCount { NXPoint point={3.0, 5.0}; NXSize imageSize; int i; int tens, fives, ones; i=armiesLeft; tens=i/10; i=i%10; fives=i/5; ones=i%5; NXDrawWhiteBezel(&bounds, NULL); [tenImage getSize:&imageSize]; for (i=0;i<tens;i++) { [tenImage composite:NX_SOVER toPoint:&point]; point.x+=imageSize.width+INTERSPACE; } [fiveImage getSize:&imageSize]; for (i=0;i<fives;i++) { [fiveImage composite:NX_SOVER toPoint:&point]; point.x+=imageSize.width+INTERSPACE; } [soldierImage getSize:&imageSize]; for (i=0;i<ones;i++) { [soldierImage composite:NX_SOVER toPoint:&point]; point.x+=imageSize.width+INTERSPACE; } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.