view of the back ground. Also the screen resolution and the shadowmap resolution are no longer hard coded everywhere. They are defined in mainThread.java.
1118 lines
50 KiB
Java
1118 lines
50 KiB
Java
package entity;
|
|
|
|
import java.awt.Rectangle;
|
|
|
|
import core.*;
|
|
import enemyAI.enemyCommander;
|
|
|
|
//the refinery plant model
|
|
public class refinery extends solidObject{
|
|
|
|
//the polygons of the model
|
|
private polygon3D[] polygons;
|
|
|
|
public polygon3D storageCoverLeft;
|
|
public polygon3D storageCoverRight;
|
|
public int unloadOreCountDown;
|
|
public final int unloadOreTime = 190;
|
|
|
|
public polygon3D[][] cargos;
|
|
|
|
public float cargoX_left;
|
|
public float cargoY_left;
|
|
|
|
public float cargoX_MaxRight;
|
|
|
|
public static int maxHP = 750;
|
|
|
|
public int countDownToDeath = 16;
|
|
|
|
public boolean isBusy;
|
|
|
|
public vector tempVector = new vector(0,0,0);
|
|
public vector tempVector0 = new vector(0,0,0);
|
|
public vector tempVector1 = new vector(0,0,0);
|
|
public vector tempVector2 = new vector(0,0,0);
|
|
public vector tempVector3 = new vector(0,0,0);
|
|
|
|
|
|
//refinery occupies 6 tiles
|
|
public int [] tileIndex = new int[6];
|
|
|
|
public int[] tempInt;
|
|
|
|
public float[] tempFloat;
|
|
|
|
public vector shadowvertex0, tempshadowvertex0,shadowvertex1, tempshadowvertex1,shadowvertex2, tempshadowvertex2,shadowvertex3, tempshadowvertex3;
|
|
|
|
//a screen space boundary which is used to test if the object is visible from camera point of view
|
|
public final static Rectangle visibleBoundary = new Rectangle(-85,-85,screen_width+152, screen_height+250);
|
|
|
|
//a screen space boundary which is used to test if the entire object is within the screen
|
|
public final static Rectangle screenBoundary = new Rectangle(60,60,screen_width-120, screen_height-110);
|
|
|
|
//screen space boundary which is used to test if the shadow of the object is within the screen
|
|
public final static Rectangle shadowBoundary1 = new Rectangle(30,70,screen_width-30, screen_height-30);
|
|
|
|
//a screen space boundary which is used to test if the vision polygon of the object is visible.
|
|
public final static Rectangle visionBoundary = new Rectangle(0,0,1600, 2000);
|
|
|
|
//a bitmap representation of the vision of the refinery for enemy commander
|
|
public static boolean[] bitmapVisionForEnemy;
|
|
|
|
//refinery never moves
|
|
public final static vector movenment = new vector(0,0,0);
|
|
|
|
public baseInfo theBaseInfo;
|
|
|
|
public static int intendedDeployLocation = -1;
|
|
|
|
public goldMine nearestGoldMine;
|
|
|
|
public refinery(float x, float y, float z, int teamNo){
|
|
//uncontrollable unit, but act as a big sized static collidable agent
|
|
type = 102;
|
|
|
|
currentHP = 750;
|
|
|
|
if(teamNo == 0){
|
|
isRevealed = true;
|
|
theBaseInfo = mainThread.pc.theBaseInfo;
|
|
}else{
|
|
theBaseInfo = mainThread.ec.theBaseInfo;
|
|
}
|
|
|
|
ID = globalUniqID++;
|
|
|
|
theBaseInfo.numberOfRefinery++;
|
|
|
|
this.teamNo = teamNo;
|
|
|
|
currentCommand = this.StandBy;
|
|
|
|
if(teamNo == 0){
|
|
isRevealed = true;
|
|
}
|
|
|
|
if(bitmapVisionForEnemy == null){
|
|
bitmapVisionForEnemy = createBitmapVision(8);
|
|
}
|
|
|
|
//create 2D boundary
|
|
boundary2D = new Rect((int)(x*64) - 24, (int)(z*64) + 16, 48, 32);
|
|
boundary2D.owner = this;
|
|
int centerX = (int)(x*64);
|
|
int centerY = (int)(z*64);
|
|
|
|
tileIndex[0] = (centerX - 16)/16 + (127 - (centerY + 8)/16)*128;
|
|
tileIndex[1] = (centerX + 16)/16 + (127 - (centerY + 8)/16)*128;
|
|
tileIndex[2] = (centerX + 16)/16 + (127 - (centerY - 8)/16)*128;
|
|
tileIndex[3] = (centerX - 16)/16 + (127 - (centerY - 8)/16)*128;
|
|
tileIndex[4] = (centerX)/16 + (127 - (centerY + 8)/16)*128;
|
|
tileIndex[5] = (centerX)/16 + (127 - (centerY - 8)/16)*128;
|
|
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][0] = this;
|
|
mainThread.gridMap.tiles[tileIndex[1]][0] = this;
|
|
mainThread.gridMap.tiles[tileIndex[2]][0] = this;
|
|
mainThread.gridMap.tiles[tileIndex[3]][0] = this;
|
|
mainThread.gridMap.tiles[tileIndex[4]][0] = this;
|
|
mainThread.gridMap.tiles[tileIndex[5]][0] = this;
|
|
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][1] = this;
|
|
mainThread.gridMap.tiles[tileIndex[1]][1] = this;
|
|
mainThread.gridMap.tiles[tileIndex[2]][1] = this;
|
|
mainThread.gridMap.tiles[tileIndex[3]][1] = this;
|
|
mainThread.gridMap.tiles[tileIndex[4]][1] = this;
|
|
mainThread.gridMap.tiles[tileIndex[5]][1] = this;
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][2] = this;
|
|
mainThread.gridMap.tiles[tileIndex[1]][2] = this;
|
|
mainThread.gridMap.tiles[tileIndex[2]][2] = this;
|
|
mainThread.gridMap.tiles[tileIndex[3]][2] = this;
|
|
mainThread.gridMap.tiles[tileIndex[4]][2] = this;
|
|
mainThread.gridMap.tiles[tileIndex[5]][2] = this;
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][3] = this;
|
|
mainThread.gridMap.tiles[tileIndex[1]][3] = this;
|
|
mainThread.gridMap.tiles[tileIndex[2]][3] = this;
|
|
mainThread.gridMap.tiles[tileIndex[3]][3] = this;
|
|
mainThread.gridMap.tiles[tileIndex[4]][3] = this;
|
|
mainThread.gridMap.tiles[tileIndex[5]][3] = this;
|
|
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][4] = this;
|
|
mainThread.gridMap.tiles[tileIndex[1]][4] = this;
|
|
mainThread.gridMap.tiles[tileIndex[2]][4] = this;
|
|
mainThread.gridMap.tiles[tileIndex[3]][4] = this;
|
|
mainThread.gridMap.tiles[tileIndex[4]][4] = this;
|
|
mainThread.gridMap.tiles[tileIndex[5]][4] = this;
|
|
|
|
int tileIndex6 = tileIndex[5] + 128;
|
|
int tileIndex7 = tileIndex[5] + 128 - 1;
|
|
int tileIndex8 = tileIndex[5] + 128 + 1;
|
|
mainThread.gridMap.tiles[tileIndex6][4] = this;
|
|
mainThread.gridMap.tiles[tileIndex7][4] = this;
|
|
mainThread.gridMap.tiles[tileIndex8][4] = this;
|
|
|
|
|
|
//init model
|
|
start = new vector(x,y,z);
|
|
iDirection = new vector(1f,0,0);
|
|
jDirection = new vector(0,1f,0);
|
|
kDirection = new vector(0,0,1f);
|
|
|
|
//define centre of the model in world coordinate
|
|
start = new vector(x,y,z);
|
|
centre = start.myClone();
|
|
tempCentre = start.myClone();
|
|
|
|
shadowvertex0 =start.myClone();
|
|
shadowvertex0.add(-0.45f,-0.2f, -0.4f);
|
|
tempshadowvertex0 = new vector(0,0,0);
|
|
|
|
shadowvertex1 =start.myClone();
|
|
shadowvertex1.add(-0.45f,-0.2f, 0.2f);
|
|
tempshadowvertex1 = new vector(0,0,0);
|
|
|
|
shadowvertex2 =start.myClone();
|
|
shadowvertex2.add(0.2f,-0.2f, -0.4f);
|
|
tempshadowvertex2 = new vector(0,0,0);
|
|
|
|
shadowvertex3 =start.myClone();
|
|
shadowvertex3.add(0.2f,-0.2f, 0.2f);
|
|
tempshadowvertex3 = new vector(0,0,0);
|
|
|
|
|
|
makePolygons();
|
|
|
|
}
|
|
|
|
//create polygons
|
|
public void makePolygons(){
|
|
polygons = new polygon3D[157 + 4 * 13];
|
|
|
|
int polyIndex;
|
|
|
|
cargos = new polygon3D[5][13];
|
|
float referenceX = -0.28f - 0.02f;
|
|
float referenceY = 0.34f - 0.012f;
|
|
|
|
|
|
|
|
for(int i = 0; i < cargos.length; i++){
|
|
|
|
v = new vector[]{put(referenceX, referenceY, 0.1), put(referenceX+0.07, referenceY, 0.1), put(referenceX+0.06, referenceY-0.05, 0.1), put(referenceX+0.01, referenceY-0.05, 0.1)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][0] = polygons[polyIndex];
|
|
|
|
if(i == 0){
|
|
cargoX_left = v[0].x;
|
|
cargoY_left = v[0].y;
|
|
|
|
cargoX_MaxRight = cargoX_left + 0.5f;
|
|
}
|
|
|
|
v = new vector[]{put(referenceX, referenceY, 0.175), put(referenceX+0.07, referenceY, 0.175), put(referenceX+0.06, referenceY-0.05, 0.175), put(referenceX+0.01, referenceY-0.05, 0.175)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][1] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX+0.01, referenceY-0.05, 0.18), put(referenceX+0.06, referenceY-0.05, 0.18), put(referenceX+0.07, referenceY, 0.18), put(referenceX, referenceY, 0.18)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][2] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX+0.01, referenceY-0.05, 0.105), put(referenceX+0.06, referenceY-0.05, 0.105), put(referenceX+0.07, referenceY, 0.105), put(referenceX, referenceY, 0.105)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][3] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX+0.07, referenceY, 0.1), put(referenceX+0.07, referenceY, 0.18), put(referenceX+0.06, referenceY-0.05, 0.18), put(referenceX+0.06, referenceY -0.05, 0.1)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][4] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX+0.055, referenceY-0.05, 0.1), put(referenceX+0.055, referenceY-0.05, 0.18), put(referenceX+0.065, referenceY, 0.18), put(referenceX+0.065, referenceY, 0.1)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][5] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX, referenceY, 0.18), put(referenceX, referenceY, 0.1), put(referenceX+0.01, referenceY-0.05, 0.1), put(referenceX+0.01, referenceY-0.05, 0.18)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][6] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX+0.015, referenceY- 0.05, 0.18), put(referenceX+0.015, referenceY-0.05, 0.1), put(referenceX+0.005, referenceY, 0.1), put(referenceX+0.005, referenceY, 0.18)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,1f,1));
|
|
cargos[i][7] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX, referenceY, 0.105), put(referenceX+0.07, referenceY, 0.105), put(referenceX+0.07, referenceY, 0.1), put(referenceX, referenceY, 0.1)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,0.2f,1));
|
|
cargos[i][8] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX, referenceY, 0.18), put(referenceX+0.07, referenceY, 0.18), put(referenceX+0.07, referenceY, 0.175), put(referenceX, referenceY, 0.175)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1,0.2f,1));
|
|
cargos[i][9] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX, referenceY, 0.18), put(referenceX+0.005, referenceY, 0.18), put(referenceX+0.005, referenceY, 0.1), put(referenceX, referenceY, 0.1)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.2f,1f,1));
|
|
cargos[i][10] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX+0.065, referenceY, 0.18), put(referenceX+0.07, referenceY, 0.18), put(referenceX+0.07, referenceY, 0.1), put(referenceX+0.065, referenceY, 0.1)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.2f,1f,1));
|
|
cargos[i][11] = polygons[polyIndex];
|
|
|
|
v = new vector[]{put(referenceX+0.01, referenceY-0.01, 0.18), put(referenceX + 0.07, referenceY-0.01, 0.18), put(referenceX + 0.07, referenceY-0.01, 0.1), put(referenceX+0.01, referenceY-0.01, 0.1)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[34], 0.8f,1f,1));
|
|
cargos[i][12] = polygons[polyIndex];
|
|
|
|
referenceX +=0.1f;
|
|
referenceY +=0.06f;
|
|
}
|
|
|
|
v = new vector[]{put(-0.38, 0.3, -0.2), put(0.38, 0.3, -0.2), put(0.38, 0.3, -0.225), put(0.345, 0.3, -0.26), put(-0.345, 0.3, -0.26), put(-0.38, 0.3, -0.225)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, put(-0.38, 0.3, 0.26), put(0.38, 0.3, 0.26), put(-0.38, 0.3, -0.26), mainThread.textures[30], 1,1,1));
|
|
polygons[polyIndex].shadowBias = 5000;
|
|
|
|
v = new vector[]{put(-0.38, 0.3, 0.225), put(-0.345, 0.3, 0.26), put(0.345, 0.3, 0.26), put(0.38, 0.3, 0.225), put(0.38, 0.3, 0.2), put(-0.38, 0.3, 0.2)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, put(-0.38, 0.3, 0.26), put(0.38, 0.3, 0.26), put(-0.38, 0.3, -0.26), mainThread.textures[30], 1,1,1));
|
|
polygons[polyIndex].shadowBias = 5000;
|
|
|
|
v = new vector[]{put(-0.14, 0.3, 0.225), put(0.38, 0.3, 0.225), put(0.38, 0.3, -0.225), put(-0.14, 0.3, -0.225) };
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, put(-0.38, 0.3, 0.26), put(0.38, 0.3, 0.26), put(-0.38, 0.3, -0.26), mainThread.textures[30], 1,1,1));
|
|
polygons[polyIndex].shadowBias = 5000;
|
|
|
|
v = new vector[]{put(-0.38, 0.3, 0.225), put(-0.33, 0.3, 0.225), put(-0.33, 0.3, -0.225), put(-0.38, 0.3, -0.225) };
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, put(-0.38, 0.3, 0.26), put(0.38, 0.3, 0.26), put(-0.38, 0.3, -0.26), mainThread.textures[30], 1,1,1));
|
|
polygons[polyIndex].shadowBias = 5000;
|
|
|
|
v = new vector[]{put(-0.345, 0.3, 0.225), put(-0.14, 0.3, 0.225), put(-0.14, 0.3, -0.03), put(-0.345, 0.3, -0.03) };
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, put(-0.38, 0.3, 0.26), put(0.38, 0.3, 0.26), put(-0.38, 0.3, -0.26), mainThread.textures[30], 1,1,1));
|
|
polygons[polyIndex].shadowBias = 5000;
|
|
|
|
|
|
v = new vector[]{put(-0.345, 0.3, -0.26), put(0.345, 0.3, -0.26), put(0.345, 0.28, -0.26), put(-0.345, 0.28, -0.26)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
v = new vector[]{put(-0.345, 0.28,0.26), put(0.345, 0.28, 0.26), put(0.345, 0.3, 0.26), put(-0.345, 0.3, 0.26)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
v = new vector[]{put(-0.38, 0.3, 0.225), put(-0.38, 0.3, -0.225), put(-0.38, 0.28, -0.225), put(-0.38, 0.28, 0.225)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
v = new vector[]{put(0.38, 0.28, 0.225), put(0.38, 0.28, -0.225), put(0.38, 0.3, -0.225), put(0.38, 0.3, 0.225)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
v = new vector[]{put(-0.345, 0.3, 0.26), put(-0.38, 0.3, 0.225), put(-0.38, 0.28, 0.225), put(-0.345, 0.28, 0.26)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
v = new vector[]{put(0.345, 0.28, 0.26), put(0.38, 0.28, 0.225), put(0.38, 0.3, 0.225), put(0.345, 0.3, 0.26)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
v = new vector[]{put(-0.345, 0.28, -0.26), put(-0.38, 0.28, -0.225), put(-0.38, 0.3, -0.225), put(-0.345, 0.3, -0.26)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
v = new vector[]{put(0.345, 0.3, -0.26), put(0.38, 0.3, -0.225), put(0.38, 0.28, -0.225), put(0.345, 0.28, -0.26)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[30], 1,1f,1));
|
|
|
|
texture stripeTExture = mainThread.textures[31];
|
|
if(teamNo == 1)
|
|
stripeTExture = mainThread.textures[32];
|
|
|
|
|
|
float h = 0.315f;
|
|
float h2 = 0.29f;
|
|
v = new vector[]{put(-0.34, h, -0.03), put(-0.13f, h, -0.03), put(-0.13, h, -0.05), put(-0.34, h, -0.05)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 4,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.34, h, -0.2), put(-0.13f, h, -0.2), put(-0.13, h, -0.22), put(-0.34, h, -0.22)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 4,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.13, h, -0.05), put(-0.13, h, -0.2), put(-0.15, h, -0.2), put(-0.15, h, -0.05)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 3,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.32, h, -0.05), put(-0.32, h, -0.2), put(-0.34, h, -0.2), put(-0.34, h, -0.05)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 3,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.34, h, -0.03), put(-0.34, h, -0.22), put(-0.34, h2, -0.22), put(-0.34, h2, -0.03)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34, h, -0.05), put(-0.34, h, -0.2), put(-0.34, h2, -0.05), stripeTExture, 3f,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.32, h2, -0.03), put(-0.32, h2, -0.22), put(-0.32, h, -0.22), put(-0.32, h, -0.03)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.32, h, -0.2), put(-0.32, h, -0.05), put(-0.32, h2, -0.25), stripeTExture, 3f,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.15, h, -0.03), put(-0.15, h, -0.22), put(-0.15, h2, -0.22), put(-0.15, h2, -0.03)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.15, h, -0.05), put(-0.15, h, -0.2), put(-0.15, h2, -0.05), stripeTExture, 3f,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.13, h2, -0.03), put(-0.13, h2, -0.22), put(-0.13, h, -0.22), put(-0.13, h, -0.03)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.13, h, -0.2), put(-0.13, h, -0.05), put(-0.13, h2, -0.2), stripeTExture, 3f,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.34, h, -0.05), put(-0.13, h, -0.05), put(-0.13, h2, -0.05), put(-0.34, h2, -0.05)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 4,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.34, h, -0.22), put(-0.13, h, -0.22), put(-0.13, h2, -0.22), put(-0.34, h2, -0.22)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 4,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.34, h2, -0.03), put(-0.13, h2, -0.03), put(-0.13, h, -0.03), put(-0.34, h, -0.03)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 4,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.34, h2, -0.2), put(-0.13, h2, -0.2), put(-0.13, h, -0.2), put(-0.34, h, -0.2)};
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), stripeTExture, 4,0.5f,1));
|
|
|
|
|
|
v = new vector[]{put(-0.32, 0.3, -0.05), put(-0.235, 0.3, -0.05), put(-0.235, 0.3, -0.2), put(-0.32, 0.3, -0.2)};
|
|
storageCoverLeft = new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[33], 4,4,1);
|
|
storageCoverLeft.shadowBias = 5000;
|
|
addPolygon(polygons, storageCoverLeft);
|
|
|
|
|
|
v = new vector[]{put(-0.235, 0.3, -0.05), put(-0.15, 0.3, -0.05), put(-0.15, 0.3, -0.2), put(-0.235, 0.3, -0.2)};
|
|
storageCoverRight = new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[33], 4,4f,1);
|
|
storageCoverRight.shadowBias = 5000;
|
|
addPolygon(polygons, storageCoverRight);
|
|
|
|
v = new vector[]{put(-0.34, 0.27, -0.01), put(-0.13, 0.27, -0.01), put(-0.13, 0.27, -0.24), put(-0.34, 0.27, -0.24)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[34], 1,1f,3));
|
|
|
|
v = new vector[]{put(-0.34,0.3,0.08), put(-0.34,0.3,0.2), put(-0.2,0.4,0.2), put(-0.2,0.4,0.08)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.34,0.3,0.08), put(-0.2,0.4,0.08), put(-0.2,0.3,0.08)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.08), put(-0.2,0.4,0.08), put(-0.34,0.3,0.08), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.2,0.3,0.2), put(-0.2,0.4,0.2), put(-0.34,0.3,0.2)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.2), put(-0.2,0.4,0.2), put(-0.34,0.3,0.2), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.34,0.3,0.19), put(-0.2,0.4,0.19), put(-0.2,0.3,0.19)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.19), put(-0.2,0.4,0.19), put(-0.34,0.3,0.19), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.2,0.3,0.09), put(-0.2,0.4,0.09), put(-0.34,0.3,0.09)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.09), put(-0.2,0.4,0.09), put(-0.34,0.3,0.09), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.2,0.4,0.08), put(-0.2,0.4,0.09), put(-0.2,0.3,0.09), put(-0.2,0.3,0.08)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.2,0.4,0.19), put(-0.2,0.4,0.2), put(-0.2,0.3,0.2), put(-0.2,0.3,0.19)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,0.5f,1));
|
|
|
|
v = new vector[]{put(-0.2,0.4,0.08), put(-0.2,0.4,0.2), put(-0.2,0.39,0.2), put(-0.2,0.39,0.08)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.5f,0.1f,1));
|
|
|
|
v = new vector[]{put(-0.22, 0.35, 0.09), put(0.23, 0.6, 0.09), put(0.23, 0.58, 0.09), put(-0.22, 0.33, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.09), put(-0.2,0.4,0.09), put(-0.34,0.3,0.09), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.22, 0.33, 0.1), put(0.23, 0.58, 0.1), put(0.23, 0.6, 0.1), put(-0.22, 0.35, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.1), put(-0.2,0.4,0.1), put(-0.34,0.3,0.1), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.22, 0.35, 0.09), put(-0.22, 0.35, 0.1), put(0.23, 0.6, 0.1), put(0.23, 0.6, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.22, 0.35, 0.18), put(0.23, 0.6, 0.18), put(0.23, 0.58, 0.18), put(-0.22, 0.33, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.18), put(-0.2,0.4,0.18), put(-0.34,0.3,0.18), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.22, 0.33, 0.19), put(0.23, 0.58, 0.19), put(0.23, 0.6, 0.19), put(-0.22, 0.35, 0.19)};
|
|
addPolygon(polygons, new polygon3D(v, put(-0.34,0.4,0.19), put(-0.2,0.4,0.19), put(-0.34,0.3,0.19), mainThread.textures[35], 0.5f,0.3f,1));
|
|
|
|
v = new vector[]{put(-0.22, 0.35, 0.18), put(-0.22, 0.35, 0.19), put(0.23, 0.6, 0.19), put(0.23, 0.6, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.65, 0.05), put(0.35, 0.75, 0.05), put(0.35, 0.3, 0.05), put(0.16, 0.3, 0.05)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), put(0.35, 0.65, 0.05), v[3].myClone(), mainThread.textures[36], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.3, 0.23), put(0.35, 0.3, 0.23), put(0.35, 0.75, 0.23), put(0.16, 0.65, 0.23)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), put(0.35, 0.65, 0.23), v[3].myClone(), mainThread.textures[36], 1f,2f,1));
|
|
|
|
v = new vector[]{put(0.35, 0.75, 0.05), put(0.35, 0.75, 0.23), put(0.35, 0.3, 0.23), put(0.35, 0.3, 0.05)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), put(0.35, 0.65, 0.23), v[3].myClone(), mainThread.textures[36], 1f,2f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.5, 0.23), put(0.16, 0.5, 0.05), put(0.16, 0.3, 0.05), put(0.16, 0.3, 0.23)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.5, 0.05), put(0.16, 0.5, 0.23), put(0.34, 0.6, 0.23), put(0.34, 0.6, 0.05)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.65, 0.23), put(0.16, 0.65, 0.05), put(0.16, 0.6, 0.05), put(0.16, 0.6, 0.23)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 1f,0.5f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.6, 0.23), put(0.16, 0.6, 0.19), put(0.16, 0.5, 0.19), put(0.16, 0.5, 0.23)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,0.5f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.6, 0.09), put(0.16, 0.6, 0.05), put(0.16, 0.5, 0.05), put(0.16, 0.5, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,0.5f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.65, 0.19), put(0.35, 0.75, 0.19), put(0.35, 0.3, 0.19), put(0.16, 0.3, 0.19)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), put(0.35, 0.65, 0.19), v[3].myClone(), mainThread.textures[36], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.16, 0.3, 0.09), put(0.35, 0.3, 0.09), put(0.35, 0.75, 0.09), put(0.16, 0.65, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), put(0.35, 0.65, 0.09), v[3].myClone(), mainThread.textures[36], 1f,2f,1));
|
|
|
|
v = new vector[]{put(0.15, 0.66, 0.24), put(0.36, 0.76, 0.24), put(0.36, 0.76, 0.04), put(0.15, 0.66, 0.04)};
|
|
addPolygon(polygons, new polygon3D(v, v[1].myClone(), v[2].myClone(), v[0].myClone(), mainThread.textures[37], 1f,2f,1));
|
|
|
|
v = new vector[]{put(0.15, 0.66, 0.04), put(0.36, 0.76, 0.04), put(0.36, 0.75, 0.04), put(0.15, 0.65, 0.04)};
|
|
addPolygon(polygons, new polygon3D(v, v[1].myClone(), v[2].myClone(), v[0].myClone(), mainThread.textures[37], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.15, 0.65, 0.24), put(0.36, 0.75, 0.24), put(0.36, 0.76, 0.24), put(0.15, 0.66, 0.24)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.36, 0.76, 0.04), put(0.36, 0.76, 0.24), put(0.36, 0.75, 0.24), put(0.36, 0.75, 0.04)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.15, 0.66, 0.24), put(0.15, 0.66, 0.04), put(0.15, 0.65, 0.04), put(0.15, 0.65, 0.24)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.18, 0.58, 0.05), put(0.33, 0.58, 0.05), put(0.33, 0.5, -0.15), put(0.18, 0.5, -0.15)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 0.8f,1f,1));
|
|
|
|
v = new vector[]{put(0.18, 0.5, -0.15), put(0.33, 0.5, -0.15), put(0.33, 0.49, -0.15), put(0.18, 0.49, -0.15)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.33, 0.5, -0.15), put(0.33, 0.58, 0.05), put(0.33, 0.57, 0.05), put(0.33, 0.49, -0.15)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.18, 0.49, -0.15), put(0.18, 0.57, 0.05), put(0.18, 0.58, 0.05), put(0.18, 0.5, -0.15)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 1f,1f,1));
|
|
|
|
v = new vector[]{put(0.19, 0.5, -0.14), put(0.32, 0.5, -0.14), put(0.32, 0.43, -0.14), put(0.19, 0.43, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[37], 1f,0.5f,1));
|
|
|
|
v = new vector[]{put(0.32, 0.5, -0.14), put(0.32, 0.58, 0.05), put(0.32, 0.43, 0.05), put(0.32, 0.43, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), put(0.32, 0.5, 0.05), v[3].myClone(), mainThread.textures[36], 1f,0.5f,1));
|
|
|
|
v = new vector[]{put(0.19, 0.43, -0.14), put(0.19, 0.43, 0.05), put(0.19, 0.58, 0.05), put(0.19, 0.5, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), put(0.19, 0.5, 0.05), v[3].myClone(), mainThread.textures[36], 1f,0.5f,1));
|
|
|
|
|
|
v = new vector[]{put(0.3, 0.43, -0.14), put(0.32, 0.43, -0.14), put(0.32, 0.3, -0.14), put(0.3, 0.3, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
v = new vector[]{put(0.3, 0.3, -0.12), put(0.32, 0.3, -0.12), put(0.32, 0.43, -0.12) ,put(0.3, 0.43, -0.12)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
v = new vector[]{put(0.32, 0.43, -0.14), put(0.32, 0.43, -0.12), put(0.32, 0.3, -0.12), put(0.32, 0.3, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
v = new vector[]{put(0.3, 0.3, -0.14), put(0.3, 0.3, -0.12), put(0.3, 0.43, -0.12), put(0.3, 0.43, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
|
|
v = new vector[]{put(0.19, 0.43, -0.14), put(0.21, 0.43, -0.14), put(0.21, 0.3, -0.14), put(0.19, 0.3, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
v = new vector[]{put(0.19, 0.3, -0.12), put(0.21, 0.3, -0.12), put(0.21, 0.43, -0.12) ,put(0.19, 0.43, -0.12)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
v = new vector[]{put(0.21, 0.43, -0.14), put(0.21, 0.43, -0.12), put(0.21, 0.3, -0.12), put(0.21, 0.3, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
v = new vector[]{put(0.19, 0.3, -0.14), put(0.19, 0.3, -0.12), put(0.19, 0.43, -0.12), put(0.19, 0.43, -0.14)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[36], 0.2f,1f,1));
|
|
|
|
|
|
|
|
|
|
start.add(0.27f,0.5f,0.14f);
|
|
double r = 0.028;
|
|
|
|
double delta = Math.PI/8;
|
|
for(int i = 0; i < 16; i++){
|
|
v = new vector[]{put(r*Math.cos(i*delta), 0.42, r*Math.sin(i*delta)),
|
|
put(r*Math.cos((i+1)*delta), 0.42, r*Math.sin((i+1)*delta)),
|
|
put(r*Math.cos((i+1)*delta), 0.2, r*Math.sin((i+1)*delta)),
|
|
put(r*Math.cos(i*delta), 0.2, r*Math.sin(i*delta))
|
|
};
|
|
|
|
tempVector.set(v[1]);
|
|
tempVector.subtract(v[0]);
|
|
tempVector0.set(v[0]);
|
|
tempVector1.set(v[1]);
|
|
tempVector3.set(v[3]);
|
|
tempVector1.add(tempVector);
|
|
|
|
int p = i % 2;
|
|
for(int j = 0; j < p; j++){
|
|
tempVector0.subtract(tempVector);
|
|
tempVector1.subtract(tempVector);
|
|
tempVector3.subtract(tempVector);
|
|
}
|
|
|
|
change(0,0.42f,0, tempVector);
|
|
polyIndex = addPolygon(polygons, new polygon3D(v, tempVector0.myClone(),tempVector1.myClone(), tempVector3.myClone(), mainThread.textures[40], 1f,2f,1));
|
|
polygons[polyIndex].textureScaledWidth = (int)(polygons[polyIndex].myTexture.width*0.5);
|
|
polygons[polyIndex].createShadeSpan(tempVector, v[0].myClone(), v[1]);
|
|
|
|
}
|
|
|
|
double r2 = 0.028;
|
|
r = 0.02;
|
|
for(int i = 0; i < 16; i++){
|
|
v = new vector[]{
|
|
put(r*Math.cos(i*delta), 0.42, r*Math.sin(i*delta)),
|
|
put(r*Math.cos((i+1)*delta), 0.42, r*Math.sin((i+1)*delta)),
|
|
put(r2*Math.cos((i+1)*delta), 0.42, r2*Math.sin((i+1)*delta)),
|
|
put(r2*Math.cos(i*delta), 0.42, r2*Math.sin(i*delta))
|
|
};
|
|
|
|
|
|
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[40], 1f,1f,1));
|
|
}
|
|
|
|
r = 0.02;
|
|
r2 = 0.02;
|
|
for(int i = 0; i < 16; i++){
|
|
v = new vector[]{
|
|
put(r*Math.cos(i*delta), 0.2, r*Math.sin(i*delta)),
|
|
put(r*Math.cos((i+1)*delta), 0.2, r*Math.sin((i+1)*delta)),
|
|
put(r2*Math.cos((i+1)*delta), 0.42, r2*Math.sin((i+1)*delta)),
|
|
put(r2*Math.cos(i*delta), 0.42, r2*Math.sin(i*delta))
|
|
|
|
|
|
};
|
|
|
|
tempVector.set(v[1]);
|
|
tempVector.subtract(v[0]);
|
|
tempVector0.set(v[0]);
|
|
tempVector1.set(v[1]);
|
|
tempVector3.set(v[3]);
|
|
tempVector1.add(tempVector);
|
|
|
|
int p = i % 2;
|
|
for(int j = 0; j < p; j++){
|
|
tempVector0.subtract(tempVector);
|
|
tempVector1.subtract(tempVector);
|
|
tempVector3.subtract(tempVector);
|
|
}
|
|
|
|
addPolygon(polygons, new polygon3D(v, tempVector0.myClone(),tempVector1.myClone(), tempVector3.myClone(), mainThread.textures[40], 0.5f,1,1));
|
|
}
|
|
|
|
start.add(-0.27f,-0.5f,-0.14f);
|
|
|
|
|
|
v = new vector[]{put(-0.095, 0.42, 0.09), put(-0.08, 0.42, 0.09), put(-0.08, 0.3, 0.09), put(-0.095, 0.3, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.1), put(-0.08, 0.3, 0.1), put(-0.08, 0.42, 0.1), put(-0.095, 0.42, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.08, 0.42, 0.09), put(-0.08, 0.42, 0.1), put(-0.08, 0.3, 0.1), put(-0.08, 0.3, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.09), put(-0.095, 0.3, 0.1), put(-0.095, 0.42, 0.1), put(-0.095, 0.42, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.42, 0.18), put(-0.08, 0.42, 0.18), put(-0.08, 0.3, 0.18), put(-0.095, 0.3, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.19), put(-0.08, 0.3, 0.19), put(-0.08, 0.42, 0.19), put(-0.095, 0.42, 0.19)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.08, 0.42, 0.18), put(-0.08, 0.42, 0.19), put(-0.08, 0.3, 0.19), put(-0.08, 0.3, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.18), put(-0.095, 0.3, 0.19), put(-0.095, 0.42, 0.19), put(-0.095, 0.42, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
start.add(0,-0.01f,0);
|
|
v = new vector[]{put(-0.08, 0.365, 0.1), put(-0.08, 0.365, 0.18), put(-0.08, 0.35, 0.18), put(-0.08, 0.35, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.35, 0.1), put(-0.095, 0.35, 0.18), put(-0.095, 0.365, 0.18), put(-0.095, 0.365, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.365, 0.1), put(-0.095, 0.365, 0.18), put(-0.08, 0.365, 0.18), put(-0.08, 0.365, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
|
|
v = new vector[]{put(-0.08, 0.35, 0.1), put(-0.08, 0.35, 0.18), put(-0.095, 0.35, 0.18), put(-0.095, 0.35, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
start.add(0,0.01f,0);
|
|
|
|
start.add(0.13f,0,0);
|
|
v = new vector[]{put(-0.095, 0.48, 0.09), put(-0.08, 0.48, 0.09), put(-0.08, 0.3, 0.09), put(-0.095, 0.3, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.1), put(-0.08, 0.3, 0.1), put(-0.08, 0.48, 0.1), put(-0.095, 0.48, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.08, 0.48, 0.09), put(-0.08, 0.48, 0.1), put(-0.08, 0.3, 0.1), put(-0.08, 0.3, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.09), put(-0.095, 0.3, 0.1), put(-0.095, 0.48, 0.1), put(-0.095, 0.48, 0.09)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.48, 0.18), put(-0.08, 0.48, 0.18), put(-0.08, 0.3, 0.18), put(-0.095, 0.3, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.19), put(-0.08, 0.3, 0.19), put(-0.08, 0.48, 0.19), put(-0.095, 0.48, 0.19)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.08, 0.48, 0.18), put(-0.08, 0.48, 0.19), put(-0.08, 0.3, 0.19), put(-0.08, 0.3, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.3, 0.18), put(-0.095, 0.3, 0.19), put(-0.095, 0.48, 0.19), put(-0.095, 0.48, 0.18)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 0.1f,1f,1));
|
|
|
|
start.add(0, 0.05f,0);
|
|
|
|
v = new vector[]{put(-0.08, 0.365, 0.1), put(-0.08, 0.365, 0.18), put(-0.08, 0.35, 0.18), put(-0.08, 0.35, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.35, 0.1), put(-0.095, 0.35, 0.18), put(-0.095, 0.365, 0.18), put(-0.095, 0.365, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
|
|
v = new vector[]{put(-0.095, 0.365, 0.1), put(-0.095, 0.365, 0.18), put(-0.08, 0.365, 0.18), put(-0.08, 0.365, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
|
|
v = new vector[]{put(-0.08, 0.35, 0.1), put(-0.08, 0.35, 0.18), put(-0.095, 0.35, 0.18), put(-0.095, 0.35, 0.1)};
|
|
addPolygon(polygons, new polygon3D(v, v[0].myClone(), v[1].myClone(), v[3].myClone(), mainThread.textures[35], 1f,0.1f,1));
|
|
|
|
start.add(-0.13f,-0.05f,0);
|
|
|
|
for(int i = 0; i < polygons.length; i++){
|
|
polygons[i].findDiffuse();
|
|
polygons[i].parentObject = this;
|
|
|
|
}
|
|
|
|
theAssetManager = mainThread.theAssetManager;
|
|
double distance = 10;
|
|
for(int i = 0; i < mainThread.theAssetManager.goldMines.length; i++){
|
|
if(mainThread.theAssetManager.goldMines[i] == null)
|
|
continue;
|
|
|
|
double newDistance = getDistance(mainThread.theAssetManager.goldMines[i]);
|
|
if(newDistance < distance && mainThread.theAssetManager.goldMines[i].goldDeposite > 1){
|
|
distance = newDistance;
|
|
nearestGoldMine = theAssetManager.goldMines[i];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public int addPolygon(polygon3D[] polys, polygon3D poly){
|
|
for(int i = 0; i < polys.length; i++){
|
|
if(polys[i] == null){
|
|
polys[i] = poly;
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
//update the model
|
|
public void update(){
|
|
//process emerging from ground animation
|
|
if(centre.y < -0.79f){
|
|
centre.y+=0.02f;
|
|
|
|
float delta_h = 0.02f;
|
|
if(centre.y > -0.79f){
|
|
delta_h = 0.0000007f;
|
|
centre.y = -0.79f;
|
|
}
|
|
|
|
cargoY_left+=delta_h;
|
|
|
|
for(int i = 0; i < polygons.length; i++){
|
|
polygons[i].origin.y+=delta_h;
|
|
polygons[i].rightEnd.y+=delta_h;
|
|
polygons[i].bottomEnd.y+=delta_h;
|
|
|
|
for(int j = 0; j < polygons[i].vertex3D.length; j++){
|
|
polygons[i].vertex3D[j].y+=delta_h;
|
|
}
|
|
|
|
|
|
}
|
|
shadowvertex0.y+=delta_h;
|
|
shadowvertex1.y+=delta_h;
|
|
shadowvertex2.y+=delta_h;
|
|
shadowvertex3.y+=delta_h;
|
|
|
|
|
|
//the building is invulnerable during emerging stage
|
|
currentHP = maxHP;
|
|
}
|
|
|
|
if(underAttackCountDown > 0)
|
|
underAttackCountDown--;
|
|
|
|
//check if power plant has been destroyed
|
|
if(currentHP <= 0){
|
|
countDownToDeath--;
|
|
|
|
if(countDownToDeath == 0){
|
|
//spawn an explosion when the object is destroyed
|
|
float[] tempFloat = theAssetManager.explosionInfo[theAssetManager.explosionCount];
|
|
tempFloat[0] = centre.x;
|
|
tempFloat[1] = centre.y + 0.45f;
|
|
tempFloat[2] = centre.z;
|
|
tempFloat[3] = 3.5f;
|
|
tempFloat[4] = 1;
|
|
tempFloat[5] = 0;
|
|
tempFloat[6] = 7;
|
|
tempFloat[7] = this.height;
|
|
theAssetManager.explosionCount++;
|
|
theAssetManager.removeObject(this);
|
|
|
|
|
|
//removeFromGridMap();
|
|
mainThread.gridMap.tiles[tileIndex[0]][0] = null;
|
|
mainThread.gridMap.tiles[tileIndex[1]][0] = null;
|
|
mainThread.gridMap.tiles[tileIndex[2]][0] = null;
|
|
mainThread.gridMap.tiles[tileIndex[3]][0] = null;
|
|
mainThread.gridMap.tiles[tileIndex[4]][0] = null;
|
|
mainThread.gridMap.tiles[tileIndex[5]][0] = null;
|
|
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][1] = null;
|
|
mainThread.gridMap.tiles[tileIndex[1]][1] = null;
|
|
mainThread.gridMap.tiles[tileIndex[2]][1] = null;
|
|
mainThread.gridMap.tiles[tileIndex[3]][1] = null;
|
|
mainThread.gridMap.tiles[tileIndex[4]][1] = null;
|
|
mainThread.gridMap.tiles[tileIndex[5]][1] = null;
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][2] = null;
|
|
mainThread.gridMap.tiles[tileIndex[1]][2] = null;
|
|
mainThread.gridMap.tiles[tileIndex[2]][2] = null;
|
|
mainThread.gridMap.tiles[tileIndex[3]][2] = null;
|
|
mainThread.gridMap.tiles[tileIndex[4]][2] = null;
|
|
mainThread.gridMap.tiles[tileIndex[5]][2] = null;
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][3] = null;
|
|
mainThread.gridMap.tiles[tileIndex[1]][3] = null;
|
|
mainThread.gridMap.tiles[tileIndex[2]][3] = null;
|
|
mainThread.gridMap.tiles[tileIndex[3]][3] = null;
|
|
mainThread.gridMap.tiles[tileIndex[4]][3] = null;
|
|
mainThread.gridMap.tiles[tileIndex[5]][3] = null;
|
|
|
|
|
|
mainThread.gridMap.tiles[tileIndex[0]][4] = null;
|
|
mainThread.gridMap.tiles[tileIndex[1]][4] = null;
|
|
mainThread.gridMap.tiles[tileIndex[2]][4] = null;
|
|
mainThread.gridMap.tiles[tileIndex[3]][4] = null;
|
|
mainThread.gridMap.tiles[tileIndex[4]][4] = null;
|
|
mainThread.gridMap.tiles[tileIndex[5]][4] = null;
|
|
|
|
int tileIndex6 = tileIndex[5] + 128;
|
|
int tileIndex7 = tileIndex[5] + 128 - 1;
|
|
int tileIndex8 = tileIndex[5] + 128 + 1;
|
|
mainThread.gridMap.tiles[tileIndex6][4] = null;
|
|
mainThread.gridMap.tiles[tileIndex7][4] = null;
|
|
mainThread.gridMap.tiles[tileIndex8][4] = null;
|
|
|
|
if(teamNo == 0)
|
|
mainThread.pc.theBaseInfo.numberOfRefinery--;
|
|
else
|
|
mainThread.ec.theBaseInfo.numberOfRefinery--;
|
|
|
|
if(attacker.teamNo != teamNo)
|
|
attacker.experience+=35;
|
|
|
|
return;
|
|
}else{
|
|
|
|
float[] tempFloat = theAssetManager.explosionInfo[theAssetManager.explosionCount];
|
|
tempFloat[0] = centre.x + (float)Math.random()*0.6f - 0.3f;
|
|
tempFloat[1] = centre.y + 0.45f;
|
|
tempFloat[2] = centre.z + (float)Math.random()/2.5f - 0.2f;
|
|
tempFloat[3] = 1.5f;
|
|
tempFloat[4] = 1;
|
|
tempFloat[5] = 0;
|
|
tempFloat[6] = 6 + (gameData.getRandom()%4);
|
|
tempFloat[7] = this.height;
|
|
theAssetManager.explosionCount++;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
if(isRepairing && currentHP >0){
|
|
if(mainThread.gameFrame%8==0 && theBaseInfo.currentCredit > 0 && currentHP <maxHP){
|
|
currentHP+=2;
|
|
theBaseInfo.currentCredit--;
|
|
if(currentHP > maxHP)
|
|
currentHP = maxHP;
|
|
}
|
|
}
|
|
|
|
//mark itself on obstacle map
|
|
mainThread.gridMap.currentObstacleMap[tileIndex[0]] = false;
|
|
mainThread.gridMap.currentObstacleMap[tileIndex[1]] = false;
|
|
mainThread.gridMap.currentObstacleMap[tileIndex[2]] = false;
|
|
mainThread.gridMap.currentObstacleMap[tileIndex[3]] = false;
|
|
mainThread.gridMap.currentObstacleMap[tileIndex[4]] = false;
|
|
mainThread.gridMap.currentObstacleMap[tileIndex[5]] = false;
|
|
|
|
|
|
//update center in camera coordinate
|
|
tempCentre.set(centre);
|
|
tempCentre.subtract(camera.position);
|
|
tempCentre.rotate_XZ(camera.XZ_angle);
|
|
tempCentre.rotate_YZ(camera.YZ_angle);
|
|
tempCentre.updateLocation();
|
|
|
|
|
|
|
|
//test if the object is visible in camera point of view
|
|
if(visibleBoundary.contains(tempCentre.screenX, tempCentre.screenY) && isRevealed){
|
|
visible = true;
|
|
|
|
if(screenBoundary.contains(tempCentre.screenX, tempCentre.screenY))
|
|
withinViewScreen = true;
|
|
else
|
|
withinViewScreen = false;
|
|
|
|
tempshadowvertex0.set(shadowvertex0);
|
|
tempshadowvertex0.subtract(camera.position);
|
|
tempshadowvertex0.rotate_XZ(camera.XZ_angle);
|
|
tempshadowvertex0.rotate_YZ(camera.YZ_angle);
|
|
tempshadowvertex0.updateLocation();
|
|
|
|
tempshadowvertex1.set(shadowvertex1);
|
|
tempshadowvertex1.subtract(camera.position);
|
|
tempshadowvertex1.rotate_XZ(camera.XZ_angle);
|
|
tempshadowvertex1.rotate_YZ(camera.YZ_angle);
|
|
tempshadowvertex1.updateLocation();
|
|
|
|
tempshadowvertex2.set(shadowvertex2);
|
|
tempshadowvertex2.subtract(camera.position);
|
|
tempshadowvertex2.rotate_XZ(camera.XZ_angle);
|
|
tempshadowvertex2.rotate_YZ(camera.YZ_angle);
|
|
tempshadowvertex2.updateLocation();
|
|
|
|
tempshadowvertex3.set(shadowvertex3);
|
|
tempshadowvertex3.subtract(camera.position);
|
|
tempshadowvertex3.rotate_XZ(camera.XZ_angle);
|
|
tempshadowvertex3.rotate_YZ(camera.YZ_angle);
|
|
tempshadowvertex3.updateLocation();
|
|
|
|
|
|
|
|
//if the object is visible then draw it on the shadow buffer from light point of view
|
|
if(shadowBoundary1.contains(tempshadowvertex0.screenX, tempshadowvertex0.screenY) ||
|
|
shadowBoundary1.contains(tempshadowvertex1.screenX, tempshadowvertex1.screenY) ||
|
|
shadowBoundary1.contains(tempshadowvertex2.screenX, tempshadowvertex2.screenY) ||
|
|
shadowBoundary1.contains(tempshadowvertex3.screenX, tempshadowvertex3.screenY)
|
|
){
|
|
for(int i = 0; i < polygons.length; i++){
|
|
polygons[i].update_lightspace();
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//add this object to visible unit list
|
|
theAssetManager.visibleUnit[theAssetManager.visibleUnitCount] = this;
|
|
theAssetManager.visibleUnitCount++;
|
|
|
|
|
|
}else{
|
|
visible = false;
|
|
}
|
|
|
|
|
|
//create vision for enemy commander
|
|
if(teamNo == 1){
|
|
int xPos = boundary2D.x1/16 - 8 + 10 + 1;
|
|
int yPos = 127 - boundary2D.y1/16 - 8 + 10;
|
|
|
|
for(int y = 0; y < 17; y++){
|
|
for(int x = 0; x < 17; x++){
|
|
if(bitmapVisionForEnemy[x+ y*17])
|
|
enemyCommander.tempBitmap[xPos + x + (yPos+y)*148] =true;
|
|
}
|
|
}
|
|
}
|
|
|
|
visionBoundary.x = (int)(tempCentre.screenX - 800);
|
|
visionBoundary.y = (int)(tempCentre.screenY - 1000);
|
|
visionInsideScreen = camera.screen.intersects(visionBoundary);
|
|
|
|
|
|
if(visionInsideScreen){
|
|
if(teamNo == 0){
|
|
tempFloat = theAssetManager.visionPolygonInfo[theAssetManager.visionPolygonCount];
|
|
tempFloat[0] = teamNo;
|
|
tempFloat[1] = centre.x;
|
|
tempFloat[2] = -0.4f;
|
|
tempFloat[3] = centre.z;
|
|
tempFloat[4] = 2;
|
|
theAssetManager.visionPolygonCount++;
|
|
}
|
|
}
|
|
|
|
if(theAssetManager.minimapBitmap[tileIndex[0]] ||
|
|
theAssetManager.minimapBitmap[tileIndex[1]] ||
|
|
theAssetManager.minimapBitmap[tileIndex[2]] ||
|
|
theAssetManager.minimapBitmap[tileIndex[3]] ||
|
|
theAssetManager.minimapBitmap[tileIndex[4]] ||
|
|
theAssetManager.minimapBitmap[tileIndex[5]])
|
|
isRevealed = true;
|
|
|
|
visible_minimap = isRevealed;
|
|
|
|
if(visible_minimap){
|
|
tempInt = theAssetManager.unitsForMiniMap[theAssetManager.unitsForMiniMapCount];
|
|
tempInt[0] = teamNo;
|
|
tempInt[1] = boundary2D.x1/16;
|
|
tempInt[2] = 127 - boundary2D.y1/16;
|
|
tempInt[3] = 2;
|
|
if(teamNo == 0 && underAttackCountDown > 0)
|
|
tempInt[4] = 10001;
|
|
else
|
|
tempInt[4] = 10000;
|
|
theAssetManager.unitsForMiniMapCount++;
|
|
|
|
|
|
//spawn smoke particle
|
|
if((mainThread.gameFrame + ID) % 5 ==0 && centre.y >= -0.79f){
|
|
float[] tempFloat = theAssetManager.smokeEmmiterList[theAssetManager.smokeEmmiterCount];
|
|
tempFloat[0] = centre.x + 0.265f + (float)(Math.random()/40) - 0.0125f;
|
|
tempFloat[1] = centre.y + 0.4f + 0.5f;
|
|
tempFloat[2] = centre.z + 0.14f + (float)(Math.random()/40) - 0.0125f;
|
|
tempFloat[3] = 0.9f;
|
|
tempFloat[4] = 1;
|
|
tempFloat[5] = 11;
|
|
tempFloat[6] = this.height;
|
|
theAssetManager.smokeEmmiterCount++;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//handle cargo unloading
|
|
if(unloadOreCountDown > 0){
|
|
|
|
float doorSpeed = 0.0034f;
|
|
//open cargo door
|
|
if(unloadOreCountDown <= (unloadOreTime -1) && unloadOreCountDown > (unloadOreTime - 25)){
|
|
storageCoverLeft.vertex3D[1].x -= doorSpeed;
|
|
storageCoverLeft.vertex3D[2].x -= doorSpeed;
|
|
storageCoverRight.vertex3D[0].x+=doorSpeed;
|
|
storageCoverRight.vertex3D[3].x+=doorSpeed;
|
|
|
|
}
|
|
|
|
if(unloadOreCountDown <= 24){
|
|
storageCoverLeft.vertex3D[1].x += doorSpeed;
|
|
storageCoverLeft.vertex3D[2].x += doorSpeed;
|
|
storageCoverRight.vertex3D[0].x-=doorSpeed;
|
|
storageCoverRight.vertex3D[3].x-=doorSpeed;
|
|
|
|
}
|
|
|
|
unloadOreCountDown--;
|
|
}
|
|
|
|
//running cargo thread
|
|
if(centre.y >= -0.79f){
|
|
for(int i = 0; i <cargos.length; i++){
|
|
|
|
float cargoX = 0;
|
|
float cargoY = 0;
|
|
|
|
for(int j = 0; j < cargos[i].length; j++){
|
|
vector[] cargoVertex = cargos[i][j].vertex3D;
|
|
for(int k = 0; k < cargoVertex.length; k++){
|
|
cargoVertex[k].x+=0.002f;
|
|
cargoVertex[k].y+=0.0012f;
|
|
}
|
|
|
|
cargos[i][j].origin.x+=0.002f;
|
|
cargos[i][j].origin.y+=0.0012f;
|
|
|
|
cargos[i][j].rightEnd.x+=0.002f;
|
|
cargos[i][j].rightEnd.y+=0.0012f;
|
|
|
|
cargos[i][j].bottomEnd.x+=0.002f;
|
|
cargos[i][j].bottomEnd.y+=0.0012f;
|
|
|
|
}
|
|
|
|
cargoX = cargos[i][0].vertex3D[0].x;
|
|
cargoY = cargos[i][0].vertex3D[0].y;
|
|
|
|
if(cargoX > cargoX_MaxRight){
|
|
float dx = cargoX_left - cargoX;
|
|
float dy = cargoY_left - cargoY;
|
|
for(int j = 0; j < cargos[i].length; j++){
|
|
vector[] cargoVertex = cargos[i][j].vertex3D;
|
|
for(int k = 0; k < cargoVertex.length; k++){
|
|
cargoVertex[k].x+=dx;
|
|
cargoVertex[k].y+=dy;
|
|
}
|
|
|
|
cargos[i][j].origin.x+=dx;
|
|
cargos[i][j].origin.y+=dy;
|
|
|
|
cargos[i][j].rightEnd.x+=dx;
|
|
cargos[i][j].rightEnd.y+=dy;
|
|
|
|
cargos[i][j].bottomEnd.x+=dx;
|
|
cargos[i][j].bottomEnd.y+=dy;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public boolean droppingAreaIsFull(solidObject harvester){
|
|
int tileIndex1 = tileIndex[5] + 128;
|
|
int tileIndex2 = tileIndex[5] + 127;
|
|
int tileIndex3 = tileIndex[5] + 129;
|
|
|
|
boolean tile1Occpied = false;
|
|
boolean tile2Occpied = false;
|
|
boolean tile3Occpied = false;
|
|
|
|
for(int i = 0; i < 4; i++){
|
|
if(mainThread.gridMap.tiles[tileIndex1][i] != null && mainThread.gridMap.tiles[tileIndex1][i] != harvester && !(mainThread.gridMap.tiles[tileIndex1][i].isCloaked && mainThread.gridMap.tiles[tileIndex1][i].teamNo != teamNo))
|
|
tile1Occpied = true;
|
|
if(mainThread.gridMap.tiles[tileIndex2][i] != null && mainThread.gridMap.tiles[tileIndex2][i] != harvester && !(mainThread.gridMap.tiles[tileIndex2][i].isCloaked && mainThread.gridMap.tiles[tileIndex2][i].teamNo != teamNo))
|
|
tile2Occpied = true;
|
|
if(mainThread.gridMap.tiles[tileIndex3][i] != null && mainThread.gridMap.tiles[tileIndex3][i] != harvester && !(mainThread.gridMap.tiles[tileIndex3][i].isCloaked && mainThread.gridMap.tiles[tileIndex3][i].teamNo != teamNo))
|
|
tile3Occpied = true;
|
|
}
|
|
|
|
return tile1Occpied || tile2Occpied || tile3Occpied;
|
|
}
|
|
|
|
public boolean hasExit(){
|
|
int tileIndex2 = tileIndex[5] + 127;
|
|
int tileIndex3 = tileIndex[5] + 129;
|
|
|
|
boolean tile2Occpied = false;
|
|
boolean tile3Occpied = false;
|
|
|
|
for(int i = 0; i < 4; i++){
|
|
if(mainThread.gridMap.tiles[tileIndex2][i] != null)
|
|
tile2Occpied = true;
|
|
if(mainThread.gridMap.tiles[tileIndex3][i] != null)
|
|
tile3Occpied = true;
|
|
}
|
|
|
|
|
|
return !(tile2Occpied && tile3Occpied);
|
|
}
|
|
|
|
//draw the model
|
|
public void draw(){
|
|
if(!visible)
|
|
return;
|
|
for(int i = 0; i < polygons.length; i++){
|
|
|
|
polygons[i].update();
|
|
}
|
|
|
|
for(int i = 0; i < polygons.length; i++){
|
|
polygons[i].draw();
|
|
}
|
|
}
|
|
|
|
public vector getMovement(){
|
|
return movenment;
|
|
}
|
|
|
|
|
|
}
|