diff options
| author | Code WvS <code-wvs@quantentunnel.de> | 2015-01-25 16:30:56 +0100 |
|---|---|---|
| committer | Code WvS <code-wvs@quantentunnel.de> | 2015-01-25 16:30:56 +0100 |
| commit | 5e25b1303319269ee44821d2a9592a441aa86cee (patch) | |
| tree | 4cac497aec68491f7b65e6cc92bfa2782fa6d519 /byow.js | |
| parent | 2ca378c50bf67b6af5e16ba72af81f4f84db308c (diff) | |
| download | snap-byow-5e25b1303319269ee44821d2a9592a441aa86cee.tar.gz snap-byow-5e25b1303319269ee44821d2a9592a441aa86cee.zip | |
first working version, WIP
Diffstat (limited to 'byow.js')
| -rw-r--r-- | byow.js | 71 |
1 files changed, 71 insertions, 0 deletions
@@ -0,0 +1,71 @@ +var createGame = require('voxel-engine'); +var highlight = require('voxel-highlight'); +var player = require('voxel-player'); +var voxel = require('voxel'); +var fly = require('voxel-fly'); +var walk = require('voxel-walk'); + +function generator(x, y, z) { + return y === 1 ? 1 : 0; +} + +module.exports = function(setup) { + setup = setup || defaultSetup; + var options = { + generate: generator,//voxel.generator['Valley'], + chunkDistance: 2 + }; + // setup the game and add some trees + var game = createGame(options); + window.game = game; + gameWorld = document.createElement('div'); + game.appendTo(gameWorld); + window.gameWorld = gameWorld; + if (game.notCapable()) return game; + var createPlayer = player(game); + + var activeplayer = createPlayer('player.png'); + window.gamePlayer = activeplayer; + activeplayer.possess(); + activeplayer.yaw.position.set(2, 14, 4); + + setup(game, activeplayer); + + return game; +}; + +function defaultSetup(game, avatar) { + var makeFly = fly(game); + var target = game.controls.target(); + game.flyer = makeFly(target); + + // highlight blocks when you look at them, hold <Ctrl> for block placement + var blockPosPlace, blockPosErase; + var hl = game.highlighter = highlight(game, { color: 0xff0000 }); + hl.on('highlight', function (voxelPos) { blockPosErase = voxelPos; }); + hl.on('remove', function (voxelPos) { blockPosErase = null; }); + hl.on('highlight-adjacent', function (voxelPos) { blockPosPlace = voxelPos; }); + hl.on('remove-adjacent', function (voxelPos) { blockPosPlace = null; }); + + // block interaction stuff, uses highlight data + var currentMaterial = 1; + + game.on('fire', function (target, state) { + var position = blockPosPlace; + if (position) { + game.createBlock(position, currentMaterial); + } + else { + position = blockPosErase; + if (position) game.setBlock(position, 0); + } + }); + + game.on('tick', function() { + walk.render(target.playerSkin); + var vx = Math.abs(target.velocity.x); + var vz = Math.abs(target.velocity.z); + if (vx > 0.001 || vz > 0.001) walk.stopWalking(); + else walk.startWalking(); + }); +} |
