Skip to content

Commit ab6617b

Browse files
committed
Renames PlatformZones -> Metroidvania
Demo will attempt to generate with new seed attempt fails Use random seed if none provided
1 parent fed72e7 commit ab6617b

12 files changed

+79
-44
lines changed

dist/labyrinthos.js

+14-10
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,9 @@ var TileMap = exports["default"] = /*#__PURE__*/function () {
310310
}, {
311311
key: "seed",
312312
value: function seed(value) {
313+
if (typeof value === 'undefined') {
314+
value = this.random();
315+
}
313316
this.mersenneTwister.seed(value);
314317
this.seedNoise(value);
315318
// this.mersenneTwister.seed_array([value]); // also can seed from arrays
@@ -651,7 +654,7 @@ var _RecursiveBacktrack = _interopRequireDefault(require("./mazes/RecursiveBackt
651654
var _RecursiveDivision = _interopRequireDefault(require("./mazes/RecursiveDivision.js"));
652655
var _ThomasHunter = _interopRequireDefault(require("./mazes/ThomasHunter.js"));
653656
var _BeattieSchoberth = _interopRequireDefault(require("./mazes/BeattieSchoberth.js"));
654-
var _PlatformZones = _interopRequireDefault(require("./mazes/PlatformZones.js"));
657+
var _Metroidvania = _interopRequireDefault(require("./mazes/Metroidvania.js"));
655658
var _Circle = _interopRequireDefault(require("./shapes/Circle.js"));
656659
var _Square = _interopRequireDefault(require("./shapes/Square.js"));
657660
var _Triangle = _interopRequireDefault(require("./shapes/Triangle.js"));
@@ -701,7 +704,8 @@ labyrinthos.mazes.RecursiveDivision = _RecursiveDivision["default"];
701704
// labyrinthos.mazes.SpiralBacktrack = SpiralBacktrack;
702705
labyrinthos.mazes.BeattieSchoberth = _BeattieSchoberth["default"];
703706
labyrinthos.mazes.ThomasHunter = _ThomasHunter["default"];
704-
labyrinthos.mazes.PlatformZones = _PlatformZones["default"];
707+
labyrinthos.mazes.Metroidvania = _Metroidvania["default"];
708+
labyrinthos.mazes.PlatformZones = _Metroidvania["default"]; // legacy API support
705709
// labyrinthos.mazes.TremauxsAlgorithm = TremauxsAlgorithm;
706710
// labyrinthos.mazes.VoronoiDiagram = VoronoiDiagram;
707711

@@ -725,7 +729,7 @@ labyrinthos.TileMap = _TileMap["default"];
725729
labyrinthos.TileSet = _TileSet["default"];
726730
var _default = exports["default"] = labyrinthos;
727731

728-
},{"./Biome.js":2,"./LSystem.js":3,"./Tile.js":4,"./TileMap.js":5,"./TileSet.js":6,"./mazes/AldousBroder.js":8,"./mazes/AldousBroder3D.js":9,"./mazes/BeattieSchoberth.js":10,"./mazes/BinaryTree.js":11,"./mazes/CellularAutomata.js":12,"./mazes/EllersAlgorithm.js":13,"./mazes/GrowingTree.js":14,"./mazes/PlatformZones.js":15,"./mazes/RecursiveBacktrack.js":16,"./mazes/RecursiveDivision.js":17,"./mazes/ThomasHunter.js":18,"./shapes/Circle.js":19,"./shapes/Square.js":20,"./shapes/Triangle.js":21,"./terrains/FaultLine.js":22,"./terrains/PerlinNoise.js":23,"./util/noise.js":27}],8:[function(require,module,exports){
732+
},{"./Biome.js":2,"./LSystem.js":3,"./Tile.js":4,"./TileMap.js":5,"./TileSet.js":6,"./mazes/AldousBroder.js":8,"./mazes/AldousBroder3D.js":9,"./mazes/BeattieSchoberth.js":10,"./mazes/BinaryTree.js":11,"./mazes/CellularAutomata.js":12,"./mazes/EllersAlgorithm.js":13,"./mazes/GrowingTree.js":14,"./mazes/Metroidvania.js":15,"./mazes/RecursiveBacktrack.js":16,"./mazes/RecursiveDivision.js":17,"./mazes/ThomasHunter.js":18,"./shapes/Circle.js":19,"./shapes/Square.js":20,"./shapes/Triangle.js":21,"./terrains/FaultLine.js":22,"./terrains/PerlinNoise.js":23,"./util/noise.js":27}],8:[function(require,module,exports){
729733
"use strict";
730734

731735
Object.defineProperty(exports, "__esModule", {
@@ -1885,6 +1889,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
18851889
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
18861890
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18871891
/**
1892+
* Metroidvania.js - Abbey Hawk Sparrow 2024
18881893
* Originally written by Thomas Hunter II
18891894
*
18901895
* Originally written on June 12, 2013
@@ -1948,13 +1953,13 @@ var Grid = /*#__PURE__*/function () {
19481953
}]);
19491954
return Grid;
19501955
}();
1951-
var PlatformZones = /*#__PURE__*/function () {
1952-
function PlatformZones() {
1956+
var Metroidvania = /*#__PURE__*/function () {
1957+
function Metroidvania() {
19531958
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1954-
_classCallCheck(this, PlatformZones);
1959+
_classCallCheck(this, Metroidvania);
19551960
this.options = config;
19561961
}
1957-
_createClass(PlatformZones, [{
1962+
_createClass(Metroidvania, [{
19581963
key: "render",
19591964
value: function render() {
19601965
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -1999,7 +2004,7 @@ var PlatformZones = /*#__PURE__*/function () {
19992004
return data;
20002005
}
20012006
}]);
2002-
return PlatformZones;
2007+
return Metroidvania;
20032008
}();
20042009
var inDoorRange = function inDoorRange(n, max, range) {
20052010
var half = Math.floor(max / 2);
@@ -2491,7 +2496,7 @@ function ALGORITHM_PLATFORM_ZONES(tileMap, options) {
24912496
var numRoomsHigh = Math.floor(tileMap.height / roomSizeWidth);
24922497
var maxCount = Math.floor(numRoomsWide * numRoomsHigh * 0.8);
24932498
var minCount = Math.floor(maxCount / 4);
2494-
var generator = new PlatformZones({
2499+
var generator = new Metroidvania({
24952500
roomWidth: roomSizeWidth,
24962501
roomHeight: roomSizeHeight,
24972502
maxFails: 8000,
@@ -3811,7 +3816,6 @@ function Mersenne() {
38113816
gen.init_by_array(A, A.length);
38123817
};
38133818
this.stringToSeed = function (str) {
3814-
console.log('convert', str);
38153819
// Simple hash function to convert a string to a number
38163820
var hash = 0;
38173821
for (var i = 0; i < str.length; i++) {

dist/labyrinthos.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/labyrinthos.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/browser/demo.js

+34-12
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ let urlSeed = null;
33
let map;
44
let infinite = false;
55
let mode = 'topdown';
6-
$(document).ready(function () {
76

8-
7+
$(document).ready(function () {
98

109
// Listen for changes in map mode and toggle the depth input accordingly
1110
$('input[name="mapMode"]').change(function () {
@@ -95,13 +94,13 @@ $(document).ready(function () {
9594
let algo = searchParams.get('algo');
9695

9796
let _infinite = searchParams.get('infinite'); // chunks or no chunks
98-
let _mode = searchParams.get('mode'); // topdown or platformer
97+
let _mode = searchParams.get('mode'); // topdown or platform
9998

10099
if (_infinite == 'true') {
101100
infinite = true;
102101
}
103-
if (_mode == 'platformer') {
104-
mode = 'platformer';
102+
if (_mode == 'platform') {
103+
mode = 'platform';
105104
}
106105

107106
if (width) {
@@ -138,7 +137,6 @@ $(document).ready(function () {
138137
if (algo) {
139138
$('#generatorType').val(algo);
140139
$('.currentAlgo').html(algo);
141-
142140
}
143141

144142
// When the current seed updates, regenerate the map
@@ -187,8 +185,7 @@ $(document).ready(function () {
187185
// the mantra Tiled world with tiledata?=tileMap.data
188186
let host = 'https://yantra.gg/mantra/tiled';
189187
// for dev mode
190-
host = 'http://192.168.1.80:7777/tiled.html'
191-
188+
// host = 'http://192.168.1.80:7777/tiled.html'
192189

193190
// instead of sending entire TiledMap format, we will instead send metadata about `TileMap` with seed
194191
//
@@ -202,8 +199,6 @@ $(document).ready(function () {
202199
depth: map.depth,
203200
};
204201

205-
206-
207202
tileMapData.infinite = infinite;
208203
tileMapData.mode = mode;
209204

@@ -361,7 +356,6 @@ $(document).ready(function () {
361356

362357
//LABY.exec(ogGeneratorType, {}, mapLayer, {});
363358
generators[ogGeneratorType](mapLayer, {});
364-
365359
if (LABY.terrains[ogGeneratorType]) {
366360
mapLayer.scaleToTileRange(4);
367361
}
@@ -386,10 +380,14 @@ $(document).ready(function () {
386380
} else {
387381
// supported 3d generator, no need for stacking logic
388382
$('#stackingModeSelection').toggle(false);
383+
384+
tryGenerate(generatorType, map);
385+
/*
389386
generators[generatorType](map, {});
390387
if (LABY.terrains[generatorType]) {
391388
map.scaleToTileRange(4);
392389
}
390+
*/
393391
}
394392
} else {
395393
// 2d generator
@@ -400,15 +398,39 @@ $(document).ready(function () {
400398
}, map, {});
401399
*/
402400
$('#stackingModeSelection').toggle(false);
401+
402+
/*
403403
generators[generatorType](map, {});
404404
if (LABY.terrains[generatorType]) {
405405
map.scaleToTileRange(4);
406406
}
407+
*/
408+
tryGenerate(generatorType, map);
409+
407410
}
408411

409412
updateMapDisplay(map);
410413
}
411414

415+
416+
function tryGenerate(generatorType, map) {
417+
try {
418+
generators[generatorType](map, {});
419+
if (LABY.terrains[generatorType]) {
420+
map.scaleToTileRange(4);
421+
}
422+
updateMapDisplay(map);
423+
} catch (err) {
424+
console.log('try again');
425+
map.seed(); // new seed
426+
setTimeout(function(){
427+
tryGenerate(generatorType, map);
428+
}, 10)
429+
}
430+
431+
}
432+
433+
412434
function updateMapDisplay(map) {
413435
let mask = map.mask();
414436
if (typeof mask === 'string') {
@@ -441,7 +463,7 @@ $(document).ready(function () {
441463
}
442464

443465
let _mode = $('input[name="mapModePhysics"]:checked').val();
444-
if (_mode === 'topdown' || _mode === 'platformer') {
466+
if (_mode === 'topdown' || _mode === 'platform') {
445467
mode = _mode;
446468
searchParams.set('mode', mode);
447469
} else {

examples/browser/labyrinthos.js

+14-10
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,9 @@ var TileMap = exports["default"] = /*#__PURE__*/function () {
310310
}, {
311311
key: "seed",
312312
value: function seed(value) {
313+
if (typeof value === 'undefined') {
314+
value = this.random();
315+
}
313316
this.mersenneTwister.seed(value);
314317
this.seedNoise(value);
315318
// this.mersenneTwister.seed_array([value]); // also can seed from arrays
@@ -651,7 +654,7 @@ var _RecursiveBacktrack = _interopRequireDefault(require("./mazes/RecursiveBackt
651654
var _RecursiveDivision = _interopRequireDefault(require("./mazes/RecursiveDivision.js"));
652655
var _ThomasHunter = _interopRequireDefault(require("./mazes/ThomasHunter.js"));
653656
var _BeattieSchoberth = _interopRequireDefault(require("./mazes/BeattieSchoberth.js"));
654-
var _PlatformZones = _interopRequireDefault(require("./mazes/PlatformZones.js"));
657+
var _Metroidvania = _interopRequireDefault(require("./mazes/Metroidvania.js"));
655658
var _Circle = _interopRequireDefault(require("./shapes/Circle.js"));
656659
var _Square = _interopRequireDefault(require("./shapes/Square.js"));
657660
var _Triangle = _interopRequireDefault(require("./shapes/Triangle.js"));
@@ -701,7 +704,8 @@ labyrinthos.mazes.RecursiveDivision = _RecursiveDivision["default"];
701704
// labyrinthos.mazes.SpiralBacktrack = SpiralBacktrack;
702705
labyrinthos.mazes.BeattieSchoberth = _BeattieSchoberth["default"];
703706
labyrinthos.mazes.ThomasHunter = _ThomasHunter["default"];
704-
labyrinthos.mazes.PlatformZones = _PlatformZones["default"];
707+
labyrinthos.mazes.Metroidvania = _Metroidvania["default"];
708+
labyrinthos.mazes.PlatformZones = _Metroidvania["default"]; // legacy API support
705709
// labyrinthos.mazes.TremauxsAlgorithm = TremauxsAlgorithm;
706710
// labyrinthos.mazes.VoronoiDiagram = VoronoiDiagram;
707711

@@ -725,7 +729,7 @@ labyrinthos.TileMap = _TileMap["default"];
725729
labyrinthos.TileSet = _TileSet["default"];
726730
var _default = exports["default"] = labyrinthos;
727731

728-
},{"./Biome.js":2,"./LSystem.js":3,"./Tile.js":4,"./TileMap.js":5,"./TileSet.js":6,"./mazes/AldousBroder.js":8,"./mazes/AldousBroder3D.js":9,"./mazes/BeattieSchoberth.js":10,"./mazes/BinaryTree.js":11,"./mazes/CellularAutomata.js":12,"./mazes/EllersAlgorithm.js":13,"./mazes/GrowingTree.js":14,"./mazes/PlatformZones.js":15,"./mazes/RecursiveBacktrack.js":16,"./mazes/RecursiveDivision.js":17,"./mazes/ThomasHunter.js":18,"./shapes/Circle.js":19,"./shapes/Square.js":20,"./shapes/Triangle.js":21,"./terrains/FaultLine.js":22,"./terrains/PerlinNoise.js":23,"./util/noise.js":27}],8:[function(require,module,exports){
732+
},{"./Biome.js":2,"./LSystem.js":3,"./Tile.js":4,"./TileMap.js":5,"./TileSet.js":6,"./mazes/AldousBroder.js":8,"./mazes/AldousBroder3D.js":9,"./mazes/BeattieSchoberth.js":10,"./mazes/BinaryTree.js":11,"./mazes/CellularAutomata.js":12,"./mazes/EllersAlgorithm.js":13,"./mazes/GrowingTree.js":14,"./mazes/Metroidvania.js":15,"./mazes/RecursiveBacktrack.js":16,"./mazes/RecursiveDivision.js":17,"./mazes/ThomasHunter.js":18,"./shapes/Circle.js":19,"./shapes/Square.js":20,"./shapes/Triangle.js":21,"./terrains/FaultLine.js":22,"./terrains/PerlinNoise.js":23,"./util/noise.js":27}],8:[function(require,module,exports){
729733
"use strict";
730734

731735
Object.defineProperty(exports, "__esModule", {
@@ -1885,6 +1889,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
18851889
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
18861890
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
18871891
/**
1892+
* Metroidvania.js - Abbey Hawk Sparrow 2024
18881893
* Originally written by Thomas Hunter II
18891894
*
18901895
* Originally written on June 12, 2013
@@ -1948,13 +1953,13 @@ var Grid = /*#__PURE__*/function () {
19481953
}]);
19491954
return Grid;
19501955
}();
1951-
var PlatformZones = /*#__PURE__*/function () {
1952-
function PlatformZones() {
1956+
var Metroidvania = /*#__PURE__*/function () {
1957+
function Metroidvania() {
19531958
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1954-
_classCallCheck(this, PlatformZones);
1959+
_classCallCheck(this, Metroidvania);
19551960
this.options = config;
19561961
}
1957-
_createClass(PlatformZones, [{
1962+
_createClass(Metroidvania, [{
19581963
key: "render",
19591964
value: function render() {
19601965
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -1999,7 +2004,7 @@ var PlatformZones = /*#__PURE__*/function () {
19992004
return data;
20002005
}
20012006
}]);
2002-
return PlatformZones;
2007+
return Metroidvania;
20032008
}();
20042009
var inDoorRange = function inDoorRange(n, max, range) {
20052010
var half = Math.floor(max / 2);
@@ -2491,7 +2496,7 @@ function ALGORITHM_PLATFORM_ZONES(tileMap, options) {
24912496
var numRoomsHigh = Math.floor(tileMap.height / roomSizeWidth);
24922497
var maxCount = Math.floor(numRoomsWide * numRoomsHigh * 0.8);
24932498
var minCount = Math.floor(maxCount / 4);
2494-
var generator = new PlatformZones({
2499+
var generator = new Metroidvania({
24952500
roomWidth: roomSizeWidth,
24962501
roomHeight: roomSizeHeight,
24972502
maxFails: 8000,
@@ -3811,7 +3816,6 @@ function Mersenne() {
38113816
gen.init_by_array(A, A.length);
38123817
};
38133818
this.stringToSeed = function (str) {
3814-
console.log('convert', str);
38153819
// Simple hash function to convert a string to a number
38163820
var hash = 0;
38173821
for (var i = 0; i < str.length; i++) {

0 commit comments

Comments
 (0)