// DiceInspector.m
// Part of Risk by Mike Ferris

#import "DiceInspector.h"
#import "LanguageApp.h"
#import <appkit/Button.h>
#import <appkit/Panel.h>
#import <appkit/TextField.h>
#import <appkit/publicWraps.h>

@implementation DiceInspector

+ initialize
{
	if (self == [DiceInspector class])  {
		[self setVersion:1];
	}
	return self;
}

- init
{
	[super init];
	[NXApp loadNibSection:"DiceInspector.nib" owner:self withNames:NO];
	[attackerButton1 setImage:nil];
	[attackerButton2 setImage:nil];
	[attackerButton3 setImage:nil];
	[defenderButton1 setImage:nil];
	[defenderButton2 setImage:nil];
	[dicePanel setBecomeKeyOnlyIfNeeded:YES];
	[dicePanel orderFront:self];
	return self;
}

- free
{
	return [super free];
}

- showPanel
{
	[dicePanel orderFront:self];
	return self;
}

- (BOOL)panelOnScreen
{
	return [dicePanel isVisible];
}

- setButton:button fromInt:(int)val
{
	switch (val)  {
		case 1:
			[button setIcon:"Die1"];
			break;
		case 2:
			[button setIcon:"Die2"];
			break;
		case 3:
			[button setIcon:"Die3"];
			break;
		case 4:
			[button setIcon:"Die4"];
			break;
		case 5:
			[button setIcon:"Die5"];
			break;
		case 6:
			[button setIcon:"Die6"];
			break;
		default:
			[button setImage:nil];
			break;
	}
	return self;
}

- setFromCountry:(const char *)fc toCountry:(const char *)tc
			fromArmies:(int)fa toArmies:(int)ta attackerRolling:(int)ar
			attackerUsing:(int)au attackerDie1:(int)ad1 attackerDie2:(int)ad2
			attackerDie3:(int)ad3 defenderRolling:(int)dr defenderUsing:(int)du
			attackerDie1:(int)dd1 attackerDie2:(int)dd2
{
	[fromCountryField setStringValue:fc];
	[toCountryField setStringValue:tc];
	[fromArmiesField setIntValue:fa];
	[toArmiesField setIntValue:ta];
	[attackerRollingField setIntValue:ar];
	[attackerUsingField setIntValue:au];
	[self setButton:attackerButton1 fromInt:((ar > 0)?ad1:-1)];
	[self setButton:attackerButton2 fromInt:((ar > 1)?ad2:-1)];
	[self setButton:attackerButton3 fromInt:((ar > 2)?ad3:-1)];
	[defenderRollingField setIntValue:dr];
	[defenderUsingField setIntValue:du];
	[self setButton:defenderButton1 fromInt:((dr > 0)?dd1:-1)];
	[self setButton:defenderButton2 fromInt:((dr > 1)?dd2:-1)];

	if ([pauseCheckBox state] == 1)  {
		[self waitForContinue];
	}
	return self;
}

- waitForContinue
{
	int retVal;
	
	NXBeep();
	[dicePanel orderFront:self];
	retVal = [NXApp runModalFor:dicePanel];
	return self;
}

- continueAction:sender
{
	[NXApp stopModal];
	return self;
}

- pauseCheckAction:sender
{
	[NXApp stopModal];
	if ([sender state] == 1)  {
		[continueButton setEnabled:YES];
	}  else  {
		[continueButton setEnabled:NO];
	}
	return self;
}

@end
