From a94434778b28a086263f4e33b0c3f6a6bae7763e Mon Sep 17 00:00:00 2001
From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com>
Date: Wed, 23 Jun 2021 21:08:13 +0530
Subject: [PATCH] endgameshit and shadows
---
src/DifBuilder.hx | 1 +
src/DtsObject.hx | 8 +++++---
src/Marble.hx | 1 +
src/MarbleGame.hx | 8 ++++++--
src/MarbleWorld.hx | 19 ++++++++++++++++++-
src/Sky.hx | 2 +-
src/gui/EndGameGui.hx | 18 ++++++++++++++----
7 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/src/DifBuilder.hx b/src/DifBuilder.hx
index acca5338..77dd852a 100644
--- a/src/DifBuilder.hx
+++ b/src/DifBuilder.hx
@@ -306,6 +306,7 @@ class DifBuilder {
material = Material.create();
}
material.shadows = false;
+ material.receiveShadows = true;
// material.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1));
// material.mainPass.wireframe = true;
diff --git a/src/DtsObject.hx b/src/DtsObject.hx
index 7ed262ac..554d4671 100644
--- a/src/DtsObject.hx
+++ b/src/DtsObject.hx
@@ -347,6 +347,7 @@ class DtsObject extends GameObject {
// }
// TODO TRANSLUENCY SHIT
}
+ material.shadows = false;
if (material.texture == null) {
var dtsshader = new DtsTexture();
dtsshader.currentOpacity = 1;
@@ -357,6 +358,7 @@ class DtsObject extends GameObject {
texture.uploadBitmap(bitmap);
dtsshader.texture = texture;
material.mainPass.addShader(dtsshader);
+ material.receiveShadows = true;
}
if (flags & 4 > 0) {
material.blendMode = BlendMode.Alpha;
@@ -369,11 +371,13 @@ class DtsObject extends GameObject {
// material.mainPass.setPassName("overlay");
// material.textureShader.additive = true;
}
- if (flags & 16 > 0)
+ if (flags & 16 > 0) {
material.blendMode = BlendMode.Sub;
+ }
if (flags & 32 > 0) {
material.mainPass.enableLights = false;
+ // material.receiveShadows = false;
// material.mainPass.setPassName("overlay");
// var pbrprops = material.mainPass.getShader(h3d.shader.pbr.PropsValues);
// pbrprops.emissiveValue = 1;
@@ -387,8 +391,6 @@ class DtsObject extends GameObject {
// }
// ((flags & 32) || environmentMaterial) ? new Materia
- material.shadows = false;
-
// material.mainPass.addShader(new AlphaMult());
this.materials.push(material);
diff --git a/src/Marble.hx b/src/Marble.hx
index 0d23d90c..403950b1 100644
--- a/src/Marble.hx
+++ b/src/Marble.hx
@@ -165,6 +165,7 @@ class Marble extends GameObject {
var marbleTexture = ResourceLoader.loader.load("data/shapes/balls/base.marble.png").toTexture();
var marbleMaterial = Material.create(marbleTexture);
marbleMaterial.shadows = false;
+ marbleMaterial.castShadows = true;
var obj = new Mesh(geom, marbleMaterial, this);
obj.scale(_radius);
diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx
index 532d26dd..afa12a11 100644
--- a/src/MarbleGame.hx
+++ b/src/MarbleGame.hx
@@ -31,10 +31,14 @@ class MarbleGame {
public function update(dt:Float) {
if (world != null) {
+ if (world._disposed) {
+ world = null;
+ return;
+ }
if (!paused) {
world.update(dt);
}
- if (Key.isPressed(Key.ESCAPE)) {
+ if (Key.isPressed(Key.ESCAPE) && world.finishTime == null) {
paused = !paused;
if (paused) {
world.setCursorLock(false);
@@ -79,7 +83,7 @@ class MarbleGame {
}
public function render(e:h3d.Engine) {
- if (world != null)
+ if (world != null && !world._disposed)
world.render(e);
}
}
diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx
index c617b3ac..6e5bbfe7 100644
--- a/src/MarbleWorld.hx
+++ b/src/MarbleWorld.hx
@@ -1,5 +1,6 @@
package src;
+import gui.PlayMissionGui;
import src.MarbleGame;
import gui.EndGameGui;
import sdl.Cursor;
@@ -107,6 +108,8 @@ class MarbleWorld extends Scheduler {
/** The new target camera orientation quat */
public var newOrientationQuat = new Quat();
+ public var _disposed:Bool = false;
+
public function new(scene:Scene, scene2d:h2d.Scene, mission:Mission) {
this.scene = scene;
this.scene2d = scene2d;
@@ -170,6 +173,9 @@ class MarbleWorld extends Scheduler {
scene.lightSystem.ambientLight.load(ambientColor);
+ var shadow = scene.renderer.getPass(h3d.pass.DefaultShadowMap);
+ shadow.power = 0.5;
+
var sunlight = new DirLight(sunDirection, scene);
sunlight.color = directionalColor;
}
@@ -221,6 +227,7 @@ class MarbleWorld extends Scheduler {
this.marble.camera.CameraYaw = euler.z - Math.PI / 2;
this.marble.camera.CameraPitch = -0.45;
this.marble.camera.oob = false;
+ this.marble.camera.finish = false;
this.marble.mode = Start;
this.marble.startPad = cast startquat.pad;
sky.follow = marble;
@@ -789,7 +796,16 @@ class MarbleWorld extends Scheduler {
}
function showFinishScreen() {
- MarbleGame.canvas.pushDialog(new EndGameGui());
+ var egg:EndGameGui = null;
+ egg = new EndGameGui((sender) -> {
+ this.dispose();
+ MarbleGame.canvas.setContent(new PlayMissionGui());
+ }, (sender) -> {
+ MarbleGame.canvas.popDialog(egg);
+ this.setCursorLock(true);
+ this.restart();
+ });
+ MarbleGame.canvas.pushDialog(egg);
this.setCursorLock(false);
return 0;
}
@@ -888,6 +904,7 @@ class MarbleWorld extends Scheduler {
public function dispose() {
this.playGui.dispose();
scene.removeChildren();
+ this._disposed = true;
}
}
diff --git a/src/Sky.hx b/src/Sky.hx
index 04a756fe..d8d6a811 100644
--- a/src/Sky.hx
+++ b/src/Sky.hx
@@ -31,7 +31,7 @@ class Sky extends Object {
// This is such a hack
// skyMesh.material.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1));
skyMesh.material.mainPass.enableLights = false;
- skyMesh.material.receiveShadows = false;
+ skyMesh.material.shadows = false;
skyMesh.material.blendMode = None;
// var pbrprops = skyMesh.material.mainPass.getShader(PropsValues);
// pbrprops.emissiveValue = 1;
diff --git a/src/gui/EndGameGui.hx b/src/gui/EndGameGui.hx
index 91e7fa01..496c60cf 100644
--- a/src/gui/EndGameGui.hx
+++ b/src/gui/EndGameGui.hx
@@ -6,7 +6,7 @@ import h3d.Vector;
import src.ResourceLoader;
class EndGameGui extends GuiControl {
- public function new() {
+ public function new(continueFunc:GuiControl->Void, restartFunc:GuiControl->Void) {
super();
this.horizSizing = Width;
this.vertSizing = Height;
@@ -31,12 +31,14 @@ class EndGameGui extends GuiControl {
continueButton.vertSizing = Bottom;
continueButton.position = new Vector(333, 386);
continueButton.extent = new Vector(113, 47);
+ continueButton.pressedAction = continueFunc;
var restartButton = new GuiButton(loadButtonImages("data/ui/endgame/replay"));
restartButton.horizSizing = Right;
restartButton.vertSizing = Bottom;
restartButton.position = new Vector(51, 388);
restartButton.extent = new Vector(104, 48);
+ restartButton.pressedAction = restartFunc;
var arial14fontdata = ResourceLoader.loader.load("data/font/Arial14.fnt");
var arial14 = new BitmapFont(arial14fontdata.entry);
@@ -65,12 +67,12 @@ class EndGameGui extends GuiControl {
}
}
- var congrats = new GuiText(expo50);
+ var congrats = new GuiMLText(expo50, mlFontLoader);
congrats.text.textColor = 0xffff00;
- congrats.text.text = "Final Time:";
+ congrats.text.text = 'Final Time: 99:59.999';
congrats.text.filter = new DropShadow(1.414, 0.785, 0, 1, 0, 0.4, 1, true);
congrats.position = new Vector(43, 17);
- congrats.extent = new Vector(208, 50);
+ congrats.extent = new Vector(408, 50);
pg.addChild(congrats);
var finishMessage = new GuiText(expo32);
@@ -90,6 +92,14 @@ class EndGameGui extends GuiControl {
leftColumn.extent = new Vector(208, 50);
pg.addChild(leftColumn);
+ var rightColumn = new GuiMLText(domcasual32, mlFontLoader);
+ rightColumn.text.textColor = 0x000000;
+ rightColumn.text.text = '99:59.999
99:59.999
99:59.999
99:59.999
99:59.999
99:59.999
99:59.999';
+ rightColumn.text.filter = new DropShadow(1.414, 0.785, 0xffffff, 1, 0, 0.4, 1, true);
+ rightColumn.position = new Vector(274, 103);
+ rightColumn.extent = new Vector(208, 50);
+ pg.addChild(rightColumn);
+
pg.addChild(continueButton);
pg.addChild(restartButton);