1
0
mirror of https://github.com/Dejvino/roadtrip synced 2024-12-22 19:58:49 +00:00

Refactor: enabled vehicles again.

This commit is contained in:
Dejvino 2017-01-14 23:36:47 +01:00
parent a2af1e02bb
commit 3c104a3d38
5 changed files with 46 additions and 41 deletions

View File

@ -36,6 +36,7 @@ import com.jme3.terrain.geomipmap.TerrainQuad;
import roadtrip.model.VehicleInstance; import roadtrip.model.VehicleInstance;
import roadtrip.view.GameWorldView; import roadtrip.view.GameWorldView;
import roadtrip.view.VehicleNode; import roadtrip.view.VehicleNode;
import roadtrip.view.model.GameWorldState;
import roadtrip.view.model.Player; import roadtrip.view.model.Player;
/** /**
@ -53,6 +54,7 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
private BulletAppState bulletAppState; private BulletAppState bulletAppState;
private GameWorldState gameWorldState;
private GameWorldView gameWorldView; private GameWorldView gameWorldView;
private ChaseCamera chaseCam; private ChaseCamera chaseCam;
@ -88,7 +90,8 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
dl.setDirection(new Vector3f(1, -1, 1)); dl.setDirection(new Vector3f(1, -1, 1));
rootNode.addLight(dl); rootNode.addLight(dl);
gameWorldView = GameWorldView.create(assetManager, cam, rootNode); gameWorldState = new GameWorldState();
gameWorldView = GameWorldView.create(gameWorldState, assetManager, cam, rootNode);
gameWorldView.terrain.terrainGrid.addListener(new TerrainGridListener() { gameWorldView.terrain.terrainGrid.addListener(new TerrainGridListener() {
@Override @Override
@ -114,11 +117,11 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
}); });
/*addCar();
addCar(); addCar();
addCar(); addCar();
addCar(); addCar();
addCar();*/ addCar();
addCar();
addPerson(); addPerson();
addPerson(); addPerson();
addPerson(); addPerson();
@ -157,10 +160,10 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
inputManager.addListener(this, "Esc"); inputManager.addListener(this, "Esc");
} }
/*private void addCar() private void addCar()
{ {
Node vehicleModel = new Node("VehicleModel"); Node vehicleModel = new Node("VehicleModel");
VehicleInstance vehicleInstance = VehicleInstance.createVehicle(vehicles.size() % VehicleInstance.getVehicleTypesCount()); VehicleInstance vehicleInstance = VehicleInstance.createVehicle(gameWorldState.vehicles.size() % VehicleInstance.getVehicleTypesCount());
vehicleInstance.brakeForce = vehicleInstance.accelerationForce; vehicleInstance.brakeForce = vehicleInstance.accelerationForce;
Material mat = new Material(getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); Material mat = new Material(getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
@ -335,9 +338,9 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
getPhysicsSpace().add(vehicleControl); getPhysicsSpace().add(vehicleControl);
vehicleControl.setPhysicsLocation(new Vector3f(10f + (float)Math.random() * 40f, 28f, 12f + (float)Math.random() * 40f)); vehicleControl.setPhysicsLocation(new Vector3f(10f + (float)Math.random() * 40f, 28f, 12f + (float)Math.random() * 40f));
vehicles.add(vehicle); gameWorldState.vehicles.add(vehicle);
rootNode.attachChild(vehicle); rootNode.attachChild(vehicle);
}*/ }
private Node addPerson() { private Node addPerson() {
Spatial personModel = assetManager.loadModel("Models/person.j3o"); Spatial personModel = assetManager.loadModel("Models/person.j3o");
@ -427,10 +430,8 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
public void simpleUpdate(float tpf) { public void simpleUpdate(float tpf) {
Vector3f playerLocation = player.node.getWorldTranslation(); Vector3f playerLocation = player.node.getWorldTranslation();
Vector3f newLocation = new Vector3f(playerLocation).add(new Vector3f(-1f, 1.5f, 2.4f).mult(20f)); Vector3f newLocation = new Vector3f(playerLocation).add(new Vector3f(-1f, 1.5f, 2.4f).mult(20f));
/*cam.setLocation(new Vector3f(cam.getLocation()).interpolate(newLocation, Math.min(tpf, 1f)));
cam.lookAt(playerLocation, Vector3f.UNIT_Y);*/
/*for (VehicleNode vehicle : gameWorldState.vehicles) { for (VehicleNode vehicle : gameWorldState.vehicles) {
vehicle.vehicleInstance.accelerationSmooth = (vehicle.vehicleInstance.accelerationSmooth + vehicle.vehicleInstance.accelerationValue * (tpf * 10f)) / (1 + tpf * 10f); vehicle.vehicleInstance.accelerationSmooth = (vehicle.vehicleInstance.accelerationSmooth + vehicle.vehicleInstance.accelerationValue * (tpf * 10f)) / (1 + tpf * 10f);
vehicle.engineAudio.setVelocity(new Vector3f(0, 0, 0)); vehicle.engineAudio.setVelocity(new Vector3f(0, 0, 0));
vehicle.engineAudio.updateGeometricState(); vehicle.engineAudio.updateGeometricState();
@ -466,7 +467,7 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
// TODO: pitch // TODO: pitch
//wheelsAudio.setPitch(Math.max(0.5f, Math.min(wheelRot * 4f, 2.0f))); //wheelsAudio.setPitch(Math.max(0.5f, Math.min(wheelRot * 4f, 2.0f)));
vehicle.wheelSlipAudio.setVolume(Math.max(0.0001f, Math.min(wheelSlip, 1.0f)) - 0.0001f); vehicle.wheelSlipAudio.setVolume(Math.max(0.0001f, Math.min(wheelSlip, 1.0f)) - 0.0001f);
}*/ }
listener.setLocation(cam.getLocation()); listener.setLocation(cam.getLocation());
listener.setRotation(cam.getRotation()); listener.setRotation(cam.getRotation());
@ -527,7 +528,7 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
if (value) { if (value) {
System.out.println("Reset - to car"); System.out.println("Reset - to car");
Vector3f playerPos = player.node.getWorldTranslation(); Vector3f playerPos = player.node.getWorldTranslation();
/*for (VehicleNode vehicle : vehicles) { for (VehicleNode vehicle : gameWorldState.vehicles) {
Vector3f vehiclePos = vehicle.getWorldTranslation(); Vector3f vehiclePos = vehicle.getWorldTranslation();
float dist = playerPos.distance(vehiclePos); float dist = playerPos.distance(vehiclePos);
System.out.println(" .. dist: " + dist); System.out.println(" .. dist: " + dist);
@ -544,11 +545,11 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
player.walkDir = new Vector3f(); player.walkDir = new Vector3f();
break; break;
} }
}*/ }
} }
} }
} else { } else {
/*VehicleInstance playerVehicle = player.vehicleNode.vehicleInstance; VehicleInstance playerVehicle = player.vehicleNode.vehicleInstance;
VehicleControl playerVehicleControl = player.vehicleNode.vehicleControl; VehicleControl playerVehicleControl = player.vehicleNode.vehicleControl;
int playerCarType = playerVehicle.carType; int playerCarType = playerVehicle.carType;
float steerMax = 0.5f; float steerMax = 0.5f;
@ -617,7 +618,7 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
player.walkDir = new Vector3f(); player.walkDir = new Vector3f();
} else { } else {
} }
}*/ }
} }
if (binding.equals("Esc")) { if (binding.equals("Esc")) {
stop(); stop();

View File

@ -8,20 +8,20 @@ package roadtrip.model;
*/ */
public class VehicleInstance public class VehicleInstance
{ {
final static int WEAK = 1; public static final int WEAK = 1;
final static int TRUCK = 2; public static final int TRUCK = 2;
final static int SPORT = 3; public static final int SPORT = 3;
static int getVehicleTypesCount() { public static int getVehicleTypesCount() {
return SPORT; return SPORT;
} }
int carType; public int carType;
float accelerationForce = 200.0f; public float accelerationForce = 200.0f;
float brakeForce = 100.0f; public float brakeForce = 100.0f;
float steeringValue = 0; public float steeringValue = 0;
float accelerationValue = 0; public float accelerationValue = 0;
float accelerationSmooth = 0; public float accelerationSmooth = 0;
VehicleInstance(int carType, float accelerationForce, float brakeForce) VehicleInstance(int carType, float accelerationForce, float brakeForce)
{ {
@ -54,7 +54,7 @@ public class VehicleInstance
} }
} }
static VehicleInstance createVehicle(int i) { public static VehicleInstance createVehicle(int i) {
switch (i + 1) { switch (i + 1) {
case WEAK: return new WeakVehicle(); case WEAK: return new WeakVehicle();
case TRUCK: return new TruckVehicle(); case TRUCK: return new TruckVehicle();

View File

@ -27,7 +27,7 @@ import roadtrip.view.model.GameWorldState;
*/ */
public class GameWorldView { public class GameWorldView {
private GameWorldState state = new GameWorldState(); private GameWorldState state;
private AssetManager assetManager; private AssetManager assetManager;
private Camera camera; private Camera camera;
@ -35,11 +35,15 @@ public class GameWorldView {
public TerrainView terrain = new TerrainView(new TerrainDataProvider()); public TerrainView terrain = new TerrainView(new TerrainDataProvider());
public static GameWorldView create(AssetManager assetManager, Camera camera, Node rootNode) { public GameWorldView(GameWorldState gameWorldState, AssetManager assetManager, Camera camera, Node rootNode) {
GameWorldView gameWorldView = new GameWorldView(); this.state = gameWorldState;
gameWorldView.assetManager = assetManager; this.assetManager = assetManager;
gameWorldView.camera = camera; this.camera = camera;
gameWorldView.rootNode = rootNode; this.rootNode = rootNode;
}
public static GameWorldView create(GameWorldState gameWorldState, AssetManager assetManager, Camera camera, Node rootNode) {
GameWorldView gameWorldView = new GameWorldView(gameWorldState, assetManager, camera, rootNode);
gameWorldView.initialize(); gameWorldView.initialize();
return gameWorldView; return gameWorldView;
} }

View File

@ -14,15 +14,15 @@ import roadtrip.model.VehicleInstance;
*/ */
public class VehicleNode extends Node public class VehicleNode extends Node
{ {
VehicleInstance vehicleInstance; public VehicleInstance vehicleInstance;
VehicleControl vehicleControl; public VehicleControl vehicleControl;
Spatial vehicleModel; public Spatial vehicleModel;
AudioNode engineAudio; public AudioNode engineAudio;
AudioNode wheelsAudio; public AudioNode wheelsAudio;
AudioNode wheelSlipAudio; public AudioNode wheelSlipAudio;
public VehicleNode(String name, VehicleInstance vehicleInstance, public VehicleNode(String name, VehicleInstance vehicleInstance,
VehicleControl vehicleControl, Spatial vehicleModel) VehicleControl vehicleControl, Spatial vehicleModel)

View File

@ -9,5 +9,5 @@ import java.util.List;
* Created by dejvino on 14.01.2017. * Created by dejvino on 14.01.2017.
*/ */
public class GameWorldState { public class GameWorldState {
private List<VehicleNode> vehicles = new LinkedList<>(); public List<VehicleNode> vehicles = new LinkedList<>();
} }