minimap, more biomes testing
This commit is contained in:
parent
279f7286b6
commit
36ed7d84ac
@ -1,6 +1,6 @@
|
|||||||
import random, noise from love.math
|
import random, noise from love.math
|
||||||
|
|
||||||
biomes = love.image.newImageData "biomes3.png"
|
biomes = love.image.newImageData "biomes4.png"
|
||||||
|
|
||||||
class World
|
class World
|
||||||
new: =>
|
new: =>
|
||||||
@ -16,6 +16,16 @@ class World
|
|||||||
t = @temperature(x, y)
|
t = @temperature(x, y)
|
||||||
t = math.sqrt(t * (1 - h)) -- correct temperature according to altitude
|
t = math.sqrt(t * (1 - h)) -- correct temperature according to altitude
|
||||||
|
|
||||||
|
if h < 1/3
|
||||||
|
map[x][y] = { 0, 0, 1 }
|
||||||
|
else
|
||||||
|
-- x is precipitation (0 to 599)
|
||||||
|
-- y is temperature (0 to 599)
|
||||||
|
t = math.min 599, math.floor t * 600
|
||||||
|
p = math.min 599, math.floor p * 600
|
||||||
|
map[x][y] = { biomes\getPixel p, t }
|
||||||
|
if true return map[x][y]
|
||||||
|
|
||||||
colors = {
|
colors = {
|
||||||
ocean: { 0, 0, 1, 1 }
|
ocean: { 0, 0, 1, 1 }
|
||||||
"fresh water": { 1/3, 1/3, 1, 1 }
|
"fresh water": { 1/3, 1/3, 1, 1 }
|
||||||
@ -38,7 +48,7 @@ class World
|
|||||||
for biome, color in pairs colors
|
for biome, color in pairs colors
|
||||||
table.insert color, biome
|
table.insert color, biome
|
||||||
|
|
||||||
biomes = {
|
biomes_old = {
|
||||||
-- "frozen desert": { 1/3, 0.75, 0.76, 1, h: 0.5, p: 0.12, t: 0 }
|
-- "frozen desert": { 1/3, 0.75, 0.76, 1, h: 0.5, p: 0.12, t: 0 }
|
||||||
-- swamp: { 65/255, 104/255, 37/255, 1, h: 0.1, p: 1, t: 0.8 }
|
-- swamp: { 65/255, 104/255, 37/255, 1, h: 0.1, p: 1, t: 0.8 }
|
||||||
-- -- savanna: { }
|
-- -- savanna: { }
|
||||||
@ -63,7 +73,7 @@ class World
|
|||||||
dt = t - b.t
|
dt = t - b.t
|
||||||
return dh^2 + dp^2 + dt^2
|
return dh^2 + dp^2 + dt^2
|
||||||
choices = {}
|
choices = {}
|
||||||
for name, value in pairs biomes
|
for name, value in pairs biomes_old
|
||||||
table.insert choices, { d2(h, p, t, value), name, value }
|
table.insert choices, { d2(h, p, t, value), name, value }
|
||||||
table.sort choices, (A, B) -> return A[1] < B[1]
|
table.sort choices, (A, B) -> return A[1] < B[1]
|
||||||
copy = (t) ->
|
copy = (t) ->
|
||||||
@ -75,10 +85,10 @@ class World
|
|||||||
r = math.sqrt A[1]^2 + B[1]^2
|
r = math.sqrt A[1]^2 + B[1]^2
|
||||||
g = math.sqrt A[2]^2 + B[2]^2
|
g = math.sqrt A[2]^2 + B[2]^2
|
||||||
b = math.sqrt A[3]^2 + B[3]^2
|
b = math.sqrt A[3]^2 + B[3]^2
|
||||||
a = math.sqrt (A[4] or 1)^2 + ((B[4] or 1)^2
|
a = math.sqrt (A[4] or 1)^2 + (B[4] or 1)^2
|
||||||
return { r, g, b, a or 1 }
|
return { r, g, b, a or 1 }
|
||||||
map[x][y] = merge choices[1][3], choices[2][3], choices[1][1] - choices[2][1]
|
-- map[x][y] = merge choices[1][3], choices[2][3], choices[1][1] - choices[2][1]
|
||||||
map[x][y][5] = "#{choices[1][2]}: #{tostring(h)\sub 1, 4}, #{tostring(p)\sub 1, 4}, #{tostring(t)\sub 1, 4}"
|
-- map[x][y][5] = "#{choices[1][2]}: #{tostring(h)\sub 1, 4}, #{tostring(p)\sub 1, 4}, #{tostring(t)\sub 1, 4}"
|
||||||
|
|
||||||
-- t = math.min 9, math.floor t * 10
|
-- t = math.min 9, math.floor t * 10
|
||||||
-- p = math.min 9, math.floor p * 10
|
-- p = math.min 9, math.floor p * 10
|
||||||
|
BIN
src/biomes4.png
Normal file
BIN
src/biomes4.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 77 KiB |
@ -3,6 +3,9 @@ import tileSize from require "constants"
|
|||||||
w, h = love.graphics.getDimensions!
|
w, h = love.graphics.getDimensions!
|
||||||
screen = { w: math.floor(w/tileSize), h: math.floor(h/tileSize)}
|
screen = { w: math.floor(w/tileSize), h: math.floor(h/tileSize)}
|
||||||
|
|
||||||
|
debug = false
|
||||||
|
map = true
|
||||||
|
|
||||||
Player = require "Player"
|
Player = require "Player"
|
||||||
player = Player!
|
player = Player!
|
||||||
|
|
||||||
@ -31,13 +34,28 @@ love.draw = ->
|
|||||||
screenY += 1
|
screenY += 1
|
||||||
screenY = 0
|
screenY = 0
|
||||||
screenX += 1
|
screenX += 1
|
||||||
love.graphics.setColor 1, 0, 0, 1
|
if debug
|
||||||
love.graphics.circle "line", w/2, h/2, 5
|
love.graphics.setColor 1, 0, 0, 1
|
||||||
t = world\get player\tile!
|
love.graphics.circle "line", w/2, h/2, 5
|
||||||
love.graphics.setColor 0, 0, 0, 1
|
t = world\get player\tile!
|
||||||
love.graphics.rectangle "fill", 0, 0, w, 16
|
love.graphics.setColor 0, 0, 0, 1
|
||||||
love.graphics.setColor 1, 1, 1, 1
|
love.graphics.rectangle "fill", 0, 0, w, 16
|
||||||
love.graphics.print t[5] or "", 1, 1
|
love.graphics.setColor 1, 1, 1, 1
|
||||||
|
love.graphics.print t[5] or "", 1, 1
|
||||||
|
if map
|
||||||
|
mapResolution = 14
|
||||||
|
x, y = player\tile!
|
||||||
|
screenX, screenY = 0, 0
|
||||||
|
for x = x - 50 * mapResolution, x + 49 * mapResolution, mapResolution
|
||||||
|
for y = y - 50 * mapResolution, y + 49 * mapResolution, mapResolution
|
||||||
|
if tile = world\get x, y
|
||||||
|
love.graphics.setColor tile
|
||||||
|
else
|
||||||
|
love.graphics.setColor 0, 0, 0, 1
|
||||||
|
love.graphics.points screenX, screenY
|
||||||
|
screenY += 1
|
||||||
|
screenY = 0
|
||||||
|
screenX += 1
|
||||||
|
|
||||||
love.keypressed = (key) ->
|
love.keypressed = (key) ->
|
||||||
love.event.quit! if key == "escape"
|
love.event.quit! if key == "escape"
|
||||||
|
Loading…
Reference in New Issue
Block a user