mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
get marble skins networked
This commit is contained in:
parent
02b89b5247
commit
060209fb42
7 changed files with 281 additions and 234 deletions
|
|
@ -1,5 +1,6 @@
|
|||
package src;
|
||||
|
||||
import gui.MarblePickerGui;
|
||||
import collision.CollisionPool;
|
||||
import net.NetPacket.MarbleNetFlags;
|
||||
import net.BitStream.OutputBitStream;
|
||||
|
|
@ -375,9 +376,19 @@ class Marble extends GameObject {
|
|||
this.netCorrected = false;
|
||||
|
||||
var marbleDts = new DtsObject();
|
||||
var marbleShader = "";
|
||||
if (connection == null) { // Our marble
|
||||
Console.log("Marble: " + Settings.optionsSettings.marbleModel + " (" + Settings.optionsSettings.marbleSkin + ")");
|
||||
marbleDts.dtsPath = Settings.optionsSettings.marbleModel;
|
||||
marbleDts.matNameOverride.set("base.marble", Settings.optionsSettings.marbleSkin + ".marble");
|
||||
marbleShader = Settings.optionsSettings.marbleShader;
|
||||
} else {
|
||||
var marbleData = MarblePickerGui.marbleData[connection.getMarbleId()];
|
||||
Console.log("Marble: " + marbleData.dts + " (" + marbleData.skin + ")");
|
||||
marbleDts.dtsPath = marbleData.dts;
|
||||
marbleDts.matNameOverride.set("base.marble", marbleData.skin + ".marble");
|
||||
marbleShader = marbleData.shader;
|
||||
}
|
||||
marbleDts.showSequences = false;
|
||||
marbleDts.useInstancing = false;
|
||||
var dtsFile = ResourceLoader.loadDts(marbleDts.dtsPath).resource;
|
||||
|
|
@ -394,10 +405,7 @@ class Marble extends GameObject {
|
|||
var csky = level != null ? level.sky : (@:privateAccess MarbleGame.instance.previewWorld.sky);
|
||||
this.cubemapRenderer = new CubemapRenderer(MarbleGame.instance.scene, csky, !this.controllable && level != null);
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == null
|
||||
|| Settings.optionsSettings.marbleShader == "Default"
|
||||
|| Settings.optionsSettings.marbleShader == ""
|
||||
|| !isUltra) { // Use this shit everywhere except ultra
|
||||
if (marbleShader == null || marbleShader == "Default" || marbleShader == "" || !isUltra) { // Use this shit everywhere except ultra
|
||||
mat.mainPass.addShader(new MarbleReflection(this.cubemapRenderer.cubemap));
|
||||
} else {
|
||||
// Generate tangents for next shaders, only for Ultra
|
||||
|
|
@ -410,31 +418,31 @@ class Marble extends GameObject {
|
|||
|
||||
mat.mainPass.removeShader(mat.textureShader);
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == "ClassicGlassPureSphere") {
|
||||
if (marbleShader == "ClassicGlassPureSphere") {
|
||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble01.normal.png").resource;
|
||||
var classicGlassShader = new ClassicGlassPureSphere(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||
new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||
mat.mainPass.addShader(classicGlassShader);
|
||||
}
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == "ClassicMarb") {
|
||||
if (marbleShader == "ClassicMarb") {
|
||||
var classicMarb = new ClassicMarb(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||
mat.mainPass.addShader(classicMarb);
|
||||
}
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == "ClassicMarb2") {
|
||||
if (marbleShader == "ClassicMarb2") {
|
||||
var classicMarb2 = new ClassicMarb2(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||
mat.mainPass.addShader(classicMarb2);
|
||||
}
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == "ClassicMarb3") {
|
||||
if (marbleShader == "ClassicMarb3") {
|
||||
var marbSpecColor = new Vector(0.6, 0.6, 0.6, 0.6);
|
||||
var marbSpec = 12.0;
|
||||
if (Settings.optionsSettings.marbleModel == "data/shapes/balls/marble16.dts") {
|
||||
if (marbleDts.dtsPath == "data/shapes/balls/marble16.dts") {
|
||||
marbSpec = 6;
|
||||
marbSpecColor.set(0.2, 0.2, 0.2, 0.2);
|
||||
}
|
||||
if (Settings.optionsSettings.marbleModel == "data/shapes/balls/marble31.dts") {
|
||||
if (marbleDts.dtsPath == "data/shapes/balls/marble31.dts") {
|
||||
marbSpec = 24;
|
||||
marbSpecColor.set(0.3, 0.3, 0.3, 0.3);
|
||||
}
|
||||
|
|
@ -442,7 +450,7 @@ class Marble extends GameObject {
|
|||
mat.mainPass.addShader(classicMarb3);
|
||||
}
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == "ClassicMetal") {
|
||||
if (marbleShader == "ClassicMetal") {
|
||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble18.normal.png").resource;
|
||||
marbleNormal.wrap = Repeat;
|
||||
var classicMetalShader = new ClassicMetal(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||
|
|
@ -450,7 +458,7 @@ class Marble extends GameObject {
|
|||
mat.mainPass.addShader(classicMetalShader);
|
||||
}
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass20") {
|
||||
if (marbleShader == "ClassicMarbGlass20") {
|
||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble20.normal.png").resource;
|
||||
marbleNormal.wrap = Repeat;
|
||||
var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||
|
|
@ -458,14 +466,14 @@ class Marble extends GameObject {
|
|||
mat.mainPass.addShader(classicGlassShader);
|
||||
}
|
||||
|
||||
if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass18") {
|
||||
if (marbleShader == "ClassicMarbGlass18") {
|
||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble18.normal.png").resource;
|
||||
marbleNormal.wrap = Repeat;
|
||||
var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||
new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||
mat.mainPass.addShader(classicGlassShader);
|
||||
}
|
||||
if (Settings.optionsSettings.marbleShader == "CrystalMarb") {
|
||||
if (marbleShader == "CrystalMarb") {
|
||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble02.normal.png").resource;
|
||||
marbleNormal.wrap = Repeat;
|
||||
var classicGlassShader = new CrystalMarb(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 1);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package src;
|
||||
|
||||
import gui.MarblePickerGui;
|
||||
import gui.MultiplayerLevelSelectGui;
|
||||
import collision.CollisionPool;
|
||||
import net.GemPredictionStore;
|
||||
|
|
@ -481,7 +482,12 @@ class MarbleWorld extends Scheduler {
|
|||
marblefiles.push("sound/use_blast.wav");
|
||||
}
|
||||
// Hacky
|
||||
if (client == null)
|
||||
marblefiles.push(StringTools.replace(Settings.optionsSettings.marbleModel, "data/", ""));
|
||||
else {
|
||||
var marbleDts = MarblePickerGui.marbleData[client.getMarbleId()].dts;
|
||||
marblefiles.push(StringTools.replace(marbleDts, "data/", ""));
|
||||
}
|
||||
// if (Settings.optionsSettings.marbleCategoryIndex == 0)
|
||||
// marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
|
||||
// else
|
||||
|
|
@ -1458,6 +1464,8 @@ class MarbleWorld extends Scheduler {
|
|||
// }
|
||||
|
||||
this.tickSchedule(timeState.currentAttemptTime);
|
||||
if (this._disposed)
|
||||
return;
|
||||
|
||||
if (this.isWatching && this.replay.currentPlaybackFrame.marbleStateFlags.has(UsedBlast))
|
||||
this.marble.useBlast(timeState);
|
||||
|
|
@ -1965,6 +1973,23 @@ class MarbleWorld extends Scheduler {
|
|||
}
|
||||
}
|
||||
|
||||
function mpFinish() {
|
||||
playGui.setGuiVisibility(false);
|
||||
Console.log("State End");
|
||||
#if js
|
||||
var pointercontainer = js.Browser.document.querySelector("#pointercontainer");
|
||||
pointercontainer.hidden = false;
|
||||
#end
|
||||
if (Util.isTouchDevice()) {
|
||||
MarbleGame.instance.touchInput.setControlsEnabled(false);
|
||||
}
|
||||
this.setCursorLock(false);
|
||||
if (Net.isHost) {
|
||||
MarbleGame.instance.quitMission();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function showFinishScreen() {
|
||||
if (this.isWatching)
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@ import src.Settings;
|
|||
class MarblePickerGui extends GuiImage {
|
||||
var innerCtrl:GuiControl;
|
||||
|
||||
public function new() {
|
||||
var marbleData = [
|
||||
static var marbleData = [
|
||||
{
|
||||
name: "1",
|
||||
dts: "data/shapes/balls/marble01.dts",
|
||||
|
|
@ -225,6 +224,7 @@ class MarblePickerGui extends GuiImage {
|
|||
}
|
||||
];
|
||||
|
||||
public function new() {
|
||||
var res = ResourceLoader.getImage("data/ui/game/CloudBG.jpg").resource.toTile();
|
||||
super(res);
|
||||
|
||||
|
|
|
|||
|
|
@ -635,7 +635,7 @@ class HuntMode extends NullMode {
|
|||
NetCommands.timerRanOut();
|
||||
}
|
||||
if (!level.isWatching) {
|
||||
@:privateAccess level.schedule(level.timeState.currentAttemptTime, () -> cast level.showFinishScreen());
|
||||
@:privateAccess level.schedule(level.timeState.currentAttemptTime + 5, () -> cast level.mpFinish());
|
||||
}
|
||||
} else {
|
||||
var myScore = {
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ abstract class GameConnection {
|
|||
var name:String;
|
||||
var lobbyReady:Bool;
|
||||
var platform:NetPlatform;
|
||||
var marbleId:Int;
|
||||
|
||||
function new(id:Int) {
|
||||
this.id = id;
|
||||
|
|
@ -107,4 +108,12 @@ abstract class GameConnection {
|
|||
public inline function setName(value:String) {
|
||||
name = value;
|
||||
}
|
||||
|
||||
public inline function setMarbleId(value:Int) {
|
||||
marbleId = value;
|
||||
}
|
||||
|
||||
public inline function getMarbleId() {
|
||||
return marbleId;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -303,6 +303,7 @@ class Net {
|
|||
b.writeByte(c);
|
||||
b.writeByte(v.lobbyReady ? 1 : 0);
|
||||
b.writeByte(v.platform);
|
||||
b.writeByte(v.marbleId);
|
||||
var name = v.getName();
|
||||
b.writeByte(name.length);
|
||||
for (i in 0...name.length) {
|
||||
|
|
@ -313,6 +314,7 @@ class Net {
|
|||
b.writeByte(0);
|
||||
b.writeByte(Net.lobbyHostReady ? 1 : 0);
|
||||
b.writeByte(getPlatform());
|
||||
b.writeByte(Settings.optionsSettings.marbleIndex);
|
||||
var name = Settings.highscoreName;
|
||||
b.writeByte(name.length);
|
||||
for (i in 0...name.length) {
|
||||
|
|
@ -332,7 +334,7 @@ class Net {
|
|||
case ClientIdAssign:
|
||||
clientId = input.readByte(); // 8 bit client id, hopefully we don't exceed this
|
||||
Console.log('Client ID set to ${clientId}');
|
||||
NetCommands.setPlayerName(clientId, Settings.highscoreName); // Send our player name to the server
|
||||
NetCommands.setPlayerData(clientId, Settings.highscoreName, Settings.optionsSettings.marbleIndex); // Send our player name to the server
|
||||
NetCommands.transmitPlatform(clientId, getPlatform()); // send our platform too
|
||||
|
||||
case Ping:
|
||||
|
|
@ -417,6 +419,7 @@ class Net {
|
|||
var id = input.readByte();
|
||||
var cready = input.readByte() == 1;
|
||||
var platform = input.readByte();
|
||||
var marble = input.readByte();
|
||||
if (id != 0 && id != Net.clientId && !clientIdMap.exists(id)) {
|
||||
Console.log('Adding ghost connection ${id}');
|
||||
addGhost(id);
|
||||
|
|
@ -429,6 +432,7 @@ class Net {
|
|||
}
|
||||
if (clientIdMap.exists(id)) {
|
||||
clientIdMap[id].setName(name);
|
||||
clientIdMap[id].setMarbleId(marble);
|
||||
clientIdMap[id].lobbyReady = cready;
|
||||
clientIdMap[id].platform = platform;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,9 +124,10 @@ class NetCommands {
|
|||
}
|
||||
}
|
||||
|
||||
@:rpc(client) public static function setPlayerName(clientId:Int, name:String) {
|
||||
@:rpc(client) public static function setPlayerData(clientId:Int, name:String, marble:Int) {
|
||||
if (Net.isHost) {
|
||||
Net.clientIdMap[clientId].setName(name);
|
||||
Net.clientIdMap[clientId].setMarbleId(marble);
|
||||
if (MarbleGame.canvas.content is MultiplayerLevelSelectGui) {
|
||||
cast(MarbleGame.canvas.content, MultiplayerLevelSelectGui).updateLobbyNames();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue