more examples
This commit is contained in:
187
examples/test_tilemap.ce
Normal file
187
examples/test_tilemap.ce
Normal file
@@ -0,0 +1,187 @@
|
||||
log.console("test_tilemap starting")
|
||||
|
||||
var time = use('time')
|
||||
|
||||
var core = use('core')
|
||||
var tilemap2d = use('tilemap2d')
|
||||
var text2d = use('text2d')
|
||||
var compositor = use('compositor')
|
||||
var film2d = use('film2d')
|
||||
var math = use('math/radians')
|
||||
|
||||
var tilemaps = []
|
||||
var labels = []
|
||||
var t = 0
|
||||
|
||||
var camera = {
|
||||
pos: {x: 250, y: 250},
|
||||
width: 500,
|
||||
height: 500,
|
||||
anchor: {x: 0.5, y: 0.5}
|
||||
}
|
||||
|
||||
var compositor_config = {
|
||||
clear: {r: 0.05, g: 0.05, b: 0.1, a: 1},
|
||||
planes: [
|
||||
{
|
||||
name: 'main',
|
||||
plane: 'main',
|
||||
camera: camera,
|
||||
resolution: {width: 500, height: 500},
|
||||
presentation: 'stretch',
|
||||
clear: {r: 0.05, g: 0.05, b: 0.1, a: 1}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
function make_grid(w, h, img) {
|
||||
var tiles = []
|
||||
var x = 0
|
||||
var y = 0
|
||||
for (x = 0; x < w; x++) {
|
||||
tiles[x] = []
|
||||
for (y = 0; y < h; y++) {
|
||||
tiles[x][y] = img
|
||||
}
|
||||
}
|
||||
return tiles
|
||||
}
|
||||
|
||||
function init() {
|
||||
// Tilemap 1: Normal (top-left)
|
||||
tilemaps[] = tilemap2d({
|
||||
plane: 'main',
|
||||
layer: 0,
|
||||
tiles: make_grid(4, 4, 'examples/tiles/terrain_dirt_cloud'),
|
||||
tile_width: 25,
|
||||
tile_height: 25,
|
||||
offset_x: 0,
|
||||
offset_y: 14
|
||||
})
|
||||
labels[] = text2d({
|
||||
plane: 'main',
|
||||
layer: 10,
|
||||
text: "Normal",
|
||||
pos: {x: 50, y: 480},
|
||||
font: 'examples/fonts/dos',
|
||||
size: 14,
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
})
|
||||
|
||||
// Tilemap 2: Opacity 0.5 (top-right)
|
||||
tilemaps[] = tilemap2d({
|
||||
plane: 'main',
|
||||
layer: 0,
|
||||
tiles: make_grid(4, 4, 'examples/tiles/terrain_dirt_cloud'),
|
||||
tile_width: 25,
|
||||
tile_height: 25,
|
||||
offset_x: 10,
|
||||
offset_y: 14,
|
||||
opacity: 0.5
|
||||
})
|
||||
labels[] = text2d({
|
||||
plane: 'main',
|
||||
layer: 10,
|
||||
text: "Opacity 0.5",
|
||||
pos: {x: 280, y: 480},
|
||||
font: 'examples/fonts/dos',
|
||||
size: 14,
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
})
|
||||
|
||||
// Tilemap 3: Red tint (bottom-left)
|
||||
tilemaps[] = tilemap2d({
|
||||
plane: 'main',
|
||||
layer: 0,
|
||||
tiles: make_grid(4, 4, 'examples/tiles/terrain_dirt_cloud'),
|
||||
tile_width: 25,
|
||||
tile_height: 25,
|
||||
offset_x: 0,
|
||||
offset_y: 4,
|
||||
tint: {r: 1, g: 0.3, b: 0.3, a: 1}
|
||||
})
|
||||
labels[] = text2d({
|
||||
plane: 'main',
|
||||
layer: 10,
|
||||
text: "Red Tint",
|
||||
pos: {x: 50, y: 230},
|
||||
font: 'examples/fonts/dos',
|
||||
size: 14,
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
})
|
||||
|
||||
// Tilemap 4: Green tint (bottom-right)
|
||||
tilemaps[] = tilemap2d({
|
||||
plane: 'main',
|
||||
layer: 0,
|
||||
tiles: make_grid(4, 4, 'examples/tiles/terrain_dirt_cloud'),
|
||||
tile_width: 25,
|
||||
tile_height: 25,
|
||||
offset_x: 10,
|
||||
offset_y: 4,
|
||||
tint: {r: 0.3, g: 1, b: 0.3, a: 1}
|
||||
})
|
||||
labels[] = text2d({
|
||||
plane: 'main',
|
||||
layer: 10,
|
||||
text: "Green Tint",
|
||||
pos: {x: 280, y: 230},
|
||||
font: 'examples/fonts/dos',
|
||||
size: 14,
|
||||
color: {r: 1, g: 1, b: 1, a: 1}
|
||||
})
|
||||
|
||||
// Tilemap 5: Animated opacity (center bottom)
|
||||
tilemaps[] = tilemap2d({
|
||||
plane: 'main',
|
||||
layer: 0,
|
||||
tiles: make_grid(3, 3, 'examples/tiles/terrain_dirt_cloud'),
|
||||
tile_width: 30,
|
||||
tile_height: 30,
|
||||
offset_x: 6,
|
||||
offset_y: 0,
|
||||
opacity: 1
|
||||
})
|
||||
labels[] = text2d({
|
||||
plane: 'main',
|
||||
layer: 10,
|
||||
text: "Animated Opacity",
|
||||
pos: {x: 180, y: 20},
|
||||
font: 'examples/fonts/dos',
|
||||
size: 14,
|
||||
color: {r: 1, g: 1, b: 0, a: 1}
|
||||
})
|
||||
|
||||
log.console("test_tilemap initialized with " + text(length(tilemaps)) + " tilemaps")
|
||||
}
|
||||
|
||||
function update(dt) {
|
||||
t += dt
|
||||
|
||||
// Animate opacity on the center tilemap
|
||||
var animated_tilemap = tilemaps[4]
|
||||
animated_tilemap.opacity = 0.3 + 0.7 * abs(math.sine(t * 1.5))
|
||||
|
||||
// Animate tint on the red tilemap (pulse)
|
||||
var red_tilemap = tilemaps[2]
|
||||
var pulse = 0.5 + 0.5 * math.sine(t * 2)
|
||||
red_tilemap.tint.r = 0.5 + 0.5 * pulse
|
||||
red_tilemap.tint.g = 0.2 * pulse
|
||||
red_tilemap.tint.b = 0.2 * pulse
|
||||
}
|
||||
|
||||
function render() {
|
||||
var plan = compositor.compile(compositor_config)
|
||||
return compositor.execute(plan)
|
||||
}
|
||||
|
||||
init()
|
||||
|
||||
core.start({
|
||||
width: 500,
|
||||
height: 500,
|
||||
title: "Test Tilemap Features",
|
||||
framerate: 60,
|
||||
update: update,
|
||||
render: render
|
||||
})
|
||||
Reference in New Issue
Block a user