diff --git a/game/love_src/asset/image/book/StoryMode.png b/game/love_src/asset/image/book/StoryMode.png deleted file mode 100644 index 34c42f4..0000000 Binary files a/game/love_src/asset/image/book/StoryMode.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook.png b/game/love_src/asset/image/book/StoryModeBook.png deleted file mode 100644 index ab27944..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook11.png b/game/love_src/asset/image/book/StoryModeBook11.png deleted file mode 100644 index 544d671..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook11.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook16.png b/game/love_src/asset/image/book/StoryModeBook16.png deleted file mode 100644 index 749c209..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook16.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook2.png b/game/love_src/asset/image/book/StoryModeBook2.png deleted file mode 100644 index bd0dfab..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook2.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook3.png b/game/love_src/asset/image/book/StoryModeBook3.png deleted file mode 100644 index d36aaad..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook3.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook4.png b/game/love_src/asset/image/book/StoryModeBook4.png deleted file mode 100644 index 749c209..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook4.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook5.png b/game/love_src/asset/image/book/StoryModeBook5.png deleted file mode 100644 index c66f873..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook5.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook6.png b/game/love_src/asset/image/book/StoryModeBook6.png deleted file mode 100644 index 2a1a397..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook6.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook7.png b/game/love_src/asset/image/book/StoryModeBook7.png deleted file mode 100644 index 140c11a..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook7.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook8.png b/game/love_src/asset/image/book/StoryModeBook8.png deleted file mode 100644 index d3f5bdb..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook8.png and /dev/null differ diff --git a/game/love_src/asset/image/book/StoryModeBook9.png b/game/love_src/asset/image/book/StoryModeBook9.png deleted file mode 100644 index 544d671..0000000 Binary files a/game/love_src/asset/image/book/StoryModeBook9.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/LICENSE b/game/love_src/asset/image/sample/javascript-racer-master/LICENSE deleted file mode 100644 index efec39d..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012, 2013, 2014, 2015, 2016 Jake Gordon and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -=============================================================================== - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/README.md b/game/love_src/asset/image/sample/javascript-racer-master/README.md deleted file mode 100644 index b765bff..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/README.md +++ /dev/null @@ -1,111 +0,0 @@ -Javascript Pseudo 3D Racer -========================== - -An Outrun-style pseudo-3d racing game in HTML5 and Javascript - - * [play the game](https://jakesgordon.com/games/racer/) - * view the [source](https://github.com/jakesgordon/javascript-racer) - * read about [how it works](https://jakesgordon.com/writing/javascript-racer/) - -Incrementally built up in 4 parts: - - * play the [straight road demo](https://jakesgordon.com/games/racer/v1-straight/) - * play the [curves demo](https://jakesgordon.com/games/racer/v2-curves/) - * play the [hills demo](https://jakesgordon.com/games/racer/v3-hills/) - * play the [final version](https://jakesgordon.com/games/racer/) - -With detailed descriptions of how each part works: - - * read more about [v1 - straight roads](https://jakesgordon.com/writing/javascript-racer-v1-straight/) - * read more about [v2 - curves](https://jakesgordon.com/writing/javascript-racer-v2-curves/) - * read more about [v3 - hills](https://jakesgordon.com/writing/javascript-racer-v3-hills/) - * read more about v4 - final (coming soon) - -A note on performance -===================== - -The performance of this game is **very** machine/browser dependent. It works quite well in modern -browsers, especially those with GPU canvas acceleration, but a bad graphics driver can kill it stone -dead. So your mileage may vary. There are controls provided to change the rendering resolution -and the draw distance to scale to fit your machine. - -Currently supported browsers include: - - * Firefox (v12+) works great, 60fps at high res - Nice! - * Chrome (v19+) works great, 60fps at high res... provided you dont have a bad GPU driver - * IE9 - ok, 30fps at medium res... not great, but at least it works - -The current state of mobile browser performance is pretty dismal. Dont expect this to be playable on -any mobile device. - ->> _NOTE: I havent actually spent anytime optimizing for performance yet. So it might be possible to - make it play well on older browsers, but that's not really what this project is about._ - -A note on code structure -======================== - -This project happens to be implemented in javascript (because its easy for prototyping) but -is not intended to demonstrate javascript techniques or best practices. In fact, in order to -keep it simple to understand it embeds the javascript for each example directly in the HTML -page (horror!) and, even worse, uses global variables and functions (OMG!). - -If I was building a real game I would have much more structure and organization to the -code, but since its just a racing game tech demo, I have elected to [KISS](http://en.wikipedia.org/wiki/KISS_principle). - -FUTURE -====== - -It's quite astounding what it takes to actually [finish](https://jakesgordon.com/writing/defining-finished/) -a game, even a simple one. And this is not a project that I plan on polishing into a finished state. It should -really be considered just how to get started with a pseudo-3d racing game. - -If we were to try to turn it into a real game we would have to consider: - - * car sound fx - * better synchronized music - * full screen mode - * HUD fx (flash on fastest lap, confetti, color coded speedometer, etc) - * more accurate sprite collision - * better car AI (steering, braking etc) - * an actual crash when colliding at high speed - * more bounce when car is off road - * screen shake when off-road or collision - * throw up dirt particles when off road - * more dynamic camera (lower at faster speed, swoop over hills etc) - * automatic resolution & drawDistance detection - * projection based curves ? x,y rotation - * sub-pixel aliasing artifacts on curves - * smarter fog to cover sprites (blue against sky, cover sprites) - * multiple stages, different maps - * a lap map, with current position indicator - * road splits and joins - * day/night cycle - * weather effects - * tunnels, bridges, clouds, walls, buildings - * city, desert, ocean - * add city of seattle and space needle to background - * 'bad guys' - add some competetor drivers to race against as well as the 'traffic' - * different game modes - fastest lap, 1-on-1 racing, collect coins ? shoot bad guys ? - * a whole lot of gameplay tuning - * ... - * ... - -Related Links -============= - - * [Lou's Pseudo-3d Page](http://www.extentofthejam.com/pseudo/) - high level how-to guide - * [Racer 10k](https://github.com/onaluf/RacerJS) - another javascript racing game - -License -======= - -[MIT](http://en.wikipedia.org/wiki/MIT_License) license. - ->> NOTE: the music tracks included in this project are royalty free resources paid for and licensed -from [Lucky Lion Studios](http://luckylionstudios.com/). They are licensed ONLY for use in this -project and should not be reproduced. - ->> NOTE: the sprite graphics are placeholder graphics [borrowed](http://pixel.garoux.net/game/44) from the old -genesis version of outrun and used here as teaching examples. If there are any pixel artists out there who want to -provide original art to turn this into a real game please get in touch! - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/Rakefile b/game/love_src/asset/image/sample/javascript-racer-master/Rakefile deleted file mode 100644 index c02a1df..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/Rakefile +++ /dev/null @@ -1,36 +0,0 @@ - -desc 'recreate sprite sheets' -task 'resprite' do - require 'sprite_factory' - - SpriteFactory.run!('images/sprites', :layout => :packed, :output_style => 'images/sprites.js', :margin => 5, :nocomments => true) do |images| - SpriteHelper.javascript_style("SPRITES", images) - end - - SpriteFactory.run!('images/background', :layout => :vertical, :output_style => 'images/background.js', :margin => 5, :nocomments => true) do |images| - SpriteHelper.javascript_style("BACKGROUND", images) - end - -end - -#------------------------------------------------------------------------------ - -module SpriteHelper - - # slightly unusual use of sprite-factory to generate a javascript object structure instead of CSS attributes... - def self.javascript_style(variable, images) - maxname = images.keys.inject(0) {|n,key| [n,key.length].max } - rules = [] - images.each do |name, i| - name = name.upcase - whitespace = ' '*(maxname-name.length) - x = '%4d' % i[:cssx] - y = '%4d' % i[:cssy] - w = '%4d' % i[:cssw] - h = '%4d' % i[:cssh] - rules << " #{name}: #{whitespace}{ x: #{x}, y: #{y}, w: #{w}, h: #{h} }" - end - "var #{variable} = {\n#{rules.join(",\n")}\n};" - end - -end diff --git a/game/love_src/asset/image/sample/javascript-racer-master/common.css b/game/love_src/asset/image/sample/javascript-racer-master/common.css deleted file mode 100644 index 5bb2d2b..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/common.css +++ /dev/null @@ -1,28 +0,0 @@ - -/****************************************/ -/* common styles used for v1 through v4 */ -/****************************************/ - -body { font-family: Arial, Helvetica, sans-serif; } -#stats { border: 2px solid black; } -#controls { width: 28em; float: left; padding: 1em; font-size: 0.7em; } -#controls th { text-align: right; vertical-align: middle; } -#instructions { clear: left; float: left; width: 17em; padding: 1em; border: 1px solid black; box-shadow: 0 0 5px black; } -#racer { position: relative; z-index: 0; width: 640px; height: 480px; margin-left: 20em; border: 2px solid black; } -#canvas { position: absolute; z-index: 0; width: 640px; height: 480px; z-index: 0; background-color: #72D7EE; } -#mute { background-position: 0px 0px; width: 32px; height: 32px; background: url(images/mute.png); display: inline-block; cursor: pointer; position: absolute; margin-left: 20em; } -#mute.on { background-position: -32px 0px; } - -/**************************************************/ -/* rudimentary heads up display (only used in v4) */ -/**************************************************/ - -#hud { position: absolute; z-index: 1; width: 640px; padding: 5px 0; font-family: Verdana, Geneva, sans-serif; font-size: 0.8em; background-color: rgba(255,0,0,0.4); color: black; border-bottom: 2px solid black; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; } -#hud .hud { background-color: rgba(255,255,255,0.6); padding: 5px; border: 1px solid black; margin: 0 5px; transition-property: background-color; transition-duration: 2s; -webkit-transition-property: background-color; -webkit-transition-duration: 2s; } -#hud #speed { float: right; } -#hud #current_lap_time { float: left; } -#hud #last_lap_time { float: left; display: none; } -#hud #fast_lap_time { display: block; width: 12em; margin: 0 auto; text-align: center; transition-property: background-color; transition-duration: 2s; -webkit-transition-property: background-color; -webkit-transition-duration: 2s; } -#hud .value { color: black; font-weight: bold; } -#hud .fastest { background-color: rgba(255,215,0,0.5); } - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/common.js b/game/love_src/asset/image/sample/javascript-racer-master/common.js deleted file mode 100644 index a0eb697..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/common.js +++ /dev/null @@ -1,414 +0,0 @@ -//========================================================================= -// minimalist DOM helpers -//========================================================================= - -var Dom = { - - get: function(id) { return ((id instanceof HTMLElement) || (id === document)) ? id : document.getElementById(id); }, - set: function(id, html) { Dom.get(id).innerHTML = html; }, - on: function(ele, type, fn, capture) { Dom.get(ele).addEventListener(type, fn, capture); }, - un: function(ele, type, fn, capture) { Dom.get(ele).removeEventListener(type, fn, capture); }, - show: function(ele, type) { Dom.get(ele).style.display = (type || 'block'); }, - blur: function(ev) { ev.target.blur(); }, - - addClassName: function(ele, name) { Dom.toggleClassName(ele, name, true); }, - removeClassName: function(ele, name) { Dom.toggleClassName(ele, name, false); }, - toggleClassName: function(ele, name, on) { - ele = Dom.get(ele); - var classes = ele.className.split(' '); - var n = classes.indexOf(name); - on = (typeof on == 'undefined') ? (n < 0) : on; - if (on && (n < 0)) - classes.push(name); - else if (!on && (n >= 0)) - classes.splice(n, 1); - ele.className = classes.join(' '); - }, - - storage: window.localStorage || {} - -} - -//========================================================================= -// general purpose helpers (mostly math) -//========================================================================= - -var Util = { - - timestamp: function() { return new Date().getTime(); }, - toInt: function(obj, def) { if (obj !== null) { var x = parseInt(obj, 10); if (!isNaN(x)) return x; } return Util.toInt(def, 0); }, - toFloat: function(obj, def) { if (obj !== null) { var x = parseFloat(obj); if (!isNaN(x)) return x; } return Util.toFloat(def, 0.0); }, - limit: function(value, min, max) { return Math.max(min, Math.min(value, max)); }, - randomInt: function(min, max) { return Math.round(Util.interpolate(min, max, Math.random())); }, - randomChoice: function(options) { return options[Util.randomInt(0, options.length-1)]; }, - percentRemaining: function(n, total) { return (n%total)/total; }, - accelerate: function(v, accel, dt) { return v + (accel * dt); }, - interpolate: function(a,b,percent) { return a + (b-a)*percent }, - easeIn: function(a,b,percent) { return a + (b-a)*Math.pow(percent,2); }, - easeOut: function(a,b,percent) { return a + (b-a)*(1-Math.pow(1-percent,2)); }, - easeInOut: function(a,b,percent) { return a + (b-a)*((-Math.cos(percent*Math.PI)/2) + 0.5); }, - exponentialFog: function(distance, density) { return 1 / (Math.pow(Math.E, (distance * distance * density))); }, - - increase: function(start, increment, max) { // with looping - var result = start + increment; - while (result >= max) - result -= max; - while (result < 0) - result += max; - return result; - }, - - project: function(p, cameraX, cameraY, cameraZ, cameraDepth, width, height, roadWidth) { - p.camera.x = (p.world.x || 0) - cameraX; - p.camera.y = (p.world.y || 0) - cameraY; - p.camera.z = (p.world.z || 0) - cameraZ; - p.screen.scale = cameraDepth/p.camera.z; - p.screen.x = Math.round((width/2) + (p.screen.scale * p.camera.x * width/2)); - p.screen.y = Math.round((height/2) - (p.screen.scale * p.camera.y * height/2)); - p.screen.w = Math.round( (p.screen.scale * roadWidth * width/2)); - }, - - overlap: function(x1, w1, x2, w2, percent) { - var half = (percent || 1)/2; - var min1 = x1 - (w1*half); - var max1 = x1 + (w1*half); - var min2 = x2 - (w2*half); - var max2 = x2 + (w2*half); - return ! ((max1 < min2) || (min1 > max2)); - } - -} - -//========================================================================= -// POLYFILL for requestAnimationFrame -//========================================================================= - -if (!window.requestAnimationFrame) { // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ - window.requestAnimationFrame = window.webkitRequestAnimationFrame || - window.mozRequestAnimationFrame || - window.oRequestAnimationFrame || - window.msRequestAnimationFrame || - function(callback, element) { - window.setTimeout(callback, 1000 / 60); - } -} - -//========================================================================= -// GAME LOOP helpers -//========================================================================= - -var Game = { // a modified version of the game loop from my previous boulderdash game - see https://jakesgordon.com/writing/javascript-boulderdash/#gameloop - - run: function(options) { - - Game.loadImages(options.images, function(images) { - - options.ready(images); // tell caller to initialize itself because images are loaded and we're ready to rumble - - Game.setKeyListener(options.keys); - - var canvas = options.canvas, // canvas render target is provided by caller - update = options.update, // method to update game logic is provided by caller - render = options.render, // method to render the game is provided by caller - step = options.step, // fixed frame step (1/fps) is specified by caller - stats = options.stats, // stats instance is provided by caller - now = null, - last = Util.timestamp(), - dt = 0, - gdt = 0; - - function frame() { - now = Util.timestamp(); - dt = Math.min(1, (now - last) / 1000); // using requestAnimationFrame have to be able to handle large delta's caused when it 'hibernates' in a background or non-visible tab - gdt = gdt + dt; - while (gdt > step) { - gdt = gdt - step; - update(step); - } - render(); - stats.update(); - last = now; - requestAnimationFrame(frame, canvas); - } - frame(); // lets get this party started - Game.playMusic(); - }); - }, - - //--------------------------------------------------------------------------- - - loadImages: function(names, callback) { // load multiple images and callback when ALL images have loaded - var result = []; - var count = names.length; - - var onload = function() { - if (--count == 0) - callback(result); - }; - - for(var n = 0 ; n < names.length ; n++) { - var name = names[n]; - result[n] = document.createElement('img'); - Dom.on(result[n], 'load', onload); - result[n].src = "images/" + name + ".png"; - } - }, - - //--------------------------------------------------------------------------- - - setKeyListener: function(keys) { - var onkey = function(keyCode, mode) { - var n, k; - for(n = 0 ; n < keys.length ; n++) { - k = keys[n]; - k.mode = k.mode || 'up'; - if ((k.key == keyCode) || (k.keys && (k.keys.indexOf(keyCode) >= 0))) { - if (k.mode == mode) { - k.action.call(); - } - } - } - }; - Dom.on(document, 'keydown', function(ev) { onkey(ev.keyCode, 'down'); } ); - Dom.on(document, 'keyup', function(ev) { onkey(ev.keyCode, 'up'); } ); - }, - - //--------------------------------------------------------------------------- - - stats: function(parentId, id) { // construct mr.doobs FPS counter - along with friendly good/bad/ok message box - - var result = new Stats(); - result.domElement.id = id || 'stats'; - Dom.get(parentId).appendChild(result.domElement); - - var msg = document.createElement('div'); - msg.style.cssText = "border: 2px solid gray; padding: 5px; margin-top: 5px; text-align: left; font-size: 1.15em; text-align: right;"; - msg.innerHTML = "Your canvas performance is "; - Dom.get(parentId).appendChild(msg); - - var value = document.createElement('span'); - value.innerHTML = "..."; - msg.appendChild(value); - - setInterval(function() { - var fps = result.current(); - var ok = (fps > 50) ? 'good' : (fps < 30) ? 'bad' : 'ok'; - var color = (fps > 50) ? 'green' : (fps < 30) ? 'red' : 'gray'; - value.innerHTML = ok; - value.style.color = color; - msg.style.borderColor = color; - }, 5000); - return result; - }, - - //--------------------------------------------------------------------------- - - playMusic: function() { - var music = Dom.get('music'); - music.loop = true; - music.volume = 0.05; // shhhh! annoying music! - music.muted = (Dom.storage.muted === "true"); - music.play(); - Dom.toggleClassName('mute', 'on', music.muted); - Dom.on('mute', 'click', function() { - Dom.storage.muted = music.muted = !music.muted; - Dom.toggleClassName('mute', 'on', music.muted); - }); - } - -} - -//========================================================================= -// canvas rendering helpers -//========================================================================= - -var Render = { - - polygon: function(ctx, x1, y1, x2, y2, x3, y3, x4, y4, color) { - ctx.fillStyle = color; - ctx.beginPath(); - ctx.moveTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.lineTo(x3, y3); - ctx.lineTo(x4, y4); - ctx.closePath(); - ctx.fill(); - }, - - //--------------------------------------------------------------------------- - - segment: function(ctx, width, lanes, x1, y1, w1, x2, y2, w2, fog, color) { - - var r1 = Render.rumbleWidth(w1, lanes), - r2 = Render.rumbleWidth(w2, lanes), - l1 = Render.laneMarkerWidth(w1, lanes), - l2 = Render.laneMarkerWidth(w2, lanes), - lanew1, lanew2, lanex1, lanex2, lane; - - ctx.fillStyle = color.grass; - ctx.fillRect(0, y2, width, y1 - y2); - - Render.polygon(ctx, x1-w1-r1, y1, x1-w1, y1, x2-w2, y2, x2-w2-r2, y2, color.rumble); - Render.polygon(ctx, x1+w1+r1, y1, x1+w1, y1, x2+w2, y2, x2+w2+r2, y2, color.rumble); - Render.polygon(ctx, x1-w1, y1, x1+w1, y1, x2+w2, y2, x2-w2, y2, color.road); - - if (color.lane) { - lanew1 = w1*2/lanes; - lanew2 = w2*2/lanes; - lanex1 = x1 - w1 + lanew1; - lanex2 = x2 - w2 + lanew2; - for(lane = 1 ; lane < lanes ; lanex1 += lanew1, lanex2 += lanew2, lane++) - Render.polygon(ctx, lanex1 - l1/2, y1, lanex1 + l1/2, y1, lanex2 + l2/2, y2, lanex2 - l2/2, y2, color.lane); - } - - Render.fog(ctx, 0, y1, width, y2-y1, fog); - }, - - //--------------------------------------------------------------------------- - - background: function(ctx, background, width, height, layer, rotation, offset) { - - rotation = rotation || 0; - offset = offset || 0; - - var imageW = layer.w/2; - var imageH = layer.h; - - var sourceX = layer.x + Math.floor(layer.w * rotation); - var sourceY = layer.y - var sourceW = Math.min(imageW, layer.x+layer.w-sourceX); - var sourceH = imageH; - - var destX = 0; - var destY = offset; - var destW = Math.floor(width * (sourceW/imageW)); - var destH = height; - - ctx.drawImage(background, sourceX, sourceY, sourceW, sourceH, destX, destY, destW, destH); - if (sourceW < imageW) - ctx.drawImage(background, layer.x, sourceY, imageW-sourceW, sourceH, destW-1, destY, width-destW, destH); - }, - - //--------------------------------------------------------------------------- - - sprite: function(ctx, width, height, resolution, roadWidth, sprites, sprite, scale, destX, destY, offsetX, offsetY, clipY) { - - // scale for projection AND relative to roadWidth (for tweakUI) - var destW = (sprite.w * scale * width/2) * (SPRITES.SCALE * roadWidth); - var destH = (sprite.h * scale * width/2) * (SPRITES.SCALE * roadWidth); - - destX = destX + (destW * (offsetX || 0)); - destY = destY + (destH * (offsetY || 0)); - - var clipH = clipY ? Math.max(0, destY+destH-clipY) : 0; - if (clipH < destH) - ctx.drawImage(sprites, sprite.x, sprite.y, sprite.w, sprite.h - (sprite.h*clipH/destH), destX, destY, destW, destH - clipH); - - }, - - //--------------------------------------------------------------------------- - - player: function(ctx, width, height, resolution, roadWidth, sprites, speedPercent, scale, destX, destY, steer, updown) { - - var bounce = (1.5 * Math.random() * speedPercent * resolution) * Util.randomChoice([-1,1]); - var sprite; - if (steer < 0) - sprite = (updown > 0) ? SPRITES.PLAYER_UPHILL_LEFT : SPRITES.PLAYER_LEFT; - else if (steer > 0) - sprite = (updown > 0) ? SPRITES.PLAYER_UPHILL_RIGHT : SPRITES.PLAYER_RIGHT; - else - sprite = (updown > 0) ? SPRITES.PLAYER_UPHILL_STRAIGHT : SPRITES.PLAYER_STRAIGHT; - - Render.sprite(ctx, width, height, resolution, roadWidth, sprites, sprite, scale, destX, destY + bounce, -0.5, -1); - }, - - //--------------------------------------------------------------------------- - - fog: function(ctx, x, y, width, height, fog) { - if (fog < 1) { - ctx.globalAlpha = (1-fog) - ctx.fillStyle = COLORS.FOG; - ctx.fillRect(x, y, width, height); - ctx.globalAlpha = 1; - } - }, - - rumbleWidth: function(projectedRoadWidth, lanes) { return projectedRoadWidth/Math.max(6, 2*lanes); }, - laneMarkerWidth: function(projectedRoadWidth, lanes) { return projectedRoadWidth/Math.max(32, 8*lanes); } - -} - -//============================================================================= -// RACING GAME CONSTANTS -//============================================================================= - -var KEY = { - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - A: 65, - D: 68, - S: 83, - W: 87 -}; - -var COLORS = { - SKY: '#72D7EE', - TREE: '#005108', - FOG: '#005108', - LIGHT: { road: '#6B6B6B', grass: '#10AA10', rumble: '#555555', lane: '#CCCCCC' }, - DARK: { road: '#696969', grass: '#009A00', rumble: '#BBBBBB' }, - START: { road: 'white', grass: 'white', rumble: 'white' }, - FINISH: { road: 'black', grass: 'black', rumble: 'black' } -}; - -var BACKGROUND = { - HILLS: { x: 5, y: 5, w: 1280, h: 480 }, - SKY: { x: 5, y: 495, w: 1280, h: 480 }, - TREES: { x: 5, y: 985, w: 1280, h: 480 } -}; - -var SPRITES = { - PALM_TREE: { x: 5, y: 5, w: 215, h: 540 }, - BILLBOARD08: { x: 230, y: 5, w: 385, h: 265 }, - TREE1: { x: 625, y: 5, w: 360, h: 360 }, - DEAD_TREE1: { x: 5, y: 555, w: 135, h: 332 }, - BILLBOARD09: { x: 150, y: 555, w: 328, h: 282 }, - BOULDER3: { x: 230, y: 280, w: 320, h: 220 }, - COLUMN: { x: 995, y: 5, w: 200, h: 315 }, - BILLBOARD01: { x: 625, y: 375, w: 300, h: 170 }, - BILLBOARD06: { x: 488, y: 555, w: 298, h: 190 }, - BILLBOARD05: { x: 5, y: 897, w: 298, h: 190 }, - BILLBOARD07: { x: 313, y: 897, w: 298, h: 190 }, - BOULDER2: { x: 621, y: 897, w: 298, h: 140 }, - TREE2: { x: 1205, y: 5, w: 282, h: 295 }, - BILLBOARD04: { x: 1205, y: 310, w: 268, h: 170 }, - DEAD_TREE2: { x: 1205, y: 490, w: 150, h: 260 }, - BOULDER1: { x: 1205, y: 760, w: 168, h: 248 }, - BUSH1: { x: 5, y: 1097, w: 240, h: 155 }, - CACTUS: { x: 929, y: 897, w: 235, h: 118 }, - BUSH2: { x: 255, y: 1097, w: 232, h: 152 }, - BILLBOARD03: { x: 5, y: 1262, w: 230, h: 220 }, - BILLBOARD02: { x: 245, y: 1262, w: 215, h: 220 }, - STUMP: { x: 995, y: 330, w: 195, h: 140 }, - SEMI: { x: 1365, y: 490, w: 122, h: 144 }, - TRUCK: { x: 1365, y: 644, w: 100, h: 78 }, - CAR03: { x: 1383, y: 760, w: 88, h: 55 }, - CAR02: { x: 1383, y: 825, w: 80, h: 59 }, - CAR04: { x: 1383, y: 894, w: 80, h: 57 }, - CAR01: { x: 1205, y: 1018, w: 80, h: 56 }, - PLAYER_UPHILL_LEFT: { x: 1383, y: 961, w: 80, h: 45 }, - PLAYER_UPHILL_STRAIGHT: { x: 1295, y: 1018, w: 80, h: 45 }, - PLAYER_UPHILL_RIGHT: { x: 1385, y: 1018, w: 80, h: 45 }, - PLAYER_LEFT: { x: 995, y: 480, w: 80, h: 41 }, - PLAYER_STRAIGHT: { x: 1085, y: 480, w: 80, h: 41 }, - PLAYER_RIGHT: { x: 995, y: 531, w: 80, h: 41 } -}; - -SPRITES.SCALE = 0.3 * (1/SPRITES.PLAYER_STRAIGHT.w) // the reference sprite width should be 1/3rd the (half-)roadWidth - -SPRITES.BILLBOARDS = [SPRITES.BILLBOARD01, SPRITES.BILLBOARD02, SPRITES.BILLBOARD03, SPRITES.BILLBOARD04, SPRITES.BILLBOARD05, SPRITES.BILLBOARD06, SPRITES.BILLBOARD07, SPRITES.BILLBOARD08, SPRITES.BILLBOARD09]; -SPRITES.PLANTS = [SPRITES.TREE1, SPRITES.TREE2, SPRITES.DEAD_TREE1, SPRITES.DEAD_TREE2, SPRITES.PALM_TREE, SPRITES.BUSH1, SPRITES.BUSH2, SPRITES.CACTUS, SPRITES.STUMP, SPRITES.BOULDER1, SPRITES.BOULDER2, SPRITES.BOULDER3]; -SPRITES.CARS = [SPRITES.CAR01, SPRITES.CAR02, SPRITES.CAR03, SPRITES.CAR04, SPRITES.SEMI, SPRITES.TRUCK]; - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/background.js b/game/love_src/asset/image/sample/javascript-racer-master/images/background.js deleted file mode 100644 index cae8fa6..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/images/background.js +++ /dev/null @@ -1,5 +0,0 @@ -var BACKGROUND = { - HILLS: { x: 5, y: 5, w: 1280, h: 480 }, - SKY: { x: 5, y: 495, w: 1280, h: 480 }, - TREES: { x: 5, y: 985, w: 1280, h: 480 } -}; diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/background.png b/game/love_src/asset/image/sample/javascript-racer-master/images/background.png deleted file mode 100644 index 6590b02..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/background.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/background/background.svg b/game/love_src/asset/image/sample/javascript-racer-master/images/background/background.svg deleted file mode 100644 index 0bbcd8d..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/images/background/background.svg +++ /dev/null @@ -1,1921 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/background/hills.png b/game/love_src/asset/image/sample/javascript-racer-master/images/background/hills.png deleted file mode 100644 index f1d2be5..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/background/hills.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/background/sky.png b/game/love_src/asset/image/sample/javascript-racer-master/images/background/sky.png deleted file mode 100644 index 26c332d..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/background/sky.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/background/trees.png b/game/love_src/asset/image/sample/javascript-racer-master/images/background/trees.png deleted file mode 100644 index 57fb422..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/background/trees.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/mute.png b/game/love_src/asset/image/sample/javascript-racer-master/images/mute.png deleted file mode 100644 index 5ee7f91..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/mute.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites.js b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites.js deleted file mode 100644 index 2cd9324..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites.js +++ /dev/null @@ -1,36 +0,0 @@ -var SPRITES = { - PALM_TREE: { x: 5, y: 5, w: 215, h: 540 }, - BILLBOARD08: { x: 230, y: 5, w: 385, h: 265 }, - TREE1: { x: 625, y: 5, w: 360, h: 360 }, - DEAD_TREE1: { x: 5, y: 555, w: 135, h: 332 }, - BILLBOARD09: { x: 150, y: 555, w: 328, h: 282 }, - BOULDER3: { x: 230, y: 280, w: 320, h: 220 }, - COLUMN: { x: 995, y: 5, w: 200, h: 315 }, - BILLBOARD01: { x: 625, y: 375, w: 300, h: 170 }, - BILLBOARD06: { x: 488, y: 555, w: 298, h: 190 }, - BILLBOARD05: { x: 5, y: 897, w: 298, h: 190 }, - BILLBOARD07: { x: 313, y: 897, w: 298, h: 190 }, - BOULDER2: { x: 621, y: 897, w: 298, h: 140 }, - TREE2: { x: 1205, y: 5, w: 282, h: 295 }, - BILLBOARD04: { x: 1205, y: 310, w: 268, h: 170 }, - DEAD_TREE2: { x: 1205, y: 490, w: 150, h: 260 }, - BOULDER1: { x: 1205, y: 760, w: 168, h: 248 }, - BUSH1: { x: 5, y: 1097, w: 240, h: 155 }, - CACTUS: { x: 929, y: 897, w: 235, h: 118 }, - BUSH2: { x: 255, y: 1097, w: 232, h: 152 }, - BILLBOARD03: { x: 5, y: 1262, w: 230, h: 220 }, - BILLBOARD02: { x: 245, y: 1262, w: 215, h: 220 }, - STUMP: { x: 995, y: 330, w: 195, h: 140 }, - SEMI: { x: 1365, y: 490, w: 122, h: 144 }, - TRUCK: { x: 1365, y: 644, w: 100, h: 78 }, - CAR03: { x: 1383, y: 760, w: 88, h: 55 }, - CAR02: { x: 1383, y: 825, w: 80, h: 59 }, - CAR04: { x: 1383, y: 894, w: 80, h: 57 }, - CAR01: { x: 1205, y: 1018, w: 80, h: 56 }, - PLAYER_UPHILL_LEFT: { x: 1383, y: 961, w: 80, h: 45 }, - PLAYER_UPHILL_STRAIGHT: { x: 1295, y: 1018, w: 80, h: 45 }, - PLAYER_UPHILL_RIGHT: { x: 1385, y: 1018, w: 80, h: 45 }, - PLAYER_LEFT: { x: 995, y: 480, w: 80, h: 41 }, - PLAYER_STRAIGHT: { x: 1085, y: 480, w: 80, h: 41 }, - PLAYER_RIGHT: { x: 995, y: 531, w: 80, h: 41 } -}; diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites.png deleted file mode 100644 index 0b302ae..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard01.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard01.png deleted file mode 100644 index 9c100cd..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard01.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard02.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard02.png deleted file mode 100644 index 1db594e..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard02.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard03.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard03.png deleted file mode 100644 index 9a43480..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard03.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard04.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard04.png deleted file mode 100644 index abfd4b1..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard04.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard05.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard05.png deleted file mode 100644 index c470e0d..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard05.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard06.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard06.png deleted file mode 100644 index 0ba9efb..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard06.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard07.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard07.png deleted file mode 100644 index 646c95b..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard07.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard08.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard08.png deleted file mode 100644 index 50f59eb..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard08.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard09.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard09.png deleted file mode 100644 index 976f6e5..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/billboard09.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder1.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder1.png deleted file mode 100644 index fe98901..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder1.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder2.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder2.png deleted file mode 100644 index 67b62f6..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder2.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder3.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder3.png deleted file mode 100644 index 637d69a..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/boulder3.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/bush1.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/bush1.png deleted file mode 100644 index b22d74d..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/bush1.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/bush2.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/bush2.png deleted file mode 100644 index 61d4b3c..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/bush2.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/cactus.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/cactus.png deleted file mode 100644 index a52df7e..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/cactus.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car01.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car01.png deleted file mode 100644 index 8efdb84..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car01.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car02.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car02.png deleted file mode 100644 index 54ab5a1..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car02.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car03.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car03.png deleted file mode 100644 index dbc629e..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car03.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car04.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car04.png deleted file mode 100644 index 611b7ab..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/car04.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png deleted file mode 100644 index 6b1e058..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/dead_tree1.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/dead_tree1.png deleted file mode 100644 index 399c9f6..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/dead_tree1.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/dead_tree2.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/dead_tree2.png deleted file mode 100644 index ad7e52e..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/dead_tree2.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/palm_tree.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/palm_tree.png deleted file mode 100644 index 8044b5c..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/palm_tree.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_left.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_left.png deleted file mode 100644 index 457d943..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_left.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_right.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_right.png deleted file mode 100644 index ca26b0a..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_right.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_straight.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_straight.png deleted file mode 100644 index ef1c8cd..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_straight.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_left.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_left.png deleted file mode 100644 index 8aaa6cf..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_left.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_right.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_right.png deleted file mode 100644 index 3e3dfdb..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_right.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_straight.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_straight.png deleted file mode 100644 index 634d7a0..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/player_uphill_straight.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/semi.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/semi.png deleted file mode 100644 index f679c1b..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/semi.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/stump.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/stump.png deleted file mode 100644 index 6319df2..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/stump.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/tree1.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/tree1.png deleted file mode 100644 index 9544094..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/tree1.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/tree2.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/tree2.png deleted file mode 100644 index d3c8a12..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/tree2.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/truck.png b/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/truck.png deleted file mode 100644 index d72b520..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/images/sprites/truck.png and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/index.html b/game/love_src/asset/image/sample/javascript-racer-master/index.html deleted file mode 100644 index e61ae58..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - Javascript Racer - - - - - - - - - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/music/racer.mp3 b/game/love_src/asset/image/sample/javascript-racer-master/music/racer.mp3 deleted file mode 100644 index 15a5c83..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/music/racer.mp3 and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/music/racer.ogg b/game/love_src/asset/image/sample/javascript-racer-master/music/racer.ogg deleted file mode 100644 index d85ddfe..0000000 Binary files a/game/love_src/asset/image/sample/javascript-racer-master/music/racer.ogg and /dev/null differ diff --git a/game/love_src/asset/image/sample/javascript-racer-master/stats.js b/game/love_src/asset/image/sample/javascript-racer-master/stats.js deleted file mode 100644 index e9fa9c6..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/stats.js +++ /dev/null @@ -1,143 +0,0 @@ -/** - * @author mrdoob / http://mrdoob.com/ - */ - -var Stats = function () { - - var startTime = Date.now(), prevTime = startTime; - var ms = 0, msMin = 1000, msMax = 0; - var fps = 0, fpsMin = 1000, fpsMax = 0; - var frames = 0, mode = 0;mode - var container = document.createElement( 'div' ); - container.id = 'stats'; - container.addEventListener( 'mousedown', function ( event ) { event.preventDefault(); setMode( ++ mode % 2 ) }, false ); - container.style.cssText = 'width:80px;opacity:0.9;cursor:pointer'; - - var fpsDiv = document.createElement( 'div' ); - fpsDiv.id = 'fps'; - fpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002'; - container.appendChild( fpsDiv ); - - var fpsText = document.createElement( 'div' ); - fpsText.id = 'fpsText'; - fpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'; - fpsText.innerHTML = 'FPS'; - fpsDiv.appendChild( fpsText ); - - var fpsGraph = document.createElement( 'div' ); - fpsGraph.id = 'fpsGraph'; - fpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff'; - fpsDiv.appendChild( fpsGraph ); - - while ( fpsGraph.children.length < 74 ) { - - var bar = document.createElement( 'span' ); - bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113'; - fpsGraph.appendChild( bar ); - - } - - var msDiv = document.createElement( 'div' ); - msDiv.id = 'ms'; - msDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none'; - container.appendChild( msDiv ); - - var msText = document.createElement( 'div' ); - msText.id = 'msText'; - msText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'; - msText.innerHTML = 'MS'; - msDiv.appendChild( msText ); - - var msGraph = document.createElement( 'div' ); - msGraph.id = 'msGraph'; - msGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0'; - msDiv.appendChild( msGraph ); - - while ( msGraph.children.length < 74 ) { - - var bar = document.createElement( 'span' ); - bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131'; - msGraph.appendChild( bar ); - - } - - var setMode = function ( value ) { - - mode = value; - - switch ( mode ) { - - case 0: - fpsDiv.style.display = 'block'; - msDiv.style.display = 'none'; - break; - case 1: - fpsDiv.style.display = 'none'; - msDiv.style.display = 'block'; - break; - } - - } - - var updateGraph = function ( dom, value ) { - - var child = dom.appendChild( dom.firstChild ); - child.style.height = value + 'px'; - - } - - return { - - domElement: container, - - setMode: setMode, - - current: function() { return fps; }, - - begin: function () { - - startTime = Date.now(); - - }, - - end: function () { - - var time = Date.now(); - - ms = time - startTime; - msMin = Math.min( msMin, ms ); - msMax = Math.max( msMax, ms ); - - msText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')'; - updateGraph( msGraph, Math.min( 30, 30 - ( ms / 200 ) * 30 ) ); - - frames ++; - - if ( time > prevTime + 1000 ) { - - fps = Math.round( ( frames * 1000 ) / ( time - prevTime ) ); - fpsMin = Math.min( fpsMin, fps ); - fpsMax = Math.max( fpsMax, fps ); - - fpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')'; - updateGraph( fpsGraph, Math.min( 30, 30 - ( fps / 100 ) * 30 ) ); - - prevTime = time; - frames = 0; - - } - - return time; - - }, - - update: function () { - - startTime = this.end(); - - } - - } - -}; - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/v1.straight.html b/game/love_src/asset/image/sample/javascript-racer-master/v1.straight.html deleted file mode 100644 index 112a7b0..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/v1.straight.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - Javascript Racer - v1 (straight) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- straight | - curves | - hills | - final -
- -
- -
- -
-

Use the arrow keys to drive the car.

-
- -
- - Sorry, this example cannot be run because your browser does not support the <canvas> element - - Loading... -
- - - - - - - - - - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/v2.curves.html b/game/love_src/asset/image/sample/javascript-racer-master/v2.curves.html deleted file mode 100644 index 0ef0915..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/v2.curves.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - - Javascript Racer - v2 (curves) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- straight | - curves | - hills | - final -
- -
- -
- -
-

Use the arrow keys to drive the car.

-
- -
- - Sorry, this example cannot be run because your browser does not support the <canvas> element - - Loading... -
- - - - - - - - - - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/v3.hills.html b/game/love_src/asset/image/sample/javascript-racer-master/v3.hills.html deleted file mode 100644 index 1881035..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/v3.hills.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - - Javascript Racer - v3 (hills) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- straight | - curves | - hills | - final -
- -
- -
- -
-

Use the arrow keys to drive the car.

-
- -
- - Sorry, this example cannot be run because your browser does not support the <canvas> element - - Loading... -
- - - - - - - - - diff --git a/game/love_src/asset/image/sample/javascript-racer-master/v4.final.html b/game/love_src/asset/image/sample/javascript-racer-master/v4.final.html deleted file mode 100644 index 81d6935..0000000 --- a/game/love_src/asset/image/sample/javascript-racer-master/v4.final.html +++ /dev/null @@ -1,688 +0,0 @@ - - - - - Javascript Racer - v4 (final) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- straight | - curves | - hills | - final -
- -
- -
- -
-

Use the arrow keys to drive the car.

-
- -
-
- 0 mph - Time: 0.0 - Last Lap: 0.0 - Fastest Lap: 0.0 -
- - Sorry, this example cannot be run because your browser does not support the <canvas> element - - Loading... -
- - - - - - - - - - diff --git a/game/love_src/asset/video/1_intro.ogv b/game/love_src/asset/video/1_intro.ogv deleted file mode 100644 index f79380d..0000000 Binary files a/game/love_src/asset/video/1_intro.ogv and /dev/null differ diff --git a/game/love_src/data/character/light_novel.lua b/game/love_src/data/character/light_novel.lua deleted file mode 100644 index b30bcbd..0000000 --- a/game/love_src/data/character/light_novel.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { - -} diff --git a/game/love_src/data/map/segment.json b/game/love_src/data/map/segment.json deleted file mode 100644 index b34da57..0000000 --- a/game/love_src/data/map/segment.json +++ /dev/null @@ -1,82 +0,0 @@ -[ - { - "enter": 1, - "hold" : 1, - "leave": 90, - "curve": 9, - "height": 80, - "width" : 3000 - }, - { - "enter": 25, - "hold" : 25, - "leave": 25, - "curve": 0, - "height": 0, - "width" : 1000 - }, - { - "enter": 50, - "hold" : 50, - "leave": 50, - "curve": 2, - "height": 0, - "width" : 2000 - }, - { - "enter": 50, - "hold" : 50, - "leave": 50, - "curve": 2, - "height": 20, - "width" : 2000 - }, - { - "enter": 100, - "hold" : 100, - "leave": 100, - "curve": 4, - "height": 40, - "width" : 4000 - }, - { - "enter": 50, - "hold" : 50, - "leave": 50, - "curve": 0, - "height": 0, - "width" : 1000 - }, - { - "enter": 50, - "hold" : 50, - "leave": 50, - "curve": 6, - "height": 60, - "width" : 3000 - }, - { - "enter": 50, - "hold" : 50, - "leave": 50, - "curve": 0, - "height": 60, - "width" : 2000 - }, - { - "enter": 50, - "hold" : 50, - "leave": 50, - "curve": 0, - "height": 20, - "width" : 3000 - }, - { - "enter": 100, - "hold" : 100, - "leave": 100, - "curve": 0, - "height": -280, - "width" : 4000 - } -] diff --git a/game/love_src/data/map/sprites.json b/game/love_src/data/map/sprites.json deleted file mode 100644 index b89a207..0000000 --- a/game/love_src/data/map/sprites.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "index" : 200, - "texture" : "love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png", - "offset" : -0.1 - }, - { - "index" : 200, - "texture" : "love_src/asset/image/sample/javascript-racer-master/images/sprites/cactus.png", - "offset" : 4 - }, - { - "index" : 150, - "texture" : "love_src/asset/image/sample/javascript-racer-master/images/sprites/stump.png", - "offset" : 0 - } -] diff --git a/game/love_src/src/entities/racing/racer.lua b/game/love_src/src/entities/racing/racer.lua deleted file mode 100644 index ec25927..0000000 --- a/game/love_src/src/entities/racing/racer.lua +++ /dev/null @@ -1,55 +0,0 @@ -local racing = require("love_src.src.system.racing_phy") - -local entity = {} - -entity.__index = entity - -function entity.load(actor, finish) - local self = setmetatable({}, entity) - self.data = { - pos = {0, 100, 0}, - color = {255/255, 255/255, 255/255}, - - actor = actor, - - race = { - speed = 0.0, - accel = 10.0, - }, - - finish = finish - } - return self -end - -function entity:update(dt) - if (self.data.pos[1] > self.data.finish[1]) then - self.data.pos[1] = 0 - self.data.race.speed = 0 - self.data.race.accel = 10.0 - end - self.data.race.speed = racing.accelerate(dt, 1, self.data.race.speed, self.data.actor.data.max_speed, self.data.race.accel) - -- self:accel(dt) - self.data.pos[1] = self.data.pos[1] + self.data.race.speed * dt -end - --- function entity:accel(dt) --- if (self.data.current_accel <= self.data.actor.data.accel) then --- self.data.current_accel = self.data.current_accel + dt --- end --- if (self.data.current_speed <= self.data.actor.data.max_speed) then --- self.data.current_speed = self.data.current_speed + self.data.current_accel * dt --- end --- end - -function entity:draw() - love.graphics.push() - love.graphics.setColor(self.data.color[1], self.data.color[2], self.data.color[3]) - love.graphics.points(self.data.pos[1], self.data.pos[2]) - love.graphics.print(self.data.race.speed, self.data.pos[1], self.data.pos[2]) - -- love.graphics.print(string.format("Current Accel : %s", self.data.current_accel), 0, 40) - love.graphics.pop() - self.data.actor:draw() -end - -return entity diff --git a/game/love_src/src/entities/raising/trainee.lua b/game/love_src/src/entities/raising/trainee.lua deleted file mode 100644 index c7f8cb1..0000000 --- a/game/love_src/src/entities/raising/trainee.lua +++ /dev/null @@ -1,41 +0,0 @@ -local entity = {} - -entity.__index = entity - -function entity.load(actor) - local self = setmetatable({}, entity) - self.data = { - actor = actor, - - increase_max_speed = 1, - increase_accel = 1 - } - return self -end - -function entity:update(dt) - -end - -function entity:draw() - love.graphics.push() - love.graphics.print(string.format("[(a)-Max Speed+(d)] : %s", self.data.increase_max_speed), 0, 40) - love.graphics.print(string.format("[(q)-Accel+(e)] : %s", self.data.increase_accel), 0, 60) - love.graphics.pop() - self.data.actor:draw() -end - -function entity:keyreleased(key, scancode) - if (key == "a") then - self.data.actor.data.max_speed = self.data.actor.data.max_speed - self.data.increase_max_speed - elseif (key == "d") then - self.data.actor.data.max_speed = self.data.actor.data.max_speed + self.data.increase_max_speed - elseif (key == "q") then - self.data.actor.data.accel = self.data.actor.data.accel - self.data.increase_accel - elseif (key == "e") then - self.data.actor.data.accel = self.data.actor.data.accel + self.data.increase_accel - end -end - - -return entity diff --git a/game/love_src/src/entities/shared/actor.lua b/game/love_src/src/entities/shared/actor.lua deleted file mode 100644 index 075c1d3..0000000 --- a/game/love_src/src/entities/shared/actor.lua +++ /dev/null @@ -1,37 +0,0 @@ -local entity = {} - -entity.__index = entity - -_data = { - name = "p1", - - max_speed = 100.0, - accel = 2.0, - grip = 2.0, - brake = 2.0, - - ui = {0, 0} -} - -function entity.load(data) - local self = setmetatable({}, entity) - self.data = data or _data - return self -end - -function entity:update(dt) -end - -function entity:draw() - love.graphics.push() - love.graphics.print(string.format("Name : %s", self.data.name, self.data.ui[1], self.data.ui[2])) - love.graphics.print(string.format("Max Speed : %s", self.data.max_speed), self.data.ui[1], self.data.ui[2] + 20) - love.graphics.print(string.format("Accel : %s", self.data.accel),self.data.ui[1], self.data.ui[2] + 40) - love.graphics.print(string.format("Grip : %s", self.data.grip), self.data.ui[1], self.data.ui[2] + 60) - love.graphics.print(string.format("Brake : %s", self.data.brake), self.data.ui[1], self.data.ui[2] + 80) - love.graphics.pop() -end - - - -return entity diff --git a/game/love_src/src/modes/mode.lua b/game/love_src/src/modes/mode.lua deleted file mode 100644 index 52cc2da..0000000 --- a/game/love_src/src/modes/mode.lua +++ /dev/null @@ -1,24 +0,0 @@ -local mode = {} - - -function mode.load(player) - -end - -function mode.update(dt) -end - -function mode.draw() -end - -function mode.keyreleased(key, scancode) -end - -function mode.keypressed(key, scancode, isrepeat) -end - -function mode.mousereleased(x, y, button, istouch, presses) -end - - -return mode diff --git a/game/love_src/src/modes/racing.lua b/game/love_src/src/modes/racing.lua deleted file mode 100644 index e02b05b..0000000 --- a/game/love_src/src/modes/racing.lua +++ /dev/null @@ -1,80 +0,0 @@ -local slick = require("love_src.lib.slick") - -local racer = require("love_src.src.entities.racing.racer") -local player = require("love_src.src.entities.shared.actor").load() - -local mode = {} - -local finish = {100, 100, 0} - -local time = 0 - - -local w, h = 800, 600 - -function mode:load() - self.entities = {} - self.level = {} - self.world = slick.newWorld(w, h, { - quadTreeX = 0, - quadTreeY = 0 - }) - - local new_racer = racer.load(player, finish) - - self.world:add(new_racer, 200, 500, slick.newCircleShape(0, 0, 16)) - - table.insert(self.entities, new_racer) - - self.world:add(self.level, 0, 0, slick.newShapeGroup( - -- Boxes surrounding the map - slick.newRectangleShape(0, 0, w, 8), -- top - slick.newRectangleShape(0, 0, 8, h), -- left - slick.newRectangleShape(w - 8, 0, 8, h), -- right - slick.newRectangleShape(0, h - 8, w, 8), -- bottom - -- Triangles in corners - slick.newPolygonShape({ 8, h - h / 8, w / 4, h - 8, 8, h - 8 }), - slick.newPolygonShape({ w - w / 4, h, w - 8, h / 2, w - 8, h }), - -- Convex shape - slick.newPolygonMeshShape({ w / 2 + w / 4, h / 4, w / 2 + w / 4 + w / 8, h / 4 + h / 8, w / 2 + w / 4, h / 4 + h / 4, w / 2 + w / 4 + w / 16, h / 4 + h / 8 }) - )) -end - -local function movePlayer(p, dt) - local goalX, goalY = p.x + dt * p.velocityX, p.y + dt * p.velocityY - p.x, p.y = world:move(p, goalX, goalY) -end - -function mode:update(dt) - for _,e in pairs(self.entities) do - e:update(dt) - - -- local goalX, goalY = w / 2, -1000 - - -- local actualX, actualY, collisions, count = self.world:move(e, goalX, goalY, function(item, other, shape, otherShape) - -- return "slide" - -- end) - -- print(actualX, actualY) - -- movePlayer(e, dt) - end - time = time + dt -end - -function mode:draw() - for _,e in pairs(self.entities) do - e:draw() - end - slick.drawWorld(self.world) - love.graphics.print(time, love.graphics.getWidth() / 2, love.graphics.getHeight()/ 2) -end - -function mode:keyreleased(key, scancode) -end - -function mode:keypressed(key, scancode, isrepeat) -end - -function mode:mousereleased(x, y, button, istouch, presses) -end - -return mode diff --git a/game/love_src/src/modes/raising_sim.lua b/game/love_src/src/modes/raising_sim.lua deleted file mode 100644 index f9c3d17..0000000 --- a/game/love_src/src/modes/raising_sim.lua +++ /dev/null @@ -1,31 +0,0 @@ - -local trainee = require("love_src.src.entities.raising.trainee") - -local mode = {} - -local entities = {} - -function mode.load(player) - entities.trainee = trainee.load(player) -end - -function mode.update(dt) - entities.trainee:update(dt) -end - -function mode.draw() - entities.trainee:draw() -end - -function mode.keyreleased(key, scancode) - entities.trainee:keyreleased(key, scancode) -end - -function mode.keypressed(key, scancode, isrepeat) -end - -function mode.mousereleased(x, y, button, istouch, presses) -end - - -return mode diff --git a/game/love_src/src/system/racing_phy.lua b/game/love_src/src/system/racing_phy.lua deleted file mode 100644 index 25f482d..0000000 --- a/game/love_src/src/system/racing_phy.lua +++ /dev/null @@ -1,58 +0,0 @@ -local function accelerate(dt, gas_input, speed, max_speed, accel, min_speed) - if (min_speed == nil) then - min_speed = 0 - end - local new_speed = speed + accel * dt * gas_input - if (new_speed >= max_speed) then - new_speed = max_speed - elseif (new_speed <= min_speed) then - new_speed = min_speed - elseif(new_speed <= -max_speed) then - new_speed = -max_speed - end - return new_speed -end - -local function centrifugal_force(dt, mass, speed, max_speed) - local speed_percent = (speed/max_speed) - local dx = dt * 2 * speed_percent - local dy = dt * 2 * speed_percent - return mass * dy * speed * speed -end - -local function drift(dt, pos_x, pos_y, speed, max_speed, angle, scale_x, scale_y) - local speed_percent = (speed/max_speed) - local dx = dt * 2.0 * speed_percent -- at top speed, should be able to cross from left to right (-1 to 1) in 1 second - local dy = dt * 2.0 * speed_percent - cos = math.cos(angle) - sin = math.sin(angle) - - return pos_x + (dx * speed_percent * cos) * (scale_x or 1), - pos_y + (dy * speed_percent * sin) * (scale_y or 1) -end - --- local function gas(accel, drag, friction) --- friction = friction or 0 --- return accel - drag - friction --- end - --- local function brake(decel, drag, grip, friction) --- friction = friction or 0 --- return - decel - drag - grip - friction --- end - --- local function roam(decel, drag, friction) --- friction = friction or 0 --- return - decel - drag - friction --- end - --- local function steer(_steer, grip, drag, velocity, friction) --- friction = friction or 0 --- return _steer + grip + drag - velocity + friction --- end - -return { - accelerate = accelerate, - drift = drift, - centrifugal_force = centrifugal_force -} diff --git a/game/love_src/src/world/1_intro/init.lua b/game/love_src/src/world/1_intro/init.lua deleted file mode 100644 index b14ed21..0000000 --- a/game/love_src/src/world/1_intro/init.lua +++ /dev/null @@ -1,68 +0,0 @@ -local reap = require("lib.reap") - -local BASE = reap.base_path(...) - -local world = require("love_src.wrapper.Concord.world") - -local debug_entity = require("love_src.src.world.common.template.debug_entity") -local button = require("love_src.src.world.common.template.button") -local video = require("love_src.src.world.common.template.video") -local c_video = require("love_src.src.world.common.component.video") -local wm = require("world_map") - -local wrapper = world:extend() - -local function button_func() - load_world(wm["2_town_square"]) -end - -function wrapper:new() - wrapper.super.new(self, BASE, ".1_intro") -end - -function wrapper:load(_args) - wrapper.super.load(self, { - "love_src/src/world/common/system/" - }, { - { - assemblage = debug_entity.assembleDebug, - data = { - position = {0, 0}, - label = "1_intro" - } - }, - { - assemblage = button.assemble, - data = { - collider = { - x = 20, - y = 20, - w = 20, - h = 20 - }, - func = button_func, - label = "skip" - } - }, - { - assemblage = video.assemble, - data = { - path = "love_src/asset/video/1_intro.ogv" - } - } - }) -end - -function wrapper:update(dt) - wrapper.super.update(self, dt) - for k, v in pairs(self.entities) do - local c_v = v[c_video.dict.video] - if c_v ~= nil then - if (not c_v.data.video:isPlaying()) then - load_world(wm["2_town_square"]) - end - end - end -end - -return wrapper diff --git a/game/love_src/src/world/2_town_square/component/perspective.lua b/game/love_src/src/world/2_town_square/component/perspective.lua deleted file mode 100644 index 822bf08..0000000 --- a/game/love_src/src/world/2_town_square/component/perspective.lua +++ /dev/null @@ -1,69 +0,0 @@ -local components = {} - -components.dict = { - resolution = "perspective.resolution", - lanes = "perspective.lanes", - draw_distance = "perspective.draw_distance", - road_width = "perspective.road_width", - fog_density = "perspective.fog_density", - - field_of_view = "perspective.field_of_view", - camera_height = "perspective.camera_height", - - segment_length = "perspective.segment_length", - segment_count = "perspective.segment_count", - rumble_length = "perspective.rumble_length", - - segment_path = "perspective.segment_path", - segment_sprite_map_path = "perspective.segment_sprite_map_path" -} - -function components.resolution (c, x, y) - c.data = {love.graphics.getDimensions()} -end - -function components.lanes (c, x) - c.data = x -end - -function components.draw_distance (c, x) - c.data = x -end - -function components.road_width (c, x) - c.data = x -end - -function components.fog_density (c, x) - c.data = x -end - -function components.field_of_view (c, x) - c.data = x -end - -function components.camera_height (c, x) - c.data = x -end - -function components.segment_length (c, x) - c.data = x -end - -function components.segment_count (c, x) - c.data = x -end - -function components.rumble_length (c, x) - c.data = x -end - -function components.segment_path (c, x) - c.data = x -end - -function components.segment_sprite_map_path (c, x) - c.data = x -end - -return components diff --git a/game/love_src/src/world/2_town_square/component/pos3d.lua b/game/love_src/src/world/2_town_square/component/pos3d.lua deleted file mode 100644 index 4ea4347..0000000 --- a/game/love_src/src/world/2_town_square/component/pos3d.lua +++ /dev/null @@ -1,13 +0,0 @@ -local vm = require("lib.vornmath") - -local components = {} - -components.dict = { - pos = "pos3d.pos" -} - -function components.pos (c, x, y, z) - c.data = vm.vec3({x, y, z}) -end - -return components diff --git a/game/love_src/src/world/2_town_square/init.lua b/game/love_src/src/world/2_town_square/init.lua deleted file mode 100644 index 10367f4..0000000 --- a/game/love_src/src/world/2_town_square/init.lua +++ /dev/null @@ -1,37 +0,0 @@ -local reap = require("lib.reap") - -local BASE = reap.base_path(...) - -local world = require("love_src.wrapper.Concord.world") - -local debug_entity = require("love_src.src.world.common.template.debug_entity") -local road = require("love_src.src.world.2_town_square.template.road") - -local wm = require("world_map") - -local wrapper = world:extend() - -function wrapper:new() - wrapper.super.new(self, BASE, ".2_town_square") -end - -function wrapper:load(_args) - wrapper.super.load(self, { - "love_src/src/world/common/system/", - "love_src/src/world/2_town_square/system" - }, { - { - assemblage = debug_entity.assembleDebug, - data = { - position = {0, 0}, - label = "2_town_square" - } - }, - { - assemblage = road.assemble, - data = road.default_data - }, - }) -end - -return wrapper diff --git a/game/love_src/src/world/2_town_square/pseudo3d/collide.lua b/game/love_src/src/world/2_town_square/pseudo3d/collide.lua deleted file mode 100644 index adf8b3d..0000000 --- a/game/love_src/src/world/2_town_square/pseudo3d/collide.lua +++ /dev/null @@ -1,12 +0,0 @@ -local utils = {} - -function utils.overlap(x1, w1, x2, w2, percent) - local half = (percent or 1)/2; - local min1 = x1 - (w1*half); - local max1 = x1 + (w1*half); - local min2 = x2 - (w2*half); - local max2 = x2 + (w2*half); - return not ((max1 < min2) or (min1 > max2)); -end - -return utils diff --git a/game/love_src/src/world/2_town_square/pseudo3d/ease.lua b/game/love_src/src/world/2_town_square/pseudo3d/ease.lua deleted file mode 100644 index 60c2943..0000000 --- a/game/love_src/src/world/2_town_square/pseudo3d/ease.lua +++ /dev/null @@ -1,55 +0,0 @@ -local vm = require("lib.vornmath") - -local utils = {} - -function utils.easeIn(a,b,percent) - return a + (b-a)*math.pow(percent,2); -end - -function utils.easeOut(a,b,percent) - return a + (b-a)*(1-math.pow(1-percent,2)); -end - -function utils.easeInOut(a,b,percent) - return a + (b-a)*((-math.cos(percent*math.pi)/2) + 0.5); -end - -function utils.percentRemaining(n, total) - return (n%total)/total; -end - -function utils.interpolate(a, b, percent) - return a + (b-a)*percent -end - -function utils.randomInt(min, max) - return vm.round(utils.interpolate(min, max, math.random())); -end - -function utils.randomChoice(options) - return options[utils.randomInt(1, #options)] -end - -function utils.limit(value, min, max) - return math.max(min, math.min(value, max)) -end - -function utils.accelerate(v, accel, dt) - return v + (accel * dt) -end - -function utils.exponentialFog(distance, density) - return 1 / (math.exp(distance * distance * density)) -end - -function utils.increase(start, increment, max, is_loop) -- with looping - local result = start + increment - if (result > max) and is_loop then - result = 1 - elseif result <= 0 and is_loop then - result = max - 1 - end - return result -end - -return utils diff --git a/game/love_src/src/world/2_town_square/pseudo3d/render/road.lua b/game/love_src/src/world/2_town_square/pseudo3d/render/road.lua deleted file mode 100644 index ace58b7..0000000 --- a/game/love_src/src/world/2_town_square/pseudo3d/render/road.lua +++ /dev/null @@ -1,89 +0,0 @@ -local ease = require("love_src.src.world.2_town_square.pseudo3d.ease") - -local utils = {} - -local function drawQuad(slice, image, quads, x1, y1, x2, y2, w1, w2, h1, h2, sw, sh) - for i = 1, #quads do - local percent = ease.percentRemaining(i, #quads) - local destY = ease.interpolate(y1, y2, percent) - local destX = ease.interpolate(x1, x2, percent) - local destW = ease.interpolate(w1, w2, percent) - local destH = ease.interpolate(h1, h2, percent) - - if (slice == "vertical") then - love.graphics.draw(image,quads[i], - destX, destY, 0, destW / sw, 1 - ) - elseif (slice == "horizontal") then - love.graphics.draw(image,quads[i], - destX, destY, 0, 1, destH / sh - ) - end - end -end - -local function drawSection(texture, key, x1, y1, x2, y2, w1, w2, h1, h2, resolution) - local image = texture[key].image - local quads = texture[key].quads - - local sw, sh = image:getDimensions() - - if (key == "floor") then - drawQuad("vertical", image, quads, - x1, y1, - x2, y2, - w1, w2, - h1, h2, - sw, sh - ) - elseif (key == "ceil") then - drawQuad("vertical", image, quads, - x1, -y1 + resolution[2]/2, - x2, -y2 + resolution[2]/2, - w1, w2, - h1, h2, - sw, sh - ) - elseif (key == "wallL") then - drawQuad("horizontal", image, quads, - x1, -y1 + h1, - x2, -y2 + h2, - w1, w2, - h1, h2, - sw, sh - ) - elseif (key == "wallR") then - drawQuad("horizontal", image, quads, - x1 + w1, -y1, - x2 + w2, -y2, - w1, w2, - h1 + y1, - h2 + y2, - sw, sh - ) - end -end - -function utils.draw(p1screenpos, p2screenpos, p1screensize, p2screensize, texture, resolution, maxy) - local x1 = p1screenpos[1] - local y1 = p1screenpos[2] - local x2 = p2screenpos[1] - local y2 = p2screenpos[2] - - local w1 = p1screensize[1] - local w2 = p2screensize[1] - - local h1 = (y1) - local h2 = (y2) - - local x1e = x1 + w1 - local x2e = x2 + w2 - - drawSection(texture, "wallL", x1 , y1, x2, y2, w1, w2, h1, h2, resolution) - drawSection(texture, "wallR", x1 , y1, x2, y2, w1, w2, h1, h2, resolution) - drawSection(texture, "floor", x1 , y1, x2, y2, w1, w2, h1, h2, resolution) - drawSection(texture, "ceil", x1 , y1, x2, y2, w1, w2, h1, h2, resolution) - -end - -return utils diff --git a/game/love_src/src/world/2_town_square/pseudo3d/render/sprite.lua b/game/love_src/src/world/2_town_square/pseudo3d/render/sprite.lua deleted file mode 100644 index 43409dc..0000000 --- a/game/love_src/src/world/2_town_square/pseudo3d/render/sprite.lua +++ /dev/null @@ -1,72 +0,0 @@ -local projection = require("lib.choro.projection") - -local UV = require("engine.utils.obj3d.texture.uv") -local quadToUV = UV.quadToUV -local imageToUV = UV.imageToUV - -local QuadCache = require("engine.cache.loveapi.quadcache").obj - -local utils = {} - -function utils.drawstatic(segment, roadWidth, resolution) - -- render roadside sprites - local w2 = resolution[1]/2 - for i = 1, #segment.sprites do - local sprite = segment.sprites[i].source; - local spriteoffset = segment.sprites[i].offset; - - local spritePath = segment.sprites[i].data.path; - local spriteType = segment.sprites[i].data.type; - local spriteState = segment.sprites[i].data.state; - - local quad - local img - if (spriteType == "aseprite") then - img = sprite.image - quad = sprite.frame.quad - else - img = sprite - quad = QuadCache:load(spritePath, 0, 0, 1, 1, img:getWidth(), img:getHeight(), spriteType) - end - - local u, v, nu, nv = quadToUV(quad) - - local spriteScale = segment.p1.screen.scale; - local spriteX = segment.p1.screen.pos.x + (spriteScale * spriteoffset * roadWidth * w2); - local spriteY = segment.p1.screen.pos.y; - - local offsetX - if (spriteoffset < 0) then - offsetX = -1 - else - offsetX = 0 - end - local offsetY = -1 - - -- scale for projection AND relative to roadWidth (for tweakUI) - local destW = (img:getWidth() * spriteScale * w2) * (projection.getSpriteScale(resolution[1]/3) * roadWidth); - local destH = (img:getHeight() * spriteScale * w2) * (projection.getSpriteScale(resolution[1]/3) * roadWidth); - - local destX = spriteX + (destW * (offsetX or 0)); - local destY = spriteY + (destH * (offsetY or 0)); - - local clipH = 0; - if (segment.clip) then - clipH = math.max(0, destY+destH-segment.clip) - end - - if (clipH < destH) then - local _nv = nv - (nv * clipH/destH) - - local _destH = destH - clipH - - local _quad = quad - if (_nv ~= nv) then - _quad = QuadCache:load(spritePath, u, v, nu, _nv, img:getWidth(), img:getHeight(), spriteType, spriteState) - end - love.graphics.draw(img, _quad, destX, destY, 0, destW, _destH) - end - end -end - -return utils diff --git a/game/love_src/src/world/2_town_square/pseudo3d/render/uv.lua b/game/love_src/src/world/2_town_square/pseudo3d/render/uv.lua deleted file mode 100644 index 70546b9..0000000 --- a/game/love_src/src/world/2_town_square/pseudo3d/render/uv.lua +++ /dev/null @@ -1,37 +0,0 @@ ---- get texture UV ----@param x number y ----@param y number x ----@param frameSizeX number size Frame X ----@param frameSizeY number size Frame Y ----@param sw number size Width ----@param sh number size Height ----@return number, number, number, number -local function getUV(x, y, frameSizeX, frameSizeY, sw, sh) - return - x / sw, - y / sh, - (x + 1 * frameSizeX) / sw, - (y + 1 * frameSizeY) / sh -end - ---- get uv from quad ----@param quad love.Quad -local function quadToUV(quad) - local sw, sh = quad:getTextureDimensions() - local x, y, w, h = quad:getViewport() - local u, v, nu, nv = getUV(x, y, w, h, sw, sh) - return u, v, nu, nv -end - ---- get uv from image ----@param image love.Image -local function imageToUV(image) - local u, v, nu, nv = getUV(0, 0, image:getWidth(), image:getHeight(),image:getWidth(), image:getHeight()) - return u, v, nu, nv -end - -return { - getUV = getUV, - imageToUV = imageToUV, - quadToUV = quadToUV -} diff --git a/game/love_src/src/world/2_town_square/pseudo3d/roadsegment.lua b/game/love_src/src/world/2_town_square/pseudo3d/roadsegment.lua deleted file mode 100644 index f34775e..0000000 --- a/game/love_src/src/world/2_town_square/pseudo3d/roadsegment.lua +++ /dev/null @@ -1,332 +0,0 @@ -local reap = require("lib.reap") - -local BASE = reap.base_path(...) - -local easeFN = require(BASE .. ".ease") -local json = require("lib.json") -local QuadCache = require("love_src.wrapper.lappy.new.quad").obj -local ImageCache = require("love_src.wrapper.lappy.new.image").obj - -local utils = {} - -local function loadJSON(path) - local data = json.decode(love.filesystem.read(path)) - return data -end - -local ROAD = { - LENGTH= { NONE= 0, SHORT= 25, MEDIUM= 50, LONG= 100 }, -- num segments - HILL= { NONE= 0, LOW= 20, MEDIUM= 40, HIGH= 60 }, - CURVE= { NONE= 0, EASY= 2, MEDIUM= 4, HARD= 6 } -}; - --- function utils.getRumbleColor(index, rumbleLength) --- local colorDark = hex2color("#1a1d33") --- local colorBright = hex2color("#c8d0fa") --- if (math.floor(index/rumbleLength)%2 == 0) then --- return colorBright --- else --- return colorDark --- end --- end - --- function utils.getFinishStartColor() --- local colorDark = hex2color("#CCFFCC") --- local colorBright = hex2color("#FFCCFF") - --- return colorDark, colorBright --- end - -local function lastY(segments) - if (#segments == 0) then - return 0 - else - return segments[#segments].p2.world.y - end -end - -local function lastWidth(segments, fallback) - if (#segments == 0) then - return fallback - else - return segments[#segments].p2.world.w - end -end - -function utils.findSegment(zPosition, segments, segmentLength) - local index = (math.floor(zPosition/segmentLength) % #segments) + 1 - if (index >= #segments) then - index = #segments - end - return segments[index]; -end - ---- add quad and image ----@param path string ----@param slice "horizontal" | "vertical" ----@param w1 number ----@param w2 number -function utils.addQuads(path, slice, w1, w2) - local image = ImageCache:load_to(path, path) - - local sw, sh = image:getDimensions() - - local quads = {} - if (slice == "vertical") then - for i = 0, sh - 1 do - local percent = easeFN.percentRemaining(i, sh - 1) - local destW = easeFN.interpolate(w1, w2, percent) - table.insert(quads, - QuadCache:load_to(string.format("%s_%s_%s_%s_%s_%s_%s", - path, 0, i, sw, 1, sw, sh), - 0, i, sw, 1, sw, sh) - ) - end - elseif (slice == "horizontal") then - for i = 0, sw - 1 do - local percent = easeFN.percentRemaining(i, sw - 1) - local destH = easeFN.interpolate(w1, w2, percent) - table.insert(quads, - QuadCache:load_to( - string.format("%s_%s_%s_%s_%s_%s_%s", - path, i, 0, 1, sh, sw, sh), - i, 0, 1, sh, sw, sh) - ) - end - end - return quads, image -end - ---- add new segment to segments ----@param segments any ----@param segmentLength number z coord length ----@param rumbleLength number for debug purpose only ----@param curve number curve degree ----@param y number height ----@param width number ----@return table segment it's basically part that are drawn -function utils.addSegment(segments, segmentLength, rumbleLength, curve, y, width) - local index = #segments - - local w1 = lastWidth(segments, width) - local w2 = width - - local y1 = lastY(segments) - local y2 = y - - local fQuads, fImage = utils.addQuads("love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png", "vertical", w1, w2) - local cQuads, cImage = utils.addQuads("love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png", "vertical", w1, w2) - - local lQuads, lImage = utils.addQuads("love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png", "horizontal", y1, y2) - local rQuads, rImage = utils.addQuads("love_src/asset/image/sample/javascript-racer-master/images/sprites/column.png", "horizontal", y1, y2) - - return { - --- index for seeking - index= index + 1, - --- part 1 start - p1 = { - world = - { - w = w1, - y = y1, - z = index * segmentLength, - }, - camera = {}, - screen = {} - }, - --- part 2 end - p2 = { - world = { - w = w2, - y = y2, - z = (index+1)* segmentLength, - }, - camera = {}, - screen = {} - }, - --- curve to follow along - curve = curve, - sprites= {}, - ---p1 -> p2 quads - texture = { - floor = { - image = fImage, - quads = fQuads - }, - ceil = { - image = cImage, - quads = cQuads - }, - wallL = { - image = lImage, - quads = lQuads - }, - wallR = { - image = rImage, - quads = rQuads - }, - } - } -end - -function utils.addRoad(segments, segmentLength, rumbleLength, enter, hold, leave, curve, y, roadWidth) - local startY = lastY(segments); - local endY = startY + ((y or 0) * segmentLength); - - local startWidth = lastWidth(segments, (roadWidth or 0)); - local endWidth = (roadWidth or 0) - - local total = enter + hold + leave; - for n = 1, enter do - table.insert( - segments, - utils.addSegment( - segments, - segmentLength, - rumbleLength, - easeFN.easeIn(0, curve, n/enter), - easeFN.easeInOut(startY, endY, n/total), - easeFN.easeInOut(startWidth, endWidth, n/total) - ) - ) - end - for n = 1, hold do - table.insert( - segments, - utils.addSegment( - segments, - segmentLength, - rumbleLength, - curve, - easeFN.easeInOut(startY, endY, (enter + n)/total), - easeFN.easeInOut(startWidth, endWidth, (enter + n)/total) - ) - ) - end - for n = 1, leave do - table.insert( - segments, - utils.addSegment( - segments, - segmentLength, - rumbleLength, - easeFN.easeInOut(curve, 0, n/leave), - easeFN.easeInOut(startY, endY, (enter+hold+n)/total), - easeFN.easeInOut(startWidth, endWidth, (enter + hold + n)/total) - ) - ) - end - return segments -end - -function utils.addStraight(segments, segmentLength, rumbleLength, num) - num = num or ROAD.LENGTH.MEDIUM; - return utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, 2000); -end - -function utils.addHill(segments, segmentLength, rumbleLength, num, height) - num = num or ROAD.LENGTH.MEDIUM; - height = height or ROAD.HILL.MEDIUM; - return utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, height, 2000); -end - -function utils.addCurve(segments, segmentLength, rumbleLength, num, curve, height) - num = num or ROAD.LENGTH.MEDIUM; - curve = curve or ROAD.CURVE.MEDIUM; - height = height or ROAD.HILL.NONE; - return utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, curve, height, 2000); -end - -function utils.addLowRollingHills(segments, segmentLength, rumbleLength, num, height) - num = num or ROAD.LENGTH.SHORT; - height = height or ROAD.HILL.LOW; - utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, height/2, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, -height, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, height, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, 0, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, height/2, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, 0, 0, 2000); - return segments -end - -function utils.addSCurves(segments, segmentLength, rumbleLength) - utils.addRoad(segments, segmentLength, rumbleLength, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, -ROAD.CURVE.EASY, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, ROAD.CURVE.MEDIUM, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, ROAD.CURVE.EASY, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, -ROAD.CURVE.EASY, 2000); - utils.addRoad(segments, segmentLength, rumbleLength, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, ROAD.LENGTH.MEDIUM, -ROAD.CURVE.MEDIUM, 2000); - return segments -end - -function utils.addDownhillToEnd(segments, segmentLength, rumbleLength, num) - num = num or 200; - utils.addRoad(segments, segmentLength, rumbleLength, num, num, num, -ROAD.CURVE.EASY, -lastY(segments)/segmentLength, 2000); - return segments -end - -function utils.resetCars(cars, segments, segmentLength, totalCars, maxSpeed) - local n, car, segment, offset, z, sprite, speed; - for n = 0, totalCars do - offset = math.random() * easeFN.randomChoice({-0.8, 0.8}); - z = math.floor(math.random() * segments.length) * segmentLength; - sprite = easeFN.randomChoice({ - ImageCache:load_to("asset/image/sample/javascript-racer-master/images/sprites/bush1.png", - "asset/image/sample/javascript-racer-master/images/sprites/bush1.png") - }); - - speed = maxSpeed/4 + math.random() * maxSpeed; - car = { offset = offset, z = z, sprite = sprite, speed = speed }; - segment = utils.findSegment(car.z, segments, segmentLength); - table.insert(segment.cars, car); - table.insert(cars, car); - end -end - -function utils.loadRoad(segments, segmentLength, rumbleLength, path) - local segmentData = loadJSON(path) - for _, v in ipairs(segmentData) do - local enter = v.enter - local hold = v.hold - local leave = v.leave - local curve = v.curve - local height = v.height - local width = v.width - utils.addRoad(segments, segmentLength, rumbleLength, enter, hold, leave, curve, height, width); - end -end - -function utils.resetRoad(path, pathSprite, segmentLength, rumbleLength, playerZ) - local segments = {} - utils.loadRoad(segments, segmentLength, rumbleLength, path) - if (pathSprite) then - utils.loadSpriteMapData(segments, pathSprite); - end - local trackLength = #segments * segmentLength; - return segments, trackLength -end - -function utils.loadSpriteMapData(segments, path) - local segmentData = loadJSON(path) - for _, v in ipairs(segmentData) do - local index = v.index - local texture = v.texture - local offset = v.offset - utils.addSprite(segments, index, ImageCache:load_to(texture, texture), offset, texture); - end -end - -function utils.addSprite(segments, index, sprite, offset, key) - table.insert(segments[index].sprites, { - source= sprite, - offset= offset, - data = {} - }) - local _sIndex = #segments[index].sprites - segments[index].sprites[_sIndex].data = { - path = key, - type = "static" - } -end - - -return utils diff --git a/game/love_src/src/world/2_town_square/system/perspective.lua b/game/love_src/src/world/2_town_square/system/perspective.lua deleted file mode 100644 index f1f3894..0000000 --- a/game/love_src/src/world/2_town_square/system/perspective.lua +++ /dev/null @@ -1,252 +0,0 @@ -local system_constructor = require("love_src.wrapper.Concord.system") - -local roadsegment = require("love_src.src.world.2_town_square.pseudo3d.roadsegment") - -local perspective = require("love_src.src.world.2_town_square.component.perspective") -local pos3d = require("love_src.src.world.2_town_square.component.pos3d") - -local projection = require("lib.choro.projection") -local ease = require("love_src.src.world.2_town_square.pseudo3d.ease") -local vm = require("lib.vornmath") -local roaddraw = require("love_src.src.world.2_town_square.pseudo3d.render.road") - -local system = {} - -system.__index = system - -system.pool = { - pool = { - perspective.dict.camera_height, - perspective.dict.draw_distance, - perspective.dict.field_of_view, - perspective.dict.fog_density, - perspective.dict.lanes, - perspective.dict.resolution, - perspective.dict.road_width, - perspective.dict.rumble_length, - perspective.dict.segment_count, - perspective.dict.segment_length, - perspective.dict.segment_path, - perspective.dict.segment_sprite_map_path, - - pos3d.dict.pos, - } -} - -system.components = { - [perspective.dict.camera_height] = perspective.camera_height, - [perspective.dict.draw_distance] = perspective.draw_distance, - [perspective.dict.field_of_view] = perspective.field_of_view, - [perspective.dict.fog_density] = perspective.fog_density, - [perspective.dict.lanes] = perspective.lanes, - [perspective.dict.resolution] = perspective.resolution, - [perspective.dict.road_width] = perspective.road_width, - [perspective.dict.rumble_length] = perspective.rumble_length, - [perspective.dict.segment_count] = perspective.segment_count, - [perspective.dict.segment_length] = perspective.segment_length, - [perspective.dict.segment_path] = perspective.segment_path, - [perspective.dict.segment_sprite_map_path] = perspective.segment_sprite_map_path, - - [pos3d.dict.pos] = pos3d.pos, -} -function system.new() - local new_system = system_constructor.new("perspective", system.pool) - if (new_system) then - for k, v in pairs(system) do - new_system[k] = v - end - return new_system - else - return nil - end -end - -function system:load() - for _, e in ipairs(self.pool) do - local segment_path = e[perspective.dict.segment_path].data - local segment_sprite_map_path = e[perspective.dict.segment_sprite_map_path].data - local segment_length = e[perspective.dict.segment_length].data - local rumble_length = e[perspective.dict.rumble_length].data - - local player_y = e[pos3d.dict.pos].data - - local segments, track_length = roadsegment.resetRoad(segment_path, segment_sprite_map_path, segment_length, rumble_length, scroll) - -- entityBuilder.setComponent(e, "segments", segments) - -- entityBuilder.setComponent(e, "track_length", track_length) - - local field_of_view = e[perspective.dict.field_of_view].data - local camera_height = e[perspective.dict.camera_height].data - local camera_depth = projection.distanceCamToProjection(field_of_view) - local player_z = camera_depth * camera_height - - e[pos3d.dict.pos].data[3] = player_z - - e.segments = segments - e.track_length = track_length - - e.camera_depth = camera_depth - end -end - -function system:update(dt) - for _, e in ipairs(self.pool) do - if love.keyboard.isDown("up") then - e[pos3d.dict.pos].data[3] = e[pos3d.dict.pos].data[3] + 1000 * dt - elseif love.keyboard.isDown("down") then - e[pos3d.dict.pos].data[3] = e[pos3d.dict.pos].data[3] - 1000 * dt - end - if love.keyboard.isDown("left") then - e[pos3d.dict.pos].data[1] = e[pos3d.dict.pos].data[1] - 1 * dt - elseif love.keyboard.isDown("right") then - e[pos3d.dict.pos].data[1] = e[pos3d.dict.pos].data[1] + 1 * dt - end - if love.keyboard.isDown("w") then - e[pos3d.dict.pos].data[2] = e[pos3d.dict.pos].data[2] + 1000 * dt - elseif love.keyboard.isDown("s") then - e[pos3d.dict.pos].data[2] = e[pos3d.dict.pos].data[2] - 1000 * dt - - end - end -end - -local function drawRoad( - zPosition, drawDistance, - segments, - segment_length, track_length, - playerX, cameraHeight, cameraDepth, - resolution, lanes, - playerZ, fogDensity -) - if (zPosition == 0) then - zPosition = 1 - end - local baseSegment = roadsegment.findSegment(zPosition, segments, segment_length); - local basePercent = ease.percentRemaining(zPosition, segment_length); - - local playerSegment = roadsegment.findSegment(zPosition + playerZ, segments, segment_length); - local playerPercent = ease.percentRemaining(zPosition+playerZ, segment_length); - local playerY = ease.interpolate(playerSegment.p1.world.y, playerSegment.p2.world.y, playerPercent); - local maxy = resolution[2]; - - local x = 0; - local dx = - ((baseSegment.curve or 0) * basePercent); - - local n, segment; - for n = 0, drawDistance do - local index = (baseSegment.index + n) % #segments - - if (index >= #segments) then - index = n + 1 - elseif (index <= 0) then - index = #segments - (n + 1) - end - - segment = segments[index]; - local loopPos = 0 - if (segment.index < baseSegment.index) then - loopPos = track_length - end - - local p1Width = segment.p1.world.w - local p2Width = segment.p2.world.w - - local camera1 = vm.vec3({ - (playerX * p1Width) - x, --x - playerY + cameraHeight, --y - zPosition - loopPos --z - }) - - local camera2 = vm.vec3({ - (playerX * p2Width) - x - dx, --x - playerY + cameraHeight, --y - zPosition - loopPos --z - }) - - segment.fog = ease.exponentialFog(n/drawDistance, fogDensity); - segment.clip = maxy - - local p1cam, p1screenpos, p1screensize = projection.projectWorldToCam({ - segment.p1.world.w, - segment.p1.world.y, - segment.p1.world.z - }, camera1, cameraDepth, resolution, { - p1Width, - 1 - }); - local p2cam, p2screenpos, p2screensize = projection.projectWorldToCam({ - segment.p2.world.w, - segment.p2.world.y, - segment.p2.world.z - }, camera2, cameraDepth, resolution, { - p2Width, - 1 - }); - - x = x + dx; - dx = dx + (segment.curve or 0); - - if ((p1cam[3] <= cameraDepth) or -- behind us - (p2screenpos[2] >= p1screenpos[2]) or -- back face cull - (p2screenpos[2] >= maxy)) -- clip by (already rendered) segment - then - else - -- segmentdebugdraw.draw(segment, resolution, maxy) - roaddraw.draw(p1screenpos, p2screenpos, p1screensize, p2screensize, segment.texture, resolution, maxy) - - maxy = p1screenpos[2]; - end - end - - for n = (drawDistance), 0, -1 do - local index = (baseSegment.index + n) % #segments - - if (index >= #segments) then - index = n + 1 - elseif (index <= 0) then - index = #segments - (n + 1) - end - - segment = segments[index]; - - local p1Width = segment.p1.world.w - - -- for i = 1, #segment.sprites do - -- drawstatic.drawstatic( - -- segment, p1Width, resolution) - -- end - - end -end - -function system:draw() - for _, e in ipairs(self.pool) do - local player_y = e[pos3d.dict.pos].data[2] -- pos[2] - local draw_distance = e[perspective.dict.draw_distance].data - local camera_height = e[perspective.dict.camera_height].data - local resolution = e[perspective.dict.resolution].data - local lanes = e[perspective.dict.lanes].data - local segment_length = e[perspective.dict.segment_length].data - local fogDensity = e[perspective.dict.fog_density].data - - local segments = e.segments - local player_x = e[pos3d.dict.pos].data[1] -- pos[1] - local camera_depth = e.camera_depth - local track_length = e.track_length - local player_z = e[pos3d.dict.pos].data[3] -- pos[3] - - love.graphics.push() - drawRoad( - player_y, draw_distance, - segments, - segment_length, track_length, - player_x, camera_height, camera_depth, - resolution, lanes, - player_z, - fogDensity - ) - love.graphics.pop() - love.graphics.print(string.format("%s,%s,%s",player_x, player_y, player_z), 20, 20) - end -end - -return system diff --git a/game/love_src/src/world/2_town_square/template/road.lua b/game/love_src/src/world/2_town_square/template/road.lua deleted file mode 100644 index b6bb94f..0000000 --- a/game/love_src/src/world/2_town_square/template/road.lua +++ /dev/null @@ -1,53 +0,0 @@ -local perspective = require("love_src.src.world.2_town_square.component.perspective") -local pos3d = require("love_src.src.world.2_town_square.component.pos3d") - -local template = {} - -template.default_data = { - resolution = {love.graphics.getDimensions()}, -- resolution x, y - lanes = 3, - draw_distance = 300, - road_width = 2000, - - fog_density = 0, - - -- player - pos = {0, 1, 0}, - player_width = 50, - centrifugal = 0.3, - player_speed = 0, - player_max_speed = 5000, - player_accel = 100, - - -- camera - field_of_view = 140, -- field of view - camera_height = 1000, - - -- road segment - segment_length = 200, - segment_count = 500, - rumble_length = 3, - - - segment_path = "love_src/data/map/segment.json", - segment_sprite_map_path = "love_src/data/map/sprites.json", -} - -function template.assemble(e, data) - e:give(perspective.dict.camera_height, data.camera_height) - e:give(perspective.dict.draw_distance, data.draw_distance) - e:give(perspective.dict.field_of_view, data.field_of_view) - e:give(perspective.dict.fog_density, data.fog_density) - e:give(perspective.dict.lanes, data.lanes) - e:give(perspective.dict.resolution, data.resolution.x, data.resolution.y) - e:give(perspective.dict.road_width, data.road_width) - e:give(perspective.dict.rumble_length, data.rumble_length) - e:give(perspective.dict.segment_count, data.segment_count) - e:give(perspective.dict.segment_length, data.segment_length) - e:give(perspective.dict.segment_path, data.segment_path) - e:give(perspective.dict.segment_sprite_map_path, data.segment_sprite_map_path) - - e:give(pos3d.dict.pos, data.pos[1], data.pos[2], data.pos[3]) -end - -return template diff --git a/game/love_src/src/world/common/component/animation.lua b/game/love_src/src/world/common/component/animation.lua deleted file mode 100644 index 40de9c0..0000000 --- a/game/love_src/src/world/common/component/animation.lua +++ /dev/null @@ -1,49 +0,0 @@ -local image = require("love_src.wrapper.lappy.new.image").obj - -local components = {} - -components.dict = { - image_frame = "image_frame", - trigger_frame = "trigger_frame", - frame_i = "frame_i", - run_time = "run_time", - anim_direction = "anim_direction", - next_trigger_frame = "next_trigger_frame", - fps = "fps" -} - -function components.image_frame (c, paths) - c.data = { - images = {}, - path = paths or {} - } - for k, v in ipairs(paths) do - table.insert(c.data.images, image:load_to(v, v)) - end -end - -function components.trigger_frame (c, array) - c.data = array or {} -end - -function components.frame_i (c, index) - c.data = index or 1 -end - -function components.run_time (c, float) - c.data = float or 0 -end - -function components.anim_direction (c, one) - c.data = one or 1 -end - -function components.next_trigger_frame (c, index) - c.data = index or 1 -end - -function components.fps (c, frame_per_second) - c.data = frame_per_second or 12 -end - -return components diff --git a/game/love_src/src/world/common/component/audio.lua b/game/love_src/src/world/common/component/audio.lua deleted file mode 100644 index 4e2d041..0000000 --- a/game/love_src/src/world/common/component/audio.lua +++ /dev/null @@ -1,24 +0,0 @@ -local source = require("love_src.wrapper.lappy.new.source").obj - -local components = {} - -components.dict = { - bgm = "bgm", - sfx = "sfx", -} - -function components.bgm (c, path) - c.data = { - source = source:load_to(path, path, "stream"), - path = path - } -end - -function components.sfx (c, path) - c.data = { - source = source:load_to(path, path, "static"), - path = path - } -end - -return components diff --git a/game/love_src/src/world/common/component/button.lua b/game/love_src/src/world/common/component/button.lua deleted file mode 100644 index e299f6d..0000000 --- a/game/love_src/src/world/common/component/button.lua +++ /dev/null @@ -1,30 +0,0 @@ -local components = {} - -components.dict = { - collider = "button.collider", - func = "button.func", - label = "button.label" -} - -function components.collider (c, x, y, w, h) - c.data = { - x = x or 0, - y = y or 0, - w = w or 0, - h = h or 0 - } -end - -function default() - print("click") -end - -function components.func (c, func) - c.data = func or default -end - -function components.label (c, label) - c.data = label or "" -end - -return components diff --git a/game/love_src/src/world/common/component/debug_label.lua b/game/love_src/src/world/common/component/debug_label.lua deleted file mode 100644 index 6b1e39c..0000000 --- a/game/love_src/src/world/common/component/debug_label.lua +++ /dev/null @@ -1,11 +0,0 @@ -local components = {} - -components.dict = { - debug_label = "debug_label", -} - -function components.debug_label (c, label) - c.data = label -end - -return components diff --git a/game/love_src/src/world/common/component/image.lua b/game/love_src/src/world/common/component/image.lua deleted file mode 100644 index 91d63c4..0000000 --- a/game/love_src/src/world/common/component/image.lua +++ /dev/null @@ -1,42 +0,0 @@ -local quad = require("love_src.wrapper.lappy.new.quad").obj -local image = require("love_src.wrapper.lappy.new.image").obj - -local components = {} - -components.dict = { - quad = "quad", - texture = "texture", -} - -local function load_image(path) - image:put_to(love.graphics.newImage(path), path) -end - -local function load_quad(x, y, w, h, path, key) - load_image(path) - local i = image:load_from(path) - local iw, ih = i:getDimensions() - quad:put_to(love.graphics.newQuad(x or 0, y or 0, w or iw, h or ih, i), key) -end - -function components.quad (c, quads) - c.data = {} - for _, q_data in pairs(quads) do - for k_q, q in pairs(q_data.quad) do - load_quad(q[1], q[2], q[3], q[4], q_data.image, k_q) - c.data[k_q] = {} - c.data[k_q].quad = quad:load_from(k_q) - c.data[k_q].image = image:load_from(q_data.image) - end - end -end - -function components.texture (c, images) - c[components.dict.texture] = {} - for k, i in pairs(images) do - load_image(i) - c[components.dict.texture][k] = image:load_from(i) - end -end - -return components diff --git a/game/love_src/src/world/common/component/transform.lua b/game/love_src/src/world/common/component/transform.lua deleted file mode 100644 index a5c4e1c..0000000 --- a/game/love_src/src/world/common/component/transform.lua +++ /dev/null @@ -1,23 +0,0 @@ -local vm = require("lib.vornmath") - -local components = {} - -components.dict = { - position = "position", - scale = "scale", - rotation = "rotation" -} - -function components.position (c, x, y, z) - c.data = vm.vec3(x or 0, y or 0, z or 0) -end - -function components.scale (c, sx, sy, sz) - c.data = vm.vec3(sx or 1, sy or 1, sz or 1) -end - -function components.rotation (c, rx, ry, rz) - c.data = vm.vec3(rx or 0, ry or 0, rz or 0) -end - -return components diff --git a/game/love_src/src/world/common/component/video.lua b/game/love_src/src/world/common/component/video.lua deleted file mode 100644 index 95a0480..0000000 --- a/game/love_src/src/world/common/component/video.lua +++ /dev/null @@ -1,16 +0,0 @@ -local video = require("love_src.wrapper.lappy.new.video").obj - -local components = {} - -components.dict = { - video = "video", -} - -function components.video (c, path) - c.data = { - video = video:load_to(path, path), - path = path - } -end - -return components diff --git a/game/love_src/src/world/common/system/debug_world_draw.lua b/game/love_src/src/world/common/system/debug_world_draw.lua deleted file mode 100644 index a381383..0000000 --- a/game/love_src/src/world/common/system/debug_world_draw.lua +++ /dev/null @@ -1,48 +0,0 @@ -local system_constructor = require("love_src.wrapper.Concord.system") -local debug_label = require("love_src.src.world.common.component.debug_label") -local transform = require("love_src.src.world.common.component.transform") - -local system = {} - -system.__index = system - -system.pool = { - pool = { - debug_label.dict.debug_label, - transform.dict.position - } -} - -system.components = { - [debug_label.dict.debug_label] = debug_label.debug_label, - [transform.dict.position] = transform.position -} - -function system.new() - local new_system = system_constructor.new("debug_world_draw", system.pool) - if (new_system) then - for k, v in pairs(system) do - new_system[k] = v - end - return new_system - else - return nil - end -end - -local function draw(text, x, y) - love.graphics.push() - love.graphics.print(text, x, y) - love.graphics.pop() -end - -function system:draw() - for _, e in ipairs(self.pool) do - local text = e[debug_label.dict.debug_label].data - local x = e[transform.dict.position].data[1] - local y = e[transform.dict.position].data[2] - --draw(text, x, y) - end -end - -return system diff --git a/game/love_src/src/world/common/system/flip.lua b/game/love_src/src/world/common/system/flip.lua deleted file mode 100644 index de10491..0000000 --- a/game/love_src/src/world/common/system/flip.lua +++ /dev/null @@ -1,97 +0,0 @@ -local floor = math.floor - -local system_constructor = require("love_src.wrapper.Concord.system") -local audio = require("love_src.src.world.common.component.audio") -local animation = require("love_src.src.world.common.component.animation") - -local system = {} - -system.__index = system - -system.pool = { - pool = { - audio.dict.sfx, - animation.dict.anim_direction, - animation.dict.fps, - animation.dict.frame_i, - animation.dict.image_frame, - animation.dict.next_trigger_frame, - animation.dict.run_time, - animation.dict.trigger_frame, - } -} - -system.components = { - [audio.dict.sfx] = audio.sfx, - [animation.dict.anim_direction] = animation.anim_direction, - [animation.dict.fps] = animation.fps, - [animation.dict.frame_i] = animation.frame_i, - [animation.dict.image_frame] = animation.image_frame, - [animation.dict.next_trigger_frame] = animation.next_trigger_frame, - [animation.dict.run_time] = animation.run_time, - [animation.dict.trigger_frame] = animation.trigger_frame, -} - -function system.new() - local new_system = system_constructor.new("flip", system.pool) - if (new_system) then - for k, v in pairs(system) do - new_system[k] = v - end - return new_system - else - return nil - end -end - ---- system frame -local function update_time(time, delta, indicator) - return time + (delta * indicator) -end - -local function get_loop(index, _max) - local md = index % _max - if (md == 0) then - return _max - else - return index % _max - end -end - -local function update_fps_time(time, fps) - -- floor time to 1. check x fps per second - return floor(time / (1 / fps)) -end - --- system trigger frame -local function is_trigger(trigger_frames, trigger_id, frame_id) - return (trigger_frames[trigger_id] == frame_id) -end - -function system:update(dt) - for _, e in ipairs(self.pool) do - e[animation.dict.run_time].data = update_time( - e[animation.dict.run_time].data, dt, e[animation.dict.anim_direction].data - ) - local new_index = update_fps_time( - e[animation.dict.run_time].data, e[animation.dict.fps].data - ) - e[animation.dict.frame_i].data = get_loop( - new_index, - #e[animation.dict.image_frame].data.images - ) - - if (is_trigger( - e[animation.dict.trigger_frame].data, - e[animation.dict.next_trigger_frame].data, - e[animation.dict.frame_i].data - )) then - e[animation.dict.next_trigger_frame].data = get_loop( - e[animation.dict.next_trigger_frame].data + 1, #e[animation.dict.trigger_frame].data - ) - e[audio.dict.sfx].data.source:play() - end - end -end - -return system diff --git a/game/love_src/src/world/common/system/trigger_button.lua b/game/love_src/src/world/common/system/trigger_button.lua deleted file mode 100644 index ff8713b..0000000 --- a/game/love_src/src/world/common/system/trigger_button.lua +++ /dev/null @@ -1,81 +0,0 @@ -local system_constructor = require("love_src.wrapper.Concord.system") -local c_button = require("love_src.src.world.common.component.button") - -local system = {} - -system.__index = system - -system.pool = { - pool = { - c_button.dict.collider, - c_button.dict.func, - c_button.dict.label - } -} - -system.components = { - [c_button.dict.collider] = c_button.collider, - [c_button.dict.func] = c_button.func, - [c_button.dict.label] = c_button.label -} - -function system.new() - local new_system = system_constructor.new("trigger_button", system.pool) - if (new_system) then - for k, v in pairs(system) do - new_system[k] = v - end - return new_system - else - return nil - end -end - --- x1 y1 -- (x1 + w1) y1 --- x2 y2 --- x1 (y1 + h1) -- (x1 + w1) (y1 + h1) -local function is_inside(x1,y1,w1,h1, x2,y2) - return x1 < x2 and - x2 < x1+w1 and - y1 < y2 and - y2 < y1+h1 -end - -function system:mousereleased(x, y, button, istouch, presses) - for _, e in ipairs(self.pool) do - local x1 = e[c_button.dict.collider].data.x - local y1 = e[c_button.dict.collider].data.y - local w1 = e[c_button.dict.collider].data.w - local h1 = e[c_button.dict.collider].data.h - local func = e[c_button.dict.func].data - if (is_inside(x1, y1, w1, h1, x, y) and button == 1) then - func() - end - end -end - -local function draw(text, x, y, w, h) - love.graphics.push() - love.graphics.line( - x, y, - x + w, y, - x + w, y + h, - x, y + h, - x, y - ) - love.graphics.print(text, x, y) - love.graphics.pop() -end - -function system:draw() - for _, e in ipairs(self.pool) do - local x = e[c_button.dict.collider].data.x - local y = e[c_button.dict.collider].data.y - local w = e[c_button.dict.collider].data.w - local h = e[c_button.dict.collider].data.h - local label = e[c_button.dict.label].data - --draw(label, x, y, w, h) - end -end - -return system diff --git a/game/love_src/src/world/common/system/video_render.lua b/game/love_src/src/world/common/system/video_render.lua deleted file mode 100644 index 22006c7..0000000 --- a/game/love_src/src/world/common/system/video_render.lua +++ /dev/null @@ -1,50 +0,0 @@ -local system_constructor = require("love_src.wrapper.Concord.system") -local c_video = require("love_src.src.world.common.component.video") - -local system = {} - -system.__index = system - -system.pool = { - pool = { - c_video.dict.video, - } -} - -system.components = { - [c_video.dict.video] = c_video.video, -} - -function system.new() - local new_system = system_constructor.new("video_render", system.pool) - if (new_system) then - for k, v in pairs(system) do - new_system[k] = v - end - return new_system - else - return nil - end -end - -function system:load() - for _, e in ipairs(self.pool) do - video = e[c_video.dict.video].data.video - video:play() - end -end - -function system:update(dt) - for _, e in ipairs(self.pool) do - video = e[c_video.dict.video].data.video - end -end - -function system:draw() - for _, e in ipairs(self.pool) do - video = e[c_video.dict.video].data.video - --love.graphics.draw(video, 0, 0) - end -end - -return system diff --git a/game/love_src/src/world/common/template/book.lua b/game/love_src/src/world/common/template/book.lua deleted file mode 100644 index cd04245..0000000 --- a/game/love_src/src/world/common/template/book.lua +++ /dev/null @@ -1,42 +0,0 @@ -local flip = require("love_src.src.world.common.system.flip") -local transform = require("love_src.src.world.common.component.transform") - -local template = {} - -template.default_data = { - sfx = "love_src/asset/audio/sfx/book_flip.1.ogg", - anim_direction = 1, - fps = 12, - frame_i = 1, - image_frame = { - "love_src/asset/image/book/StoryMode.png", - "love_src/asset/image/book/StoryModeBook.png", - "love_src/asset/image/book/StoryModeBook2.png", - "love_src/asset/image/book/StoryModeBook3.png", - "love_src/asset/image/book/StoryModeBook4.png", - "love_src/asset/image/book/StoryModeBook5.png", - "love_src/asset/image/book/StoryModeBook6.png", - "love_src/asset/image/book/StoryModeBook7.png", - "love_src/asset/image/book/StoryModeBook8.png", - "love_src/asset/image/book/StoryModeBook9.png", - "love_src/asset/image/book/StoryModeBook11.png", - "love_src/asset/image/book/StoryModeBook16.png", - }, - next_trigger_frame = 1, - run_time = 0, - trigger_frame = {1}, - position = {0, 0, 0} -} -function template.assemble(e, data) - e:give(flip.pool.pool[1], data.sfx) - e:give(flip.pool.pool[2], data.anim_direction) - e:give(flip.pool.pool[3], data.fps) - e:give(flip.pool.pool[4], data.frame_i) - e:give(flip.pool.pool[5], data.image_frame) - e:give(flip.pool.pool[6], data.next_trigger_frame) - e:give(flip.pool.pool[7], data.run_time) - e:give(flip.pool.pool[8], data.trigger_frame) - e:give(transform.dict.position, data.position) -end - -return template diff --git a/game/love_src/src/world/common/template/button.lua b/game/love_src/src/world/common/template/button.lua deleted file mode 100644 index 36ae583..0000000 --- a/game/love_src/src/world/common/template/button.lua +++ /dev/null @@ -1,24 +0,0 @@ -local button = require("love_src.src.world.common.component.button") - -local template = {} - -local function default() -end - -template.default_data = { - collider = { - x = 0, - y = 0, - w = 20, - h = 20 - }, - func = default, - label = "debug" -} -function template.assemble(e, data) - e:give(button.dict.collider, data.collider.x, data.collider.y, data.collider.w, data.collider.h) - e:give(button.dict.func, data.func) - e:give(button.dict.label, data.label) -end - -return template diff --git a/game/love_src/src/world/common/template/debug_entity.lua b/game/love_src/src/world/common/template/debug_entity.lua deleted file mode 100644 index e0bc1dc..0000000 --- a/game/love_src/src/world/common/template/debug_entity.lua +++ /dev/null @@ -1,14 +0,0 @@ -local debug_world_draw = require("love_src.src.world.common.system.debug_world_draw") - -local template = {} - -template.default_data = { - position = {0, 0}, - label = "debug" -} -function template.assembleDebug(e, data) - e:give(debug_world_draw.pool.pool[1], data.label) - e:give(debug_world_draw.pool.pool[2], data.position[1], data.position[2]) -end - -return template diff --git a/game/love_src/src/world/common/template/video.lua b/game/love_src/src/world/common/template/video.lua deleted file mode 100644 index d036897..0000000 --- a/game/love_src/src/world/common/template/video.lua +++ /dev/null @@ -1,12 +0,0 @@ -local video = require("love_src.src.world.common.component.video") - -local template = {} - -template.default_data = { - path = "" -} -function template.assemble(e, data) - e:give(video.dict.video, data.path) -end - -return template diff --git a/game/love_src/src/world/main_menu/init.lua b/game/love_src/src/world/main_menu/init.lua deleted file mode 100644 index d01aa24..0000000 --- a/game/love_src/src/world/main_menu/init.lua +++ /dev/null @@ -1,48 +0,0 @@ -local reap = require("lib.reap") - -local BASE = reap.base_path(...) - -local world = require("love_src.wrapper.Concord.world") - -local debug_entity = require("love_src.src.world.common.template.debug_entity") -local button = require("love_src.src.world.common.template.button") -local wm = require("world_map") - -local wrapper = world:extend() - -local function button_func() - load_world(wm["1_intro"]) -end - -function wrapper:new() - wrapper.super.new(self, BASE, ".main_menu") -end - -function wrapper:load(_args) - wrapper.super.load(self, { - "love_src/src/world/common/system/" - }, { - { - assemblage = debug_entity.assembleDebug, - data = { - position = {0, 0}, - label = "main_menu" - } - }, - { - assemblage = button.assemble, - data = { - collider = { - x = 20, - y = 20, - w = 20, - h = 20 - }, - func = button_func, - label = "play" - } - } - }) -end - -return wrapper diff --git a/game/love_src/src/world/race/init.lua b/game/love_src/src/world/race/init.lua deleted file mode 100644 index fc635b8..0000000 --- a/game/love_src/src/world/race/init.lua +++ /dev/null @@ -1,52 +0,0 @@ -local reap = require("lib.reap") - -local BASE = reap.base_path(...) -local image = require("love_src.wrapper.lappy.new.image").obj - -local world = require("love_src.wrapper.Concord.world") - -local debug_entity = require("love_src.src.world.common.template.debug_entity") -local book = require("love_src.src.world.common.template.book") - -local animation = require("love_src.src.world.common.component.animation") -local transform = require("love_src.src.world.common.component.transform") - -local wrapper = world:extend() - -function wrapper:new() - wrapper.super.new(self, BASE, ".race") -end - -function wrapper:load(_args) - wrapper.super.load(self, { - "love_src/src/world/common/system/" - }, { - { - assemblage = debug_entity.assembleDebug, - data = { - position = {0, 0}, - label = "race world" - } - }, - { - assemblage = book.assemble, - data = book.default_data - } - }) -end - -function wrapper:draw() - wrapper.super.draw(self) - - for k, v in pairs(self.entities) do - if v[animation.dict.frame_i] ~= nil then - local frame_i = v[animation.dict.frame_i].data - local img = v[animation.dict.image_frame].data.images - if (img ~= nil) then - --love.graphics.draw(img[frame_i], v[transform.dict.position].data[1], v[transform.dict.position].data[2]) - end - end - end -end - -return wrapper diff --git a/game/love_src/src/world/top_down_race/component/race.lua b/game/love_src/src/world/top_down_race/component/race.lua deleted file mode 100644 index 87c4fda..0000000 --- a/game/love_src/src/world/top_down_race/component/race.lua +++ /dev/null @@ -1,63 +0,0 @@ -local vm = require("lib.vornmath") - -local components = {} - -components.dict = { - forward = "race.forward", - velocity = "race.velocity", - max_speed = "race.max_speed", - min_speed = "race.min_speed", - accel = "race.accel", - grip = "race.grip", - steer = "race.steer", - brake = "race.brake", - mass = "race.mass", - inertia = "race.inertia", - streamline = "race.streamline", -} - -function components.forward (c, x, y) - c.data = vm.vec2(x, y) -end - -function components.velocity (c, x, y) - c.data = vm.vec2(x, y) -end - -function components.max_speed (c, x) - c.data = x -end - -function components.min_speed (c, x) - c.data = x -end - -function components.accel (c, x) - c.data = x -end - -function components.grip (c, x) - c.data = x -end - -function components.steer (c, x) - c.data = x -end - -function components.brake (c, x) - c.data = x -end - -function components.mass (c, x) - c.data = x -end - -function components.inertia (c, x, y) - c.data = vm.vec2(x, y) -end - -function components.streamline (c, x) - c.data = x -end - -return components diff --git a/game/love_src/src/world/top_down_race/init.lua b/game/love_src/src/world/top_down_race/init.lua deleted file mode 100644 index fac4278..0000000 --- a/game/love_src/src/world/top_down_race/init.lua +++ /dev/null @@ -1,51 +0,0 @@ -local reap = require("lib.reap") - -local BASE = reap.base_path(...) - -local world = require("love_src.wrapper.Concord.world") - -local debug_entity = require("love_src.src.world.common.template.debug_entity") -local racer = require("love_src.src.world.top_down_race.template.racer") -local wm = require("world_map") - -local wrapper = world:extend() - -local name = "top_down_race" - -function wrapper:new() - wrapper.super.new(self, BASE, name) -end - -function wrapper:load(_args) - wrapper.super.load(self, { - "love_src/src/world/common/system/", - "love_src/src/world/top_down_race/system/" - }, { - { - assemblage = debug_entity.assembleDebug, - data = { - position = {0, 0}, - label = name - } - }, - { - assemblage = racer.assemble, - data = { - velocity = {0.0, 0.0}, - forward = {0.0, 0.0}, - max_speed = 1.0, - min_speed = 0.0, - inertia = {0.0, 0.0}, - - accel = 0.1, - brake = 0.1, - grip = 0.0, - steer = 0.1, - mass = 0.0, - streamline = 0.0 - } - } - }) -end - -return wrapper diff --git a/game/love_src/src/world/top_down_race/system/velocity.lua b/game/love_src/src/world/top_down_race/system/velocity.lua deleted file mode 100644 index 16156e3..0000000 --- a/game/love_src/src/world/top_down_race/system/velocity.lua +++ /dev/null @@ -1,324 +0,0 @@ -local system_constructor = require("love_src.wrapper.Concord.system") -local race = require("love_src.src.world.top_down_race.component.race") -local racing_phy = require("love_src.src.system.racing_phy") -local racing_force = require("love_src.src.system.racing_force") - -local component = require("love_src.wrapper.Concord.component") - -local vm = require("lib.vornmath") - -local system = {} - -system.__index = system - -system.pool = { - pool = { - race.dict.max_speed, - race.dict.min_speed, - race.dict.velocity, - race.dict.forward, - race.dict.accel, - race.dict.brake, - race.dict.grip, - race.dict.steer, - race.dict.inertia, - race.dict.mass, - race.dict.streamline - } -} - -system.components = { - [race.dict.max_speed] = race.max_speed, - [race.dict.min_speed] = race.min_speed, - [race.dict.velocity] = race.velocity, - [race.dict.forward] = race.forward, - - [race.dict.accel] = race.accel, - [race.dict.brake] = race.brake, - [race.dict.grip] = race.grip, - [race.dict.steer] = race.steer, - [race.dict.inertia] = race.inertia, - [race.dict.mass] = race.mass, - [race.dict.streamline] = race.streamline -} - -function system.new() - local new_system = system_constructor.new("velocity", system.pool) - if (new_system) then - for k, v in pairs(system) do - new_system[k] = v - end - return new_system - else - return nil - end -end - -local function get(e) - return - e[race.dict.max_speed].data, - e[race.dict.min_speed].data, - e[race.dict.velocity].data, - e[race.dict.forward].data, - e[race.dict.accel].data, - e[race.dict.brake].data, - e[race.dict.grip].data, - e[race.dict.steer].data, - e[race.dict.inertia].data, - e[race.dict.mass].data, - e[race.dict.streamline].data -end - -function system:load() - component.component("race.pos", function (c, x, y) - c.data = vm.vec2(x, y) - end) - component.component("race.scale", function (c, x, y) - c.data = vm.vec2(x, y) - end) - component.component("race.angle", function (c, x) - c.data = x - end) - component.component("race.image", function (c, x) - c.data = { - image = love.graphics.newImage(x) - } - c.data.origin = vm.vec2(c.data.image:getWidth()/2, c.data.image:getHeight()/2) - end) - - for _, e in ipairs(self.pool) do - e:give("race.pos", 44.64, 10.87) - e:give("race.scale", 1, 1) - e:give("race.angle", 0) - e:give("race.image", "love_src/asset/image/arrow_right.png") - end -end - -local lw, lh = love.graphics.getDimensions() -local frictions = { - { - name = "grass", - colliders = { - -- x, y, w, h - 0, 0, lw/2, lh - }, - color = {0, 255/255, 0}, - friction = 2 - }, - { - name = "pavement", - colliders = { - -- x, y, w, h - lw/2, 0, lw/2, lh - }, - color = {0, 255/255, 255/255}, - friction = 1 - } -} - -local drags = { - { - drag = vm.vec2(1.0, 0.0) - } -} - --- x1 y1 -- (x1 + w1) y1 --- x2 y2 --- x1 (y1 + h1) -- (x1 + w1) (y1 + h1) -local function is_inside(x1,y1,w1,h1, x2,y2) - return x1 < x2 and - x2 < x1+w1 and - y1 < y2 and - y2 < y1+h1 -end - -local function get_friction(pos_x, pos_y, floors) - local friction = 0 - for _,f in ipairs(floors) do - local fx, fy, fw, fh = f.colliders[1], f.colliders[2], f.colliders[3], f.colliders[4] - if (is_inside(fx, fy, fw, fh, pos_x, pos_y)) then - friction = f.friction - break - end - end - return friction -end - -local magic_w = { - tire = 0.0, - floor = 0.0, - forward = 0.01, - steer = 0.1, - drag_boost = 0.0, - drag_halt = 0.0, - inertia = 0.0, - centrifugal = 0.0, - drag_movement = 0.0 -} - -local function handle_input(accel, brake, steer) - local up = love.keyboard.isDown("up") - local down = love.keyboard.isDown("down") - local left = love.keyboard.isDown("left") - local right = love.keyboard.isDown("right") - - local desire_forward = 0 - local desire_steer = 0 - if (up) then - desire_forward = accel - elseif (down) then - desire_forward = - brake - end - if (left) then - desire_steer = steer - elseif (right) then - desire_steer = - steer - end - return desire_forward, desire_steer -end - -local debug_current = 1 -local p_up = love.keyboard.isDown("i") -local p_down = love.keyboard.isDown("k") -local p_left = love.keyboard.isDown("j") -local p_right = love.keyboard.isDown("l") - -dict_debugs = { - race.dict.max_speed, - race.dict.min_speed, - race.dict.velocity, - race.dict.forward, - race.dict.accel, - race.dict.brake, - race.dict.grip, - race.dict.steer, - race.dict.inertia, - race.dict.mass, - race.dict.streamline, -} - --- local function - -function system:update(dt) - local i_up = love.keyboard.isDown("i") - local i_down = love.keyboard.isDown("k") - local i_left = love.keyboard.isDown("j") - local i_right = love.keyboard.isDown("l") - - if (i_down and not p_down) then - debug_current = debug_current + 1 - elseif (i_up and not p_up) then - debug_current = debug_current - 1 - end - - local dict_debug_current = dict_debugs[1] - if (debug_current > 0 and debug_current <= #dict_debugs) then - dict_debug_current = dict_debugs[debug_current] - end - - p_up = i_up - p_down = i_down - p_left = i_left - p_right = i_right - - for _, e in ipairs(self.pool) do - if (i_left) then - e[dict_debug_current].data = e[dict_debug_current].data - 1 - elseif (i_right) then - e[dict_debug_current].data = e[dict_debug_current].data + 1 - end - - local max_speed, min_speed, velocity, forward, accel, brake, grip, steer, inertia, mass, streamline = get(e) - - local pos_x, pos_y = e["race.pos"].data[1], e["race.pos"].data[2] - - local friction = frictions[1].friction - local drag = drags[1].drag - - local desire_forward, desire_steer = handle_input(accel, brake, steer) - - local force = racing_force( - desire_forward, desire_steer, - grip, friction, - drag, magic_w.drag_movement, streamline, - inertia, - mass, - magic_w.forward, magic_w.steer, - magic_w.tire, magic_w.floor, - magic_w.drag_boost, magic_w.drag_halt, - magic_w.inertia, magic_w.centrifugal - ) - - if (mass == 0) then - mass = 1 - end - local a = force * dt / mass - - e[race.dict.velocity].data = e[race.dict.velocity].data + a - e[race.dict.velocity].data[1] = vm.clamp(e[race.dict.velocity].data[1], min_speed, max_speed) - if (e[race.dict.velocity].data[1] ~= 0) then - e["race.pos"].data = e["race.pos"].data + e[race.dict.velocity].data - end - - e[race.dict.inertia].data = force - end -end - -local function draw_debug(x, y, r, g, b, texts) - local font_ix = test.draw_font_start() - test.draw_font_set_base_color(r, g, b) - for _, t in ipairs(texts) do - y = y + test.draw_font(font_ix, t, x, y) - end -end - -function system:draw() - for _, e in ipairs(self.pool) do - local x, y = e["race.pos"].data[1], e["race.pos"].data[2] - local vx = e[race.dict.velocity].data[1] - local vy = e[race.dict.velocity].data[2] - test.set_sphere(x, y, vx, vy) - end -end - -function system:ui_draw() - for _, e in ipairs(self.pool) do - local max_speed, min_speed, velocity, forward, accel, brake, grip, steer, inertia, mass, streamline = get(e) - test.draw_line_quad_start() - test.draw_set_color(1.0, 0.0, 0.0) -- r, g, b (0.0 to 1.0) - test.draw_line(lw/2, lh/2, velocity[1], velocity[2]) -- x1, y1, x2, y2 - - draw_debug(640, 0, 1.0, 0.0, 1.0, { - string.format("%s max_speed : %s", (debug_current == 1 and ">") or "", max_speed), - string.format("%s max_speed : %s", (debug_current == 21 and ">") or "", min_speed), - string.format("%s velocity : %s", (debug_current == 2 and ">") or "", velocity), - string.format("%s forward : %s", (debug_current == 22 and ">") or "", forward), - string.format("%s accel : %s", (debug_current == 3 and ">") or "", accel), - string.format("%s brake : %s", (debug_current == 4 and ">") or "", brake), - string.format("%s grip : %s", (debug_current == 5 and ">") or "", grip), - string.format("%s steer : %s", (debug_current == 6 and ">") or "", steer), - string.format("%s inertia : %s", (debug_current == 7 and ">") or "", inertia), - string.format("%s mass : %s", (debug_current == 8 and ">") or "", mass), - string.format("%s streamline : %s", (debug_current == 9 and ">") or "", streamline) - }) - - draw_debug(640, 300, 1.0, 0.0, 1.0, { - string.format("%s weight tire : %s", (debug_current == 10 and ">") or "", magic_w.tire), - string.format("%s weight floor : %s", (debug_current == 11 and ">") or "", magic_w.floor), - string.format("%s weight forward : %s", (debug_current == 12 and ">") or "", magic_w.forward), - string.format("%s weight steer : %s", (debug_current == 13 and ">") or "", magic_w.steer), - string.format("%s weight drag boost : %s", (debug_current == 14 and ">") or "", magic_w.drag_boost), - string.format("%s weight drag halt : %s", (debug_current == 15 and ">") or "", magic_w.drag_halt), - string.format("%s weight inertia : %s", (debug_current == 16 and ">") or "", magic_w.inertia), - string.format("%s weight centrifugal : %s", (debug_current == 17 and ">") or "", magic_w.centrifugal), - string.format("%s magic drag movement : %s", (debug_current == 18 and ">") or "", magic_w.drag_movement) - }) - - draw_debug(640,600, 1.0, 0.0, 1.0, { - string.format("%s friction : %s", (debug_current == 19 and ">") or "", frictions[1].friction), - string.format("%s drag : %s", (debug_current == 20 and ">") or "", drags[1].drag), - }) - end -end - -return system diff --git a/game/love_src/src/world/top_down_race/template/racer.lua b/game/love_src/src/world/top_down_race/template/racer.lua deleted file mode 100644 index c6928c7..0000000 --- a/game/love_src/src/world/top_down_race/template/racer.lua +++ /dev/null @@ -1,34 +0,0 @@ -local race = require("love_src.src.world.top_down_race.component.race") - -local template = {} - -template.default_data = { - velocity = {0.0, 0.0}, - forward = {0.0, 0.0}, - max_speed = 10.0, - min_speed = 0.0, - - accel = 10.0, - brake = 10.0, - grip = 10.0, - steer = 10.0, - inertia = {0.0, 0.0}, - mass = 10.0, - streamline = 1.0 -} -function template.assemble(e, data) - e:give(race.dict.max_speed, data.max_speed) - e:give(race.dict.min_speed, data.min_speed) - e:give(race.dict.velocity, data.velocity[1], data.velocity[2]) - e:give(race.dict.velocity, data.forward[1], data.forward[2]) - - e:give(race.dict.accel, data.accel) - e:give(race.dict.brake, data.brake) - e:give(race.dict.grip, data.grip) - e:give(race.dict.steer, data.steer) - e:give(race.dict.inertia, data.inertia[1], data.inertia[2]) - e:give(race.dict.mass, data.mass) - e:give(race.dict.streamline, data.streamline) -end - -return template diff --git a/game/love_src/src/world/train/init.lua b/game/love_src/src/world/train/init.lua deleted file mode 100644 index d7181b6..0000000 --- a/game/love_src/src/world/train/init.lua +++ /dev/null @@ -1,29 +0,0 @@ -local reap = require("lib.reap") - -local BASE = reap.base_path(...) - -local world = require("love_src.wrapper.Concord.world") - -local debug_entity = require("love_src.src.world.common.template.debug_entity") - -local wrapper = world:extend() - -function wrapper:new() - wrapper.super.new(self, BASE, ".train") -end - -function wrapper:load(_args) - wrapper.super.load(self, { - "love_src/src/world/common/system/" - }, { - { - assemblage = debug_entity.assembleDebug, - data = { - position = {0, 0}, - label = "train world" - } - } - }) -end - -return wrapper