//
// $Id: WorldMapController.m,v 1.9 1997/10/31 04:52:15 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: WorldMapController.m,v 1.9 1997/10/31 04:52:15 nygard Exp $");

#import "WorldMapController.h"

#import "EmpireImageVendor.h"
#import "EmPlayer.h"
#import "GameManager.h"
#import "Unit.h"
#import "WorldMapView.h"

static int panelCount = 0;

//======================================================================
// The WorldMapController loads the World Map window, and passes
// messages from the world map view along to the delegate.
//
// That may be a little redundant, and the setDelegate could just
// set the delegate of the WorldMapView...
//======================================================================

#define WorldMapController_VERSION 1

@implementation WorldMapController

+ (void) initialize
{
    if (self == [WorldMapController class])
    {
        [self setVersion:WorldMapController_VERSION];
    }
}

//----------------------------------------------------------------------

- (void) awakeFromNib
{
    NSString *imagePath;
    NSImage *image;

    imagePath = [[NSBundle mainBundle] pathForImageResource:@"mwi_world_map.tiff"];
    NSAssert (imagePath != nil, @"Couldn't find mwi_world_map.tiff");

    image = [[[NSImage alloc] initWithContentsOfFile:imagePath] autorelease];
    NSAssert (image != nil, @"Couldn't load mwi_world_map.tiff");

    [worldMapWindow setMiniwindowImage:image];
}

//----------------------------------------------------------------------

- init
{
    NSString *nibFile;
    BOOL loaded;
    NSRect frameRect;

    [super init];

    worldMapView = nil;

    nibFile = @"WorldMap.nib";
    loaded = [NSBundle loadNibNamed:nibFile owner:self];
    if (loaded == NO)
    {
        NSLog (@"Could not load %@.", nibFile);
        [super dealloc];
        return nil;
    }

    frameRect = [worldMapWindow frame];
    frameRect.origin.x += panelCount * 24;
    frameRect.origin.y -= panelCount * 24;
    [worldMapWindow setFrameOrigin:frameRect.origin];

    panelCount = (panelCount + 1) % 5;

    return self;
}

//----------------------------------------------------------------------

- (void) dealloc
{
    SNRelease (worldMapWindow);

    [super dealloc];
}

//----------------------------------------------------------------------

- (void) setMap:(Map *)aMap
{
    [worldMapView setMap:aMap];
}

//----------------------------------------------------------------------

- (void) setDelegate:newDelegate
{
    delegate = newDelegate;

    if (delegate == nil)
        [worldMapWindow setDelegate:self];
    else
        [worldMapWindow setDelegate:delegate];
}

//----------------------------------------------------------------------

- (void) setTitle:(NSString *)newTitle autosaveFrame:(BOOL)autosaveFlag
{
    BOOL okay;

    [worldMapWindow setTitle:newTitle];
    if (autosaveFlag == YES)
    {
        okay = [worldMapWindow setFrameAutosaveName:newTitle];
        if (okay == NO)
            NSLog (@"Could not set frame autosave name of World Map panel.");
    }
}

//----------------------------------------------------------------------

- (void) showPanel
{
    [worldMapWindow makeKeyAndOrderFront:self];
}

//======================================================================
// MapView Delegate
//======================================================================

- (void) mouseDown:(unsigned int)modifierFlags atLocation:(EMMapLocation)target
{
    if (delegate != nil)
        [delegate mouseDown:modifierFlags atLocation:target];
}

//----------------------------------------------------------------------

- (void) mouseUp:(unsigned int)modifierFlags atLocation:(EMMapLocation)target
{
    if (delegate != nil)
        [delegate mouseUp:modifierFlags atLocation:target];
}

//----------------------------------------------------------------------

- (void) rightMouseDown:(unsigned int)modifierFlags atLocation:(EMMapLocation)target
{
}

//----------------------------------------------------------------------

- (void) rightMouseUp:(unsigned int)modifierFlags atLocation:(EMMapLocation)target
{
}

//----------------------------------------------------------------------

- (void) keyDown:(NSEvent *)theEvent 
{
}

@end
