121 lines
2.6 KiB
Java
121 lines
2.6 KiB
Java
package WayofTime.alchemicalWizardry.common.demonVillage;
|
|
|
|
import net.minecraft.world.World;
|
|
import net.minecraftforge.common.util.ForgeDirection;
|
|
import WayofTime.alchemicalWizardry.common.Int3;
|
|
|
|
public class DemonBuilding
|
|
{
|
|
public static final int BUILDING_HOUSE = 0;
|
|
public static final int BUILDING_PORTAL = 1;
|
|
|
|
public BuildingSchematic schematic;
|
|
public GridSpaceHolder area;
|
|
public int buildingTier;
|
|
public int buildingType;
|
|
public Int3 doorGridSpace;
|
|
|
|
public DemonBuilding(BuildingSchematic schematic)
|
|
{
|
|
this.schematic = schematic;
|
|
this.buildingType = schematic.buildingType;
|
|
this.buildingTier = schematic.buildingTier;
|
|
this.area = this.createGSHForSchematic(schematic);
|
|
this.doorGridSpace = schematic.getGridSpotOfDoor();
|
|
}
|
|
|
|
public String getName()
|
|
{
|
|
return schematic.name;
|
|
}
|
|
|
|
public boolean isValid(GridSpaceHolder master, int gridX, int gridZ, ForgeDirection dir)
|
|
{
|
|
return area.doesContainAll(master, gridX, gridZ, dir);
|
|
}
|
|
|
|
public void buildAll(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir)
|
|
{
|
|
schematic.buildAll(world, xCoord, yCoord, zCoord, dir);
|
|
}
|
|
|
|
public void setAllGridSpaces(int xInit, int zInit, int yLevel, ForgeDirection dir, int type, GridSpaceHolder master)
|
|
{
|
|
area.setAllGridSpaces(xInit, zInit, yLevel, dir, type, master);
|
|
}
|
|
|
|
public GridSpaceHolder createGSHForSchematic(BuildingSchematic scheme)
|
|
{
|
|
switch(this.buildingType)
|
|
{
|
|
case DemonBuilding.BUILDING_HOUSE:
|
|
return scheme.createGSH();
|
|
case DemonBuilding.BUILDING_PORTAL:
|
|
|
|
}
|
|
return scheme.createGSH();
|
|
}
|
|
|
|
public Int3 getDoorSpace(ForgeDirection dir)
|
|
{
|
|
int x = 0;
|
|
int z = 0;
|
|
switch(dir)
|
|
{
|
|
case SOUTH:
|
|
x = -doorGridSpace.xCoord;
|
|
z = -doorGridSpace.zCoord;
|
|
break;
|
|
case WEST:
|
|
x = doorGridSpace.zCoord;
|
|
z = -doorGridSpace.xCoord;
|
|
break;
|
|
case EAST:
|
|
x = -doorGridSpace.zCoord;
|
|
z = doorGridSpace.xCoord;
|
|
break;
|
|
default:
|
|
x = doorGridSpace.xCoord;
|
|
z = doorGridSpace.zCoord;
|
|
break;
|
|
}
|
|
|
|
return new Int3(x, doorGridSpace.yCoord, z);
|
|
}
|
|
|
|
public Int3 getGridOffsetFromRoad(ForgeDirection sideOfRoad, int yLevel)
|
|
{
|
|
Int3 doorSpace = this.getDoorSpace(sideOfRoad);
|
|
int x = doorSpace.xCoord;
|
|
int z = doorSpace.zCoord;
|
|
|
|
switch(sideOfRoad)
|
|
{
|
|
case SOUTH:
|
|
z++;
|
|
break;
|
|
case EAST:
|
|
x++;
|
|
break;
|
|
case WEST:
|
|
x--;
|
|
break;
|
|
default:
|
|
z--;
|
|
break;
|
|
}
|
|
|
|
return new Int3(x, yLevel, z);
|
|
}
|
|
|
|
public void destroyAllInField(World world, int xCoord, int yCoord, int zCoord, ForgeDirection dir)
|
|
{
|
|
schematic.destroyAllInField(world, xCoord, yCoord, zCoord, dir);
|
|
}
|
|
|
|
public int getNumberOfGridSpaces()
|
|
{
|
|
return area.getNumberOfGridSpaces();
|
|
}
|
|
}
|