redo dif building and handle custom stuff

This commit is contained in:
RandomityGuy 2023-05-26 14:34:15 +05:30
parent 152440c233
commit 8dc630c458
5 changed files with 143 additions and 140 deletions

View file

@ -305,7 +305,6 @@ class DifBuilder {
difresource.acquire(); difresource.acquire();
var dif = difresource.resource; var dif = difresource.resource;
var geo = so == -1 ? dif.interiors[0] : dif.subObjects[so]; var geo = so == -1 ? dif.interiors[0] : dif.subObjects[so];
var hulls = geo.convexHulls;
var triangles = []; var triangles = [];
var textures = []; var textures = [];
var collider = new CollisionEntity(itr); var collider = new CollisionEntity(itr);
@ -323,11 +322,8 @@ class DifBuilder {
var vertexBuckets = new Map<Point3F, Array<VertexBucket>>(); var vertexBuckets = new Map<Point3F, Array<VertexBucket>>();
var edges = []; var edges = [];
var colliderSurfaces = []; var colliderSurfaces = [];
for (i in 0...hulls.length) { for (i in 0...geo.surfaces.length) {
var hullTris = []; var surfaceindex = i;
var hull = hulls[i];
for (j in hull.surfaceStart...(hull.surfaceStart + hull.surfaceCount)) {
var surfaceindex = geo.hullSurfaceIndices[j];
var surface = geo.surfaces[surfaceindex]; var surface = geo.surfaces[surfaceindex];
if (surface == null) if (surface == null)
continue; continue;
@ -412,7 +408,6 @@ class DifBuilder {
tri.uv2 = uv2; tri.uv2 = uv2;
tri.uv3 = uv3; tri.uv3 = uv3;
triangles.push(tri); triangles.push(tri);
hullTris.push(tri);
var materialName = stripTexName(texture).toLowerCase(); var materialName = stripTexName(texture).toLowerCase();
var hasMaterialInfo = materialDict.exists(materialName); var hasMaterialInfo = materialDict.exists(materialName);
if (hasMaterialInfo) { if (hasMaterialInfo) {
@ -462,7 +457,6 @@ class DifBuilder {
collider.addSurface(colliderSurface); collider.addSurface(colliderSurface);
colliderSurfaces.push(colliderSurface); colliderSurfaces.push(colliderSurface);
} }
}
var edgeMap:Map<Int, TriangleEdge> = new Map(); var edgeMap:Map<Int, TriangleEdge> = new Map();
var internalEdges:Map<Int, Bool> = new Map(); var internalEdges:Map<Int, Bool> = new Map();
var difEdges:Map<Int, Edge> = []; var difEdges:Map<Int, Edge> = [];

View file

@ -260,7 +260,7 @@ class MarbleGame {
canvas.setContent(new MainMenuGui()); canvas.setContent(new MainMenuGui());
#end #end
} else { } else {
if (!world.mission.isClaMission) { if (!world.mission.isClaMission && !world.mission.isCustom) {
PlayMissionGui.currentCategoryStatic = world.mission.type; PlayMissionGui.currentCategoryStatic = world.mission.type;
} }
var pmg = new PlayMissionGui(); var pmg = new PlayMissionGui();

View file

@ -39,6 +39,7 @@ class Mission {
public var isClaMission:Bool; public var isClaMission:Bool;
public var game:String; public var game:String;
public var hasEgg:Bool; public var hasEgg:Bool;
public var isCustom:Bool;
var next:Mission; var next:Mission;

View file

@ -35,7 +35,14 @@ class MissionList {
var misParser = new MisParser(file.getText()); var misParser = new MisParser(file.getText());
var mInfo = misParser.parseMissionInfo(); var mInfo = misParser.parseMissionInfo();
var mission = Mission.fromMissionInfo(file.path, mInfo); var mission = Mission.fromMissionInfo(file.path, mInfo);
if (game != "custom")
mission.game = game; mission.game = game;
else if (mInfo.game != null && mInfo.game != "")
mission.game = mInfo.game.toLowerCase();
else
mission.game = game; // Last case scenario
if (game == "custom")
mission.isCustom = true;
// do egg thing // do egg thing
if (StringTools.contains(file.getText().toLowerCase(), 'datablock = "easteregg"')) { // Ew if (StringTools.contains(file.getText().toLowerCase(), 'datablock = "easteregg"')) { // Ew
mission.hasEgg = true; mission.hasEgg = true;

View file

@ -57,6 +57,7 @@ class MissionElementScriptObject extends MissionElementBase {
var ultimatetime:String; var ultimatetime:String;
var music:String; var music:String;
var alarmstarttime:String; var alarmstarttime:String;
var game:String;
public function new() { public function new() {
_type = MissionElementType.ScriptObject; _type = MissionElementType.ScriptObject;