system update: some old stuff removed + general updates
This commit is contained in:
@@ -54,20 +54,18 @@ dungeon={
|
||||
end
|
||||
|
||||
if place then
|
||||
LoadModel(modelpath .. "dungeon/end/end",tag,exitTransforms[i])
|
||||
LoadModel(modelpath .. "dungeon/end/end",exitTransforms[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Place the start piece of the dungeon
|
||||
LoadModel(modelpath .. "dungeon/start/start","segment",scalingMat)
|
||||
LoadModel(modelpath .. "dungeon/start/start",scalingMat)
|
||||
LoadWorldInfo("dungeon/start/","start.wiw")
|
||||
CheckSegmentCanBePlaced(AABB(Vector(-1,0,-2),Vector(1,2,0)))
|
||||
|
||||
-- Create physical dungeon segments recursively
|
||||
local function GenerateDungeon(i, count, pos, rotY)
|
||||
-- tag is a unique identifier for each segment
|
||||
local tag = "segment"..math.floor(pos.GetX())..math.floor(pos.GetY())..math.floor(pos.GetZ())
|
||||
local rotMat = matrix.RotationY(rotY)
|
||||
local transformMat = matrix.Multiply( rotMat, matrix.Multiply( matrix.Translation(pos), scalingMat ) )
|
||||
|
||||
@@ -83,21 +81,21 @@ dungeon={
|
||||
local select2 = math.random(0, 6)
|
||||
if(select2 < 1) then --left turn
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/turnleft/turnleft",tag,transformMat)
|
||||
LoadModel(modelpath .. "dungeon/turnleft/turnleft",transformMat)
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(-1,0,1).Transform(rotMat)),rotY-0.5*math.pi)
|
||||
else
|
||||
GenerateDungeon(i+1,count,pos,rotY)
|
||||
end
|
||||
elseif(select2 < 2) then --right turn
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/turnright/turnright",tag,transformMat)
|
||||
LoadModel(modelpath .. "dungeon/turnright/turnright",transformMat)
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(1,0,1).Transform(rotMat)),rotY+0.5*math.pi)
|
||||
else
|
||||
GenerateDungeon(i+1,count,pos,rotY)
|
||||
end
|
||||
elseif(select2 < 3) then --t-junction
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/tjunction/tjunction",tag,transformMat)
|
||||
LoadModel(modelpath .. "dungeon/tjunction/tjunction",transformMat)
|
||||
-- right
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(1,0,1).Transform(rotMat)),rotY+0.5*math.pi)
|
||||
-- left
|
||||
@@ -107,7 +105,7 @@ dungeon={
|
||||
end
|
||||
elseif(select2 < 4) then --cross-junction
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/crossjunction/crossjunction",tag,transformMat)
|
||||
LoadModel(modelpath .. "dungeon/crossjunction/crossjunction",transformMat)
|
||||
-- right
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(1,0,1).Transform(rotMat)),rotY+0.5*math.pi)
|
||||
-- left
|
||||
@@ -119,7 +117,7 @@ dungeon={
|
||||
end
|
||||
else --straight block
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,2)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/block/block",tag,transformMat)
|
||||
LoadModel(modelpath .. "dungeon/block/block",transformMat)
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(0,0,2).Transform(rotMat)),rotY)
|
||||
else
|
||||
GenerateDungeon(i+1,count,pos,rotY)
|
||||
@@ -129,28 +127,28 @@ dungeon={
|
||||
local select2 = math.random(0, 100)
|
||||
if( select2 < 20 ) then --small room left
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-5,0,0),Vector(1,2,6)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/smallroomleft/smallroomleft",tag,transformMat )
|
||||
LoadModel(modelpath .. "dungeon/smallroomleft/smallroomleft",transformMat )
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(-5,0,5).Transform(rotMat)),rotY-0.5*math.pi)
|
||||
else
|
||||
GenerateDungeon(i+1,count,pos,rotY)
|
||||
end
|
||||
elseif( select2 < 30 ) then --odd corridor
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(3,2,8)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/oddcorridor/oddcorridor",tag,transformMat )
|
||||
LoadModel(modelpath .. "dungeon/oddcorridor/oddcorridor",transformMat )
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(2,0,8).Transform(rotMat)),rotY)
|
||||
else
|
||||
GenerateDungeon(i+1,count,pos,rotY)
|
||||
end
|
||||
elseif( select2 < 60 ) then --up corridor
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,4,6)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/upcorridor/upcorridor",tag,transformMat )
|
||||
LoadModel(modelpath .. "dungeon/upcorridor/upcorridor",transformMat )
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(0,2,6).Transform(rotMat)),rotY)
|
||||
else
|
||||
GenerateDungeon(i+1,count,pos,rotY)
|
||||
end
|
||||
else --corridor
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-1,0,0),Vector(1,2,6)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/corridor/corridor",tag,transformMat )
|
||||
LoadModel(modelpath .. "dungeon/corridor/corridor",transformMat )
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(0,0,6).Transform(rotMat)),rotY)
|
||||
else
|
||||
GenerateDungeon(i+1,count,pos,rotY)
|
||||
@@ -158,7 +156,7 @@ dungeon={
|
||||
end
|
||||
else -- rare pieces
|
||||
if CheckSegmentCanBePlaced(AABB(Vector(-4,0,0),Vector(4,8,8)).Transform(transformMat)) then
|
||||
LoadModel(modelpath .. "dungeon/room/room",tag,transformMat )
|
||||
LoadModel(modelpath .. "dungeon/room/room",transformMat )
|
||||
-- right
|
||||
GenerateDungeon(i+1,count,pos:Add(Vector(4,0,4).Transform(rotMat)),rotY + 0.5*math.pi)
|
||||
-- left
|
||||
|
||||
Reference in New Issue
Block a user