(Obstacle obstacle, Player players[], int numPlayers, int currentTurn, boolean inverted)
| 171 | } |
| 172 | |
| 173 | public void processFunctionRange(Obstacle obstacle, Player players[], int numPlayers, int currentTurn, boolean inverted) |
| 174 | { |
| 175 | playersHit = new int[numPlayers*Constants.MAX_SOLDIERS_PER_PLAYER]; |
| 176 | soldiersHit = new int[numPlayers*Constants.MAX_SOLDIERS_PER_PLAYER]; |
| 177 | soldierHitPosition = new int[numPlayers*Constants.MAX_SOLDIERS_PER_PLAYER]; |
| 178 | numPlayersHit = 0; |
| 179 | |
| 180 | valuesX = new double[Constants.FUNC_MAX_STEPS]; |
| 181 | valuesY = new double[Constants.FUNC_MAX_STEPS]; |
| 182 | |
| 183 | Soldier currentTurnSoldier = players[currentTurn].getCurrentTurnSoldier(); |
| 184 | |
| 185 | valuesX[0] = currentTurnSoldier.getX(); |
| 186 | valuesY[0] = currentTurnSoldier.getY(); |
| 187 | |
| 188 | if(inverted) |
| 189 | { |
| 190 | valuesX[0] = Constants.PLANE_LENGTH - valuesX[0]; |
| 191 | } |
| 192 | |
| 193 | valuesX[0] = (Constants.PLANE_GAME_LENGTH*(valuesX[0] - Constants.PLANE_LENGTH/2))/Constants.PLANE_LENGTH; |
| 194 | valuesY[0] = (Constants.PLANE_GAME_LENGTH*(-valuesY[0] + Constants.PLANE_HEIGHT/2))/Constants.PLANE_LENGTH; |
| 195 | |
| 196 | double gameCoordinateRadius = ((double)(Constants.PLANE_GAME_LENGTH*Constants.SOLDIER_RADIUS))/Constants.PLANE_LENGTH; |
| 197 | |
| 198 | fireAngle = getStartAngle(valuesX[0], gameCoordinateRadius); |
| 199 | |
| 200 | if(Double.isNaN(fireAngle)==false && Double.isInfinite(fireAngle)==false ) |
| 201 | { |
| 202 | valuesX[0] = valuesX[0] + gameCoordinateRadius*Math.cos(fireAngle); |
| 203 | valuesY[0] = valuesY[0] + gameCoordinateRadius*Math.sin(fireAngle); |
| 204 | } |
| 205 | |
| 206 | offSet = -polishFunc.evaluateFunction(valuesX[0],0,0) + valuesY[0]; |
| 207 | |
| 208 | double stepSize = Constants.STEP_SIZE; |
| 209 | double tempStepSize = Constants.STEP_SIZE; |
| 210 | |
| 211 | numSteps = Constants.FUNC_MAX_STEPS; |
| 212 | for(int i=1; i<Constants.FUNC_MAX_STEPS; i++) |
| 213 | { |
| 214 | tempStepSize = stepSize; |
| 215 | |
| 216 | valuesX[i] = valuesX[i-1] + tempStepSize; |
| 217 | valuesY[i] = polishFunc.evaluateFunction(valuesX[i],0,0)+offSet; |
| 218 | |
| 219 | boolean endFunc = false; |
| 220 | |
| 221 | for(int j=0; Math.pow(valuesX[i]-valuesX[i-1], 2)+Math.pow(valuesY[i]-valuesY[i-1], 2) > Constants.FUNC_MAX_STEP_DISTANCE_SQUARED;j++) |
| 222 | { |
| 223 | if(valuesX[i]-valuesX[i-1]>Constants.FUNC_MIN_X_STEP_DISTANCE) |
| 224 | { |
| 225 | tempStepSize = tempStepSize/2; |
| 226 | |
| 227 | valuesX[i] = valuesX[i-1] + tempStepSize; |
| 228 | valuesY[i] = polishFunc.evaluateFunction(valuesX[i],0,0)+offSet; |
| 229 | } |
| 230 | else |
no test coverage detected