git-svn-id: https://micropolis.googlecode.com/svn/trunk/micropolis-java@627 d9718cc8-9f43-0410-858b-315f434eb58c
106 lines
2 KiB
Java
106 lines
2 KiB
Java
// This file is part of MicropolisJ.
|
|
// Copyright (C) 2013 Jason Long
|
|
// Portions Copyright (C) 1989-2007 Electronic Arts Inc.
|
|
//
|
|
// MicropolisJ is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU GPLv3, with additional terms.
|
|
// See the README file, included in this distribution, for details.
|
|
|
|
package micropolisj.engine;
|
|
|
|
import static micropolisj.engine.TileConstants.*;
|
|
|
|
/**
|
|
* Enumerates the various tools that can be applied to the map by the user.
|
|
* Call the tool's apply() method to actually use the tool on the map.
|
|
*/
|
|
public enum MicropolisTool
|
|
{
|
|
BULLDOZER,
|
|
WIRE,
|
|
ROADS,
|
|
RAIL,
|
|
RESIDENTIAL,
|
|
COMMERCIAL,
|
|
INDUSTRIAL,
|
|
FIRE,
|
|
POLICE,
|
|
STADIUM,
|
|
PARK,
|
|
SEAPORT,
|
|
POWERPLANT,
|
|
NUCLEAR,
|
|
AIRPORT,
|
|
QUERY;
|
|
|
|
public int getWidth()
|
|
{
|
|
switch(this)
|
|
{
|
|
case RESIDENTIAL:
|
|
case COMMERCIAL:
|
|
case INDUSTRIAL:
|
|
case FIRE:
|
|
case POLICE:
|
|
return 3;
|
|
|
|
case STADIUM:
|
|
case SEAPORT:
|
|
case POWERPLANT:
|
|
case NUCLEAR:
|
|
return 4;
|
|
|
|
case AIRPORT:
|
|
return 6;
|
|
|
|
default:
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
public int getHeight()
|
|
{
|
|
return getWidth();
|
|
}
|
|
|
|
public ToolStroke beginStroke(Micropolis engine, int xpos, int ypos)
|
|
{
|
|
if (this == BULLDOZER) {
|
|
return new Bulldozer(engine, xpos, ypos);
|
|
}
|
|
else {
|
|
return new ToolStroke(engine, this, xpos, ypos);
|
|
}
|
|
}
|
|
|
|
public ToolResult apply(Micropolis engine, int xpos, int ypos)
|
|
{
|
|
return beginStroke(engine, xpos, ypos).apply();
|
|
}
|
|
|
|
public int getToolCost()
|
|
{
|
|
switch (this)
|
|
{
|
|
case BULLDOZER: return 1;
|
|
case WIRE: return 5; //25 for underwater
|
|
case ROADS: return 10; //50 for over water
|
|
case RAIL: return 20; //100 for underwater
|
|
case RESIDENTIAL: return 100;
|
|
case COMMERCIAL: return 100;
|
|
case INDUSTRIAL: return 100;
|
|
case FIRE: return 500;
|
|
case POLICE: return 500;
|
|
case STADIUM: return 5000;
|
|
case PARK: return 10;
|
|
case SEAPORT: return 3000;
|
|
case POWERPLANT: return 3000;
|
|
case NUCLEAR: return 5000;
|
|
case AIRPORT: return 10000;
|
|
case QUERY: return 0;
|
|
default:
|
|
assert false;
|
|
return 1;
|
|
}
|
|
}
|
|
}
|