package com.planet_ink.coffee_mud.Libraries.layouts;
import java.util.*;
import java.text.*;
import com.planet_ink.coffee_mud.Libraries.interfaces.AreaGenerationLibrary.*;
import com.planet_ink.coffee_mud.core.Directions;
public class LayoutTester
{
public static void draw(LayoutManager layout, int size, int dir)
{
Vector<LayoutNode> V=layout.generate(size, dir);
System.out.println("Layout "+layout.name()+", size="+V.size()+": "+continuityCheck(V));
long lowestX=Long.MAX_VALUE;
long lowestY=Long.MAX_VALUE;
long highestX=Long.MIN_VALUE;
long highestY=Long.MIN_VALUE;
Hashtable<Long,Vector<LayoutNode>> HY = new Hashtable<Long,Vector<LayoutNode>>();
for(LayoutNode ls : V)
{
if(ls.coord()[0]<lowestX) lowestX = ls.coord()[0];
if(ls.coord()[1]<lowestY) lowestY = ls.coord()[1];
if(ls.coord()[0]>highestX) highestX = ls.coord()[0];
if(ls.coord()[1]>highestY) highestY = ls.coord()[1];
if(!HY.containsKey(Long.valueOf(ls.coord()[1])))
HY.put(Long.valueOf(ls.coord()[1]), new Vector<LayoutNode>());
HY.get(Long.valueOf(ls.coord()[1])).add(ls);
}
for(long y=lowestY;y<=highestY;y++)
{
Vector<LayoutNode> ys = HY.get(Long.valueOf(y));
if(ys != null)
{
Hashtable<Long,LayoutNode> H = new Hashtable<Long,LayoutNode>();
for(LayoutNode xs : ys) H.put(Long.valueOf(xs.coord()[0]),xs);
for(int i=0;i<3;i++)
{
for(long x=lowestX;x<=highestX;x++)
if(H.containsKey(Long.valueOf(x)))
System.out.print(H.get(Long.valueOf(x)).getColorRepresentation(i));
else
System.out.print(" ");
System.out.println("");
}
}
}
}
public static boolean continuityCheck(Vector<LayoutNode> set)
{
for(int s=0;s<set.size();s++)
{
LayoutNode node = set.elementAt(s);
for(Enumeration<LayoutNode> e=node.links().elements();e.hasMoreElements();)
if(!set.contains(e.nextElement()))
return false;
}
return true;
}
public static void main(String[] args)
{
Directions.instance();
int d=Directions.NORTH;
{
draw(new BoxCityLayout(),25, d);
draw(new BoxCityLayout(), 50, d);
draw(new BoxCityLayout(), 100, d);
draw(new BoxCitySquareLayout(), 25, d);
draw(new BoxCitySquareLayout(), 50, d);
draw(new BoxCitySquareLayout(), 100, d);
draw(new CrossLayout(), 25, d);
draw(new CrossLayout(), 50, d);
draw(new CrossLayout(), 100, d);
draw(new GridCityLayout(), 25, d);
draw(new GridCityLayout(), 50, d);
draw(new GridCityLayout(), 100, d);
draw(new MazeLayout(), 25, d);
draw(new MazeLayout(), 50, d);
draw(new MazeLayout(), 100, d);
draw(new TreeLayout(), 25, d);
draw(new TreeLayout(), 50, d);
draw(new TreeLayout(), 100, d);
}
}
}