This is RiskGameManager.h in view mode; [Download] [Up]
// // $Id: RiskGameManager.h,v 1.3 1997/12/15 21:09:39 nygard Exp $ // This file is a part of Risk by Mike Ferris. // #import <AppKit/AppKit.h> #import "Risk.h" #define MAX_PLAYERS 7 extern NSString *RGMGameOverNotification; @class RiskWorld, RiskPlayer, GameConfiguration, Country, RiskMapView, StatusView, ArmyView, CardPanelController; @class RiskCard, ArmyPlacementValidator, CardSet, DiceInspector, WorldInfoController, SNRandom; @interface RiskGameManager : NSObject { RiskWorld *world; GameConfiguration *configuration; IBOutlet RiskMapView *mapView; IBOutlet NSTextField *countryNameTextField; IBOutlet NSWindow *mapWindow; IBOutlet NSWindow *controlPanel; IBOutlet NSMenu *toolMenu; // Outlets to the control panel views: IBOutlet StatusView *statusView; // Control Panel, Phase box IBOutlet NSTextField *nameTextField; IBOutlet NSTextField *phaseTextField; IBOutlet NSTextField *infoTextField; IBOutlet NSColorWell *playerColorWell; // outlets for interchangeable views in right section of control panel IBOutlet NSView *phaseComputerMove; IBOutlet NSView *phasePlaceArmies; IBOutlet NSView *phaseAttack; IBOutlet NSView *phaseFortify; IBOutlet NSView *phaseChooseCountries; NSView *currentPhaseView; // Place Armies phase IBOutlet NSTextField *initialArmiesLeftTextField; IBOutlet NSTextField *armiesLeftToPlaceTextField; IBOutlet NSButton *turnInCardsButton; IBOutlet ArmyView *armyView; // Attack phase IBOutlet NSPopUpButton *attackMethodPopup; IBOutlet NSSlider *methodCountSlider; IBOutlet NSTextField *methodCountTextField; IBOutlet NSTextField *attackingFromTextField; // Game Establishment int activePlayerCount; RiskPlayer *players[MAX_PLAYERS]; BOOL playersActive[MAX_PLAYERS]; // Game state GameState gameState; Player currentPlayerNumber; // Place armies phase: int initialArmyCount; // Keep track of armies left for current player in this turn. int armiesLeftToPlace; ArmyPlacementValidator *armyPlacementValidator; BOOL playerHasConqueredCountry; // Card management IBOutlet CardPanelController *cardPanelController; IBOutlet NSWindow *cardPanelWindow; NSMutableArray *cardDeck; NSMutableArray *discardDeck; int nextCardSetValue; // For verifying that armies before fortification == armies after fortification int armiesBefore; DiceInspector *diceInspector; WorldInfoController *worldInfoController; SNRandom *rng; } + (void) initialize; - init; - (void) dealloc; - (void) awakeFromNib; - (void) _logGameState; - (void) showControlPanel:sender; - (void) showDiceInspector:sender; - (void) showWorldInfoPanel:sender; - (BOOL) validateMenuItem:(NSMenuItem *)menuCell; // Delegate of RiskMapView. - (void) mouseDown:(NSEvent *)theEvent inCountry:(Country *)aCountry; //====================================================================== // General access to world data //====================================================================== - (RiskWorld *) world; - (void) setWorld:(RiskWorld *)newWorld; - (GameConfiguration *) gameConfiguration; - (void) setGameConfiguration:(GameConfiguration *)newGameConfiguration; - (GameState) gameState; //====================================================================== // For status view. //====================================================================== - (BOOL) isPlayerActive:(Player)number; - (Player) currentPlayerNumber; - (int) activePlayerCount; - (RiskPlayer *) playerNumber:(Player)number; //====================================================================== // Player menu support //====================================================================== - (void) showPlayerConsole:sender; //====================================================================== // Establish Game //====================================================================== - (void) startNewGame; - (BOOL) addPlayer:(RiskPlayer *)aPlayer number:(Player)number; - (void) beginGame; - (void) tryToStart; - (void) stopGame; //====================================================================== // Game State //====================================================================== - (BOOL) gameInProgress; - (void) enteringChooseCountriesPhase; - (void) leavingChooseCountriesPhase; - (void) enteringInitialArmyPlacementPhase; - (void) leavingInitialArmyPlacementPhase; - (void) endTurn; - (void) executeCurrentPhase:sender; - (BOOL) nextActivePlayer; - (void) fortify:sender; - (void) endTurn:sender; - (void) moveAttackingArmies:(int)minimum between:(Country *)source:(Country *)destination; - (void) fortifyArmiesFrom:(Country *)source; - (void) forceCurrentPlayerToTurnInCards; - (void) resetMovableArmiesForPlayerNumber:(Player)number; //====================================================================== // Choose countries //====================================================================== - (BOOL) player:(RiskPlayer *)aPlayer choseCountry:(Country *)country; - (NSArray *) unoccupiedCountries; // Better in RiskWorld? - (void) randomlyChooseCountriesForActivePlayers; //====================================================================== // Place Armies and Move Attacking armies //====================================================================== - (BOOL) player:(RiskPlayer *)aPlayer placesArmies:(int)count inCountry:(Country *)country; //====================================================================== // Attacking //====================================================================== - (AttackResult) attackUntilUnableToContinueFromCountry:(Country *)attacker toCountry:(Country *)defender moveAllArmiesUponVictory:(BOOL)moveFlag; - (AttackResult) attackMultipleTimes:(int)count fromCountry:(Country *)attacker toCountry:(Country *)defender moveAllArmiesUponVictory:(BOOL)moveFlag; - (AttackResult) attackFromCountry:(Country *)attacker toCountry:(Country *)defender untilArmiesRemain:(int)count moveAllArmiesUponVictory:(BOOL)moveFlag; - (AttackResult) attackOnceFromCountry:(Country *)attacker toCountry:(Country *)defender moveAllArmiesUponVictory:(BOOL)moveFlag; //====================================================================== // Game Manager calculations //====================================================================== - (int) earnedArmyCountForPlayer:(Player)number; - (DiceRoll) rollDiceWithAttackerArmies:(int)attackerArmies defenderArmies:(int)defenderArmies; //====================================================================== // General player interaction //====================================================================== - (void) selectCountry:(Country *)aCountry; - (void) takeAttackMethodFromPlayerNumber:(Player)number; - (void) setAttackMethodForPlayerNumber:(Player)number; - (void) setAttackingFromCountryName:(NSString *)string; - (void) attackMethodAction:sender; - (void) setArmiesLeftToPlace:(int)count; //====================================================================== // Card management //====================================================================== - (void) _recycleDiscardedCards; - (void) dealCardToPlayerNumber:(Player)number; - (int) _valueOfNextCardSet:(int)currentValue; - (int) armiesForNextCardSet; - (void) turnInCardSet:(CardSet *)cardSet forPlayerNumber:(Player)number; - (void) automaticallyTurnInCardsForPlayerNumber:(Player)number; - (void) transferCardsFromPlayer:(RiskPlayer *)source toPlayer:(RiskPlayer *)destination; // For the currently active (interactive) player - (void) reviewCards:sender; - (void) turnInCards:sender; - (void) _loadCardPanel; //====================================================================== // Other //====================================================================== - (void) updatePhaseBox; - (int) totalTroopsForPlayerNumber:(Player)number; - (void) defaultsChanged:(NSNotification *)aNotification; //====================================================================== // End of game stuff: //====================================================================== - (BOOL) checkForEndOfPlayerNumber:(Player)number; - (void) playerHasLost:(Player)number; - (void) playerHasWon:(Player)number; - (void) deactivatePlayerNumber:(Player)number; @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.