This is WarReportController.m in view mode; [Download] [Up]
// // $Id: WarReportController.m,v 1.7 1997/10/31 04:52:12 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: WarReportController.m,v 1.7 1997/10/31 04:52:12 nygard Exp $"); #import "WarReportController.h" #import "EmpireImageVendor.h" #import "EmPlayer.h" #import "Unit.h" //====================================================================== // The War Report provides a summary of the number of units in combat, // lost by this player, destroyed by this player, under construction and // the number of turns before the soonest unit of each type is produced. // // It also shows the number of cities controlled by this player, the // total number of cities in the world, and the percent of the world // that has been explored. // // It's a modal panel, since it is shared among players and so that we // don't have to dynamically updated the statistics. //====================================================================== #define WarReportController_VERSION 1 @implementation WarReportController + (void) initialize { if (self == [WarReportController class]) { [self setVersion:WarReportController_VERSION]; } } //---------------------------------------------------------------------- - (void) awakeFromNib { [self setPlayer:p_neutral]; [[EmpireImageVendor instance] attach:self]; } //---------------------------------------------------------------------- - init { NSString *nibFile; BOOL loaded, okay; [super init]; lastPlayer = p_neutral; nibFile = @"WarReport.nib"; loaded = [NSBundle loadNibNamed:nibFile owner:self]; if (loaded == NO) { NSLog (@"Could not load %@.", nibFile); [super dealloc]; return nil; } okay = [warReportWindow setFrameAutosaveName:[warReportWindow title]]; if (okay == NO) NSLog (@"Could not set frame autosave name of War Report window."); return self; } //---------------------------------------------------------------------- - (void) dealloc { [[EmpireImageVendor instance] detach:self]; [super dealloc]; } //---------------------------------------------------------------------- - (void) warReportForPlayer:(EmPlayer *)player { WarStatistics stats; int l; [warReportWindow disableFlushWindow]; [self setPlayer:[player playerNumber]]; stats = [player warStatistics]; [cityCountText setIntValue:stats.city_count]; [cityTotalCountText setIntValue:stats.world_city_count]; [percentExploredText setStringValue:[NSString stringWithFormat:@"%d %%", stats.percent_explored]]; for (l = 1; l < UNIT_TYPE_COUNT; l++) { [[underConstructionMatrix cellAtRow:l - 1 column:0] setIntValue:stats.under_construction[l]]; if (stats.under_construction[l] > 0) [[soonestCompleteMatrix cellAtRow:l - 1 column:0] setIntValue:stats.soonest_complete[l]]; else [[soonestCompleteMatrix cellAtRow:l - 1 column:0] setStringValue:@"--"]; [[inCombatMatrix cellAtRow:l - 1 column:0] setIntValue:stats.in_combat[l]]; [[destroyedMatrix cellAtRow:l - 1 column:0] setIntValue:stats.destroyed_units[l]]; [[lostMatrix cellAtRow:l - 1 column:0] setIntValue:stats.lost_units[l]]; } [warReportWindow enableFlushWindow]; [warReportWindow makeKeyAndOrderFront:self]; [NSApp runModalForWindow:warReportWindow]; } //---------------------------------------------------------------------- - (void) vendorImagesUpdated:(BOOL)player1:(BOOL)player2:(BOOL)player3:(BOOL)other { [cityButton setNeedsDisplay:YES]; [unitImageMatrix setNeedsDisplay:YES]; } //---------------------------------------------------------------------- // Update the images if the player number has changed. //---------------------------------------------------------------------- - (void) setPlayer:(Player)playerNumber { if (lastPlayer != playerNumber) { EmpireImageVendor *vendor; int l; NSImage *city; NSImage **onLand; NSImage **onWater; NSImage **onCity; int loop_to_land[2] = {0, 2}; int loop_to_water[7] = {1, 3, 4, 5, 6, 8, 9}; lastPlayer = playerNumber; vendor = [EmpireImageVendor instance]; [vendor player:playerNumber:&city:&onLand:&onWater:&onCity:NULL]; [cityButton setImage:city]; for (l = 0; l < 2; l++) [[unitImageMatrix cellAtRow:l column:0] setImage:onLand[loop_to_land[l]]]; for (l = 0; l < 7; l++) [[unitImageMatrix cellAtRow:l+2 column:0] setImage:onWater[loop_to_water[l]]]; [cityButton setNeedsDisplay:YES]; [unitImageMatrix setNeedsDisplay:YES]; } } //---------------------------------------------------------------------- - (void) warReportStopAction:sender { [NSApp stopModal]; [warReportWindow orderOut:self]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.