Implemented All 18 Biomes + Complete Documentation - Dec 25 2025

This commit is contained in:
David Kotnik
2025-12-25 17:31:14 +01:00
parent fd634f6233
commit 10772a9646
20 changed files with 3960 additions and 49 deletions

View File

@@ -167,6 +167,202 @@ class Flat2DTerrainSystem {
}
graphics.generateTexture('tile2d_swamp', size, size);
// ===== NEW BIOMES - NORMAL (4) =====
// SNOW/FROZEN TUNDRA - LIGHT BLUE/WHITE
graphics.clear();
graphics.fillStyle(0xE0F7FA, 1.0); // Light cyan
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 30; i++) {
graphics.fillStyle(0xFFFFFF, 0.7); // White snowflakes
graphics.fillCircle(Math.random() * size, Math.random() * size, 1 + Math.random() * 2);
}
for (let i = 0; i < 15; i++) {
graphics.fillStyle(0xB3E5FC, 0.5); // Ice patches
graphics.fillCircle(Math.random() * size, Math.random() * size, 4);
}
graphics.generateTexture('tile2d_snow', size, size);
// WASTELAND - DARK GRAY/BROWN
graphics.clear();
graphics.fillStyle(0x4a4a4a, 1.0); // Dark gray
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 25; i++) {
graphics.fillStyle(0x333333, 0.6); // Darker rubble
graphics.fillCircle(Math.random() * size, Math.random() * size, 3 + Math.random() * 4);
}
for (let i = 0; i < 10; i++) {
graphics.fillStyle(0x654321, 0.4); // Brown rust
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_wasteland', size, size);
// TROPICAL - YELLOW SAND
graphics.clear();
graphics.fillStyle(0xFFE082, 1.0); // Light yellow sand
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 20; i++) {
graphics.fillStyle(0xFFD54F, 0.5); // Darker sand
graphics.fillCircle(Math.random() * size, Math.random() * size, 4);
}
for (let i = 0; i < 10; i++) {
graphics.fillStyle(0xFFF59D, 0.6); // Light sand
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_tropical', size, size);
// RADIOACTIVE - NEON GREEN
graphics.clear();
graphics.fillStyle(0x39FF14, 1.0); // Neon green
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 20; i++) {
graphics.fillStyle(0x00FF00, 0.8); // Bright green glow
graphics.fillCircle(Math.random() * size, Math.random() * size, 3 + Math.random() * 5);
}
for (let i = 0; i < 15; i++) {
graphics.fillStyle(0x76FF03, 0.6); // Light green spots
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_radioactive', size, size);
// ===== NEW BIOMES - ANOMALOUS (9) =====
// DINO VALLEY - OLIVE GREEN
graphics.clear();
graphics.fillStyle(0x6B8E23, 1.0); // Olive drab
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 25; i++) {
graphics.fillStyle(0x556B2F, 0.6); // Dark olive
graphics.fillCircle(Math.random() * size, Math.random() * size, 3);
}
for (let i = 0; i < 15; i++) {
graphics.fillStyle(0x9ACD32, 0.5); // Yellow green
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_dino_valley', size, size);
// MYTHICAL HIGHLANDS - PURPLE
graphics.clear();
graphics.fillStyle(0xB39DDB, 1.0); // Light purple
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 20; i++) {
graphics.fillStyle(0x9575CD, 0.6); // Medium purple
graphics.fillCircle(Math.random() * size, Math.random() * size, 4);
}
for (let i = 0; i < 10; i++) {
graphics.fillStyle(0xE1BEE7, 0.7); // Light pink/purple
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_mythical', size, size);
// ENDLESS FOREST - VERY DARK GREEN
graphics.clear();
graphics.fillStyle(0x1B5E20, 1.0); // Very dark green
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 30; i++) {
graphics.fillStyle(0x104010, 0.7); // Almost black green
graphics.fillCircle(Math.random() * size, Math.random() * size, 3);
}
for (let i = 0; i < 15; i++) {
graphics.fillStyle(0x2E7D32, 0.5); // Slightly lighter green
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_endless_forest', size, size);
// LOCH NESS - BLUE GRAY
graphics.clear();
graphics.fillStyle(0x546E7A, 1.0); // Blue gray
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 20; i++) {
graphics.fillStyle(0x455A64, 0.6); // Darker blue gray
graphics.fillCircle(Math.random() * size, Math.random() * size, 4);
}
for (let i = 0; i < 15; i++) {
graphics.fillStyle(0x607D8B, 0.5); // Lighter blue gray
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_loch_ness', size, size);
// CATACOMBS - DARK BROWN
graphics.clear();
graphics.fillStyle(0x3E2723, 1.0); // Very dark brown
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 25; i++) {
graphics.fillStyle(0x1B0000, 0.7); // Almost black
graphics.fillCircle(Math.random() * size, Math.random() * size, 3);
}
for (let i = 0; i < 10; i++) {
graphics.fillStyle(0x6D4C41, 0.5); // Medium brown
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_catacombs', size, size);
// EGYPTIAN DESERT - BRIGHT YELLOW
graphics.clear();
graphics.fillStyle(0xFFD54F, 1.0); // Bright yellow
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 25; i++) {
graphics.fillStyle(0xFFCA28, 0.6); // Amber yellow
graphics.fillCircle(Math.random() * size, Math.random() * size, 4);
}
for (let i = 0; i < 15; i++) {
graphics.fillStyle(0xFFE082, 0.5); // Light yellow
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_egyptian_desert', size, size);
// AMAZON RAINFOREST - DARK GREEN (jungle)
graphics.clear();
graphics.fillStyle(0x1B5E20, 1.0); // Dark green
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 30; i++) {
graphics.fillStyle(0x2E7D32, 0.7); // Medium green
graphics.fillCircle(Math.random() * size, Math.random() * size, 3);
}
for (let i = 0; i < 20; i++) {
graphics.fillStyle(0x43A047, 0.6); // Lighter green
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_amazon', size, size);
// ATLANTIS - CYAN/BLUE
graphics.clear();
graphics.fillStyle(0x00BCD4, 1.0); // Cyan
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 25; i++) {
graphics.fillStyle(0x0097A7, 0.7); // Dark cyan
graphics.fillCircle(Math.random() * size, Math.random() * size, 4);
}
for (let i = 0; i < 20; i++) {
graphics.fillStyle(0x4DD0E1, 0.6); // Light cyan
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
// Bubbles
for (let i = 0; i < 10; i++) {
graphics.fillStyle(0xFFFFFF, 0.4);
graphics.fillCircle(Math.random() * size, Math.random() * size, 1);
}
graphics.generateTexture('tile2d_atlantis', size, size);
// CHERNOBYL - GRAY (ruined city)
graphics.clear();
graphics.fillStyle(0x757575, 1.0); // Medium gray
graphics.fillRect(0, 0, size, size);
for (let i = 0; i < 30; i++) {
graphics.fillStyle(0x616161, 0.7); // Dark gray
graphics.fillCircle(Math.random() * size, Math.random() * size, 4);
}
for (let i = 0; i < 15; i++) {
graphics.fillStyle(0x424242, 0.6); // Very dark gray
graphics.fillCircle(Math.random() * size, Math.random() * size, 3);
}
// Radioactive glow spots
for (let i = 0; i < 5; i++) {
graphics.fillStyle(0x39FF14, 0.3); // Green radiation
graphics.fillCircle(Math.random() * size, Math.random() * size, 2);
}
graphics.generateTexture('tile2d_chernobyl', size, size);
// GRASS WITH FLOWERS (VIBRANT!)
graphics.clear();
graphics.fillStyle(0x3CB371, 1.0);
@@ -401,6 +597,36 @@ class Flat2DTerrainSystem {
} else if (biome === 'swamp') {
tileTexture = 'tile2d_swamp';
}
// NEW BIOMES - NORMAL (4)
else if (biome === 'snow') {
tileTexture = 'tile2d_snow';
} else if (biome === 'wasteland') {
tileTexture = 'tile2d_wasteland';
} else if (biome === 'tropical') {
tileTexture = 'tile2d_tropical';
} else if (biome === 'radioactive') {
tileTexture = 'tile2d_radioactive';
}
// NEW BIOMES - ANOMALOUS (9)
else if (biome === 'dino_valley') {
tileTexture = 'tile2d_dino_valley';
} else if (biome === 'mythical') {
tileTexture = 'tile2d_mythical';
} else if (biome === 'endless_forest') {
tileTexture = 'tile2d_endless_forest';
} else if (biome === 'loch_ness') {
tileTexture = 'tile2d_loch_ness';
} else if (biome === 'catacombs') {
tileTexture = 'tile2d_catacombs';
} else if (biome === 'egyptian_desert') {
tileTexture = 'tile2d_egyptian_desert';
} else if (biome === 'amazon') {
tileTexture = 'tile2d_amazon';
} else if (biome === 'atlantis') {
tileTexture = 'tile2d_atlantis';
} else if (biome === 'chernobyl') {
tileTexture = 'tile2d_chernobyl';
}
// Create tile sprite
const tileSprite = this.scene.add.image(worldX, worldY, tileTexture);