From 8d88e21abe0c5832ede79d7201ba7098d908c2a9 Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 12 Oct 2018 18:32:07 -0500 Subject: [PATCH 01/16] game engine --- GameEngine2D/img/skellyattack.png | Bin 0 -> 3887 bytes GameEngine2D/img/skellydeath.png | Bin 0 -> 2440 bytes GameEngine2D/img/skellyhit.png | Bin 0 -> 1648 bytes GameEngine2D/img/skellyidle.png | Bin 0 -> 1300 bytes GameEngine2D/img/skellyreact.png | Bin 0 -> 673 bytes GameEngine2D/img/skellywalk.png | Bin 0 -> 1818 bytes GameEngine2D/index.html | 65 ++++++++ GameEngine2D/js/entity.js | 116 +++++++++++++++ GameEngine2D/js/game.js | 60 ++++++++ GameEngine2D/js/material.js | 236 ++++++++++++++++++++++++++++++ GameEngine2D/js/math.js | 95 ++++++++++++ 11 files changed, 572 insertions(+) create mode 100644 GameEngine2D/img/skellyattack.png create mode 100644 GameEngine2D/img/skellydeath.png create mode 100644 GameEngine2D/img/skellyhit.png create mode 100644 GameEngine2D/img/skellyidle.png create mode 100644 GameEngine2D/img/skellyreact.png create mode 100644 GameEngine2D/img/skellywalk.png create mode 100644 GameEngine2D/index.html create mode 100644 GameEngine2D/js/entity.js create mode 100644 GameEngine2D/js/game.js create mode 100644 GameEngine2D/js/material.js create mode 100644 GameEngine2D/js/math.js diff --git a/GameEngine2D/img/skellyattack.png b/GameEngine2D/img/skellyattack.png new file mode 100644 index 0000000000000000000000000000000000000000..807443b58423bba5b64f856e1778de8941e065ef GIT binary patch literal 3887 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 literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/skellydeath.png b/GameEngine2D/img/skellydeath.png new file mode 100644 index 0000000000000000000000000000000000000000..64f539d0beb0e7121a914f173237d5fd310e3667 GIT binary patch literal 2440 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 KMNUMnLSTZO^No`L literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/skellyreact.png b/GameEngine2D/img/skellyreact.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd99437d61467cb113d393d2f2f96d5a5cc7e7f GIT binary patch literal 673 zcmV;S0$%-zP)@D$KWCzM*H$kNh!V~3p1k+odzXs)I} z1$bSrvFxkL%ni)oU7M-@GuH_)?lsk&!J?kU?K}4yDz2S9^Xvj|00000NkvXX Hu0mjfyTCx( literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/skellywalk.png b/GameEngine2D/img/skellywalk.png new file mode 100644 index 0000000000000000000000000000000000000000..17dfd1f479384f8492875f605316a70590f82713 GIT binary patch literal 1818 zcmV+#2j%#QP) zziS&w6vw}NxKZ!_Kz9aVxGsh5zyNvLv1?_+#V7mK0{emgJY*c$vY8C#Fu4;Qmmp zi4EFV*`!$dFh*|dOs~WvW!l)ds$#83VoAg$_hB)YLJknq48h4&IscA^tntRm&O27g zEt$Hk6OWW>W8(tAmyhogDWk^7j;#-4;yzTS^{LjEkMEO^z#a-$<#Lt+{$9^DK8u)bD9zt^28pL_!B_qyrr&E@z)Q^o zac%ld%4aUGo0!If+}>QKjb;Z|qY(gLrCLS1RmaxO0amJ2oDTj0mFX_Zn-+W!STtFS6jr|4nW{!AE?lhO4+j5PG=j?n4 z0QmIb5T8CAj-m88L{bT@0uAHEIOhb_r9E&7J6Z2)GUNwot4iQcfjdi(AaZ{M8)xG%L$*KL&C`Eu1Nm&{8%{kJRARMDtDlWGUoczwA(gSm+7 zn;arFLBkNX3ceByK-&WK3p5NiA!u>uI>e!N~egc zCmXf835{3fF9O%aYqs2wvB5dsvgFF0x>rjzn$7hTF5=?qjWAE{#>RFE0N11JZ0{Ry z5j%?;60^#zEUza0UN@zg?T_DoniwR$sw}T2bR3SpQ)AY7i^x^kQd~}^DlRW90h7T} zX{LfHV*+*qjU>e-RhCziz1{sZk88`;2V4=Cm_@STnqm#%0vNMxdAigYOyAL3U#nqb zV>=xTdK0snO*^YxTNAq^O1cJZUR)m^7jb=<Uy2Ku8zO{D1H+a(81xdGRs1|IU`{wT>?|&^2ZLUsvu$Gr?$(F;y>3cLmyYxI z!Jl|>2=Bf-J0E5yG#?(dLo8g96c@;zFhZD{+fNhP5Kt3kzt>G)9KNyUOr2_Ffmf`9k`^)1w7Hdr=*5#VeOjQK6L#$jICRJ0E)QY&i z{-p^+^@Hj&pYf)yOOe#aw%jG)zLdPZxlAj|t4Y>u@4B-k#U)8_i3wy^JrZ01UP&j9 ztFlA5l(;Cdab0|tHQW0p-+6HXzrK^^0_F)Ll*!?TsftH69H-GZx$5F17uUqJZQ$$C z(CJzs&Vj5ZK`AbW)b=GwCA5;u&o%X5h{lPB8!XM0kVLGrY*+pHlOMlN8_%CPSE>4I z?U%38y}y15;%2c!CBc;B&Qk4{uTlV@zH7JYX~^fI_v(IVx9aKf>(6lU#MI(4U^XxS zCvXw>`1NNz`M+U8O*~63$AFXKN=Y>tr%VRs_)Odbj+?8$hcjONeNufFDz^WtFmcrzH@Ucynpc1MUSXWa^<}F4)M$3tZoV~fT|Hr3 + + + + 2D Game Engine Test + + + + + + + + + + + + + + + diff --git a/GameEngine2D/js/entity.js b/GameEngine2D/js/entity.js new file mode 100644 index 0000000..7ced11a --- /dev/null +++ b/GameEngine2D/js/entity.js @@ -0,0 +1,116 @@ +class SpriteIndex +{ + constructor() + { + this.s_f_s = new Array(); + } + + addSprite(frame, speed) + { + this.s_f_s.push([frame, speed]); + } +} + +var Key = { + _pressed: {}, + + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + Q: 81, + + isDown: function(keyCode) { + return this._pressed[keyCode]; + }, + + onKeydown: function(event) { + this._pressed[event.keyCode] = true; + }, + + onKeyup: function(event) { + delete this._pressed[event.keyCode]; + } +}; + +class Player +{ + constructor(index, gl, vs, fs) + { + this.index = index; + this.pos = new Point(); + this.frame = new Point(); + this.mirrored = 1; + + + this.skelly_walk = new Sprite(gl, "img/skellywalk.png", vs, fs, {width:22, height:32}); + this.skelly_death = new Sprite(gl, "img/skellydeath.png", vs, fs, {width:33, height:31}); + this.skelly_attack = new Sprite(gl, "img/skellyattack.png", vs, fs, {width:43, height:36}); + this.skelly_hit = new Sprite(gl, "img/skellyhit.png", vs, fs, {width:30, height:32}); + this.skelly_idle = new Sprite(gl, "img/skellyidle.png", vs, fs, {width:24, height:32}); + this.skelly_react = new Sprite(gl, "img/skellyreact.png", vs, fs, {width:22, height:32}); + + this.curr = this.skelly_idle; + this.currNum = 4; + } + + update() + { + this.curr = this.skelly_idle; + this.currNum = 4; + + if (Key.isDown(Key.UP)) this.movement(0); + if (Key.isDown(Key.DOWN)) this.movement(1); + if (Key.isDown(Key.LEFT)) this.movement(2); + if (Key.isDown(Key.RIGHT)) this.movement(3); + if (Key.isDown(Key.Q)) this.movement(4); + + + this.render(); + } + + movement(num) + { + if (num == 0) //move up + { + this.pos.y -= 1; + } + if (num == 1) // move down + { + this.pos.y += 1; + } + if (num == 2) // move left + { + this.pos.x -= 1; + this.curr = this.skelly_walk; + this.currNum = 0; + if (this.mirrored == 1) + { + this.pos.x = this.pos.x + 16; + } + this.mirrored = -1; + } + if (num == 3) // move right + { + this.pos.x += 1; + this.curr = this.skelly_walk; + this.currNum = 0; + if (this.mirrored == -1) + { + this.pos.x = this.pos.x - 16; + } + this.mirrored = 1; + } + if (num == 4) // attack + { + this.curr = this.skelly_attack; + this.currNum = 2; + } + } + + render() + { + this.frame.x = ( new Date() * this.index.s_f_s[this.currNum][1]) % this.index.s_f_s[this.currNum][0]; + this.curr.render(this.pos, this.frame, this.mirrored); + } +} \ No newline at end of file diff --git a/GameEngine2D/js/game.js b/GameEngine2D/js/game.js new file mode 100644 index 0000000..041d241 --- /dev/null +++ b/GameEngine2D/js/game.js @@ -0,0 +1,60 @@ +function loop() +{ + window.game.update(); + requestAnimationFrame(loop); +} + +class Game +{ + constructor() + { + this.canvasElem = document.createElement("canvas"); + this.canvasElem.width = 800; + this.canvasElem.height = 600; + + this.worldSpaceMatrix = new M3x3(); + + this.gl = this.canvasElem.getContext("webgl2"); + this.gl.clearColor(1.0, 0.6, 0.2, 0.0); + + document.body.appendChild(this.canvasElem); + + let vs = document.getElementById("vs_01").innerHTML; + let fs = document.getElementById("fs_01").innerHTML; + + + this.skelly_index = new SpriteIndex(); + this.skelly_index.addSprite(13, 0.02); + this.skelly_index.addSprite(15, 0.01); + this.skelly_index.addSprite(18, 0.02); + this.skelly_index.addSprite(8, 0.01); + this.skelly_index.addSprite(11, 0.01); + this.skelly_index.addSprite(4, 0.01); + + this.player = new Player(this.skelly_index, this.gl, vs, fs); + } + + resize(x,y) + { + this.canvasElem.width = x; + this.canvasElem.height = y; + + let wRatio = x / (y/240); + this.worldSpaceMatrix = new M3x3().transition(-1, 1).scale(2/wRatio, -2/240); + } + + update() + { + this.gl.viewport(0,0, this.canvasElem.width, this.canvasElem.height); + this.gl.clear(this.gl.COLOR_BUFFER_BIT); + + this.gl.enable(this.gl.BLEND); + this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA); + + + this.player.update(); + //this.player.render(); + + this.gl.flush(); + } +} \ No newline at end of file diff --git a/GameEngine2D/js/material.js b/GameEngine2D/js/material.js new file mode 100644 index 0000000..3078191 --- /dev/null +++ b/GameEngine2D/js/material.js @@ -0,0 +1,236 @@ +class Material +{ + constructor(gl, vs, fs) + { + this.gl = gl; + + let vsShader = this.getShader(vs, gl.VERTEX_SHADER); + let fsShader = this.getShader(fs, gl.FRAGMENT_SHADER); + + if(vsShader && fsShader) + { + this.program = gl.createProgram(); + gl.attachShader(this.program, vsShader); + gl.attachShader(this.program, fsShader); + gl.linkProgram(this.program); + + if(!gl.getProgramParameter(this.program, gl.LINK_STATUS)) + { + console.error("Cannot load shader \n"+gl.getProgramInfoLog(this.program)); + return null; + } + + this.gatherParameters(); + + gl.detachShader(this.program, vsShader); + gl.detachShader(this.program, fsShader); + gl.deleteShader(vsShader); + gl.deleteShader(fsShader); + + gl.useProgram(null); + } + } + + getShader(script, type) + { + let gl = this.gl; + var output = gl.createShader(type); + gl.shaderSource(output, script); + gl.compileShader(output); + + if(!gl.getShaderParameter(output, gl.COMPILE_STATUS)) + { + console.error("Shader error: \n:" + gl.getShaderInfoLog(output)); + return null; + } + + return output; + } + + gatherParameters() + { + let gl = this.gl; + let isUniform = 0; + + this.parameters = {}; + + while(isUniform < 2 ) + { + let paramType = isUniform ? gl.ACTIVE_UNIFORMS : gl.ACTIVE_ATTRIBUTES; + let count = gl.getProgramParameter(this.program, paramType); + + for(let i = 0; i < count; i++) + { + let details; + let location; + if(isUniform) + { + details = gl.getActiveUniform(this.program, i); + location = gl.getUniformLocation(this.program, details.name); + } + else + { + details = gl.getActiveAttrib(this.program, i); + location = gl.getAttribLocation(this.program, details.name); + } + + this.parameters[details.name] = + { + location : location, + uniform : !!isUniform, + type : details.type + } + } + isUniform++; + } + } + + set(name, a, b, c, d, e) + { + let gl = this.gl; + + if (name in this.parameters) + { + let param = this.parameters[name]; + if(param.uniform) + { + switch(param.type) + { + case gl.FLOAT: gl.uniform1f(param.location, a); break; + case gl.FLOAT_VEC2: gl.uniform2f(param.location, a, b); break; + case gl.FLOAT_VEC3: gl.uniform3f(param.location, a, b, c); break; + case gl.FLOAT_VEC4: gl.uniform4f(param.location, a, b, c, d); break; + case gl.FLOAT_MAT3: gl.uniformMatrix3fv(param.location, false, a); break; + case gl.FLOAT_MAT4: gl.uniformMatrix4fv(param.location, false, a); break; + case gl.SAMPLER_2D: gl.uniform1i(param.location, a); break; + + } + } + else + { + gl.enableVertexAttribArray(param.location); + + if(a == undefined) a = gl.FLOAT; + if(b == undefined) b = false; + if(c == undefined) c = 0; + if(d == undefined) d = 0; + + switch(param.type) + { + case gl.FLOAT: gl.vertexAttribPointer(param.location, 1, a, b, c, d); break; + case gl.FLOAT_VEC2: gl.vertexAttribPointer(param.location, 2, a, b, c, d); break; + case gl.FLOAT_VEC3: gl.vertexAttribPointer(param.location, 3, a, b, c, d); break; + case gl.FLOAT_VEC4: gl.vertexAttribPointer(param.location, 4, a, b, c, d); break; + } + } + } + } +} + +class Sprite +{ + constructor(gl, img_url, vs, fs, opts={}) + { + this.gl = gl; + this.isLoaded = false; + this.material = new Material(gl,vs,fs); + + this.size = new Point(64, 64); + if ("width" in opts) + { + this.size.x = opts.width * 1; + } + if ("height" in opts) + { + this.size.y = opts.height * 1; + } + + this.image = new Image(); + this.image.src = img_url; + this.image.sprite = this; + this.image.onload = function() + { + this.sprite.setup(); + } + + + } + + static createRectArray(x=0, y=0, w=1, h=1) + { + return new Float32Array + ([ + x, y, + x+w, y, + x, y+h, + x, y+h, + x+w, y, + x+w, y+h + ]); + } + + setup() + { + let gl = this.gl; + + gl.useProgram(this.material.program); + this.gl_tex = gl.createTexture(); + + gl.bindTexture(gl.TEXTURE_2D, this.gl_tex); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this.image); + gl.bindTexture(gl.TEXTURE_2D, null); + + this.uv_x = this.size.x / this.image.width; + this.uv_y = this.size.y / this.image.height; + + this.tex_buff = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, this.tex_buff); + gl.bufferData(gl.ARRAY_BUFFER, Sprite.createRectArray(0, 0, this.uv_x, this.uv_y), gl.STATIC_DRAW); + + this.geo_buff = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, this.geo_buff); + gl.bufferData(gl.ARRAY_BUFFER, Sprite.createRectArray(0, 0, this.size.x, this.size.y), gl.STATIC_DRAW); + + gl.useProgram(null); + this.isLoaded = true; + + } + + render(position, frames, mirrored) + { + if(this.isLoaded) + { + let gl = this.gl; + + let frame_x = Math.floor(frames.x) * this.uv_x; + let frame_y = Math.floor(frames.y) * this.uv_y; + + + let obj_mat = new M3x3().transition(position.x, position.y).scale(mirrored, 1); + + gl.useProgram(this.material.program); + + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, this.gl_tex); + this.material.set("u_image", 0); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.tex_buff); + this.material.set("a_texCoord"); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.geo_buff); + this.material.set("a_position"); + + this.material.set("u_frame", frame_x, frame_y); + this.material.set("u_world", window.game.worldSpaceMatrix.getFloatArray()); + this.material.set("u_object", obj_mat.getFloatArray()); + + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 6); + + gl.useProgram(null); + } + } +} \ No newline at end of file diff --git a/GameEngine2D/js/math.js b/GameEngine2D/js/math.js new file mode 100644 index 0000000..9e80d38 --- /dev/null +++ b/GameEngine2D/js/math.js @@ -0,0 +1,95 @@ +class Point +{ + constructor(x=0.0, y=0.0) + { + this.x = x; + this.y = y; + } +} + +class M3x3 +{ + constructor() + { + this.matrix = + [ + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + ]; + } + + multiply(m) + { + var output = new M3x3(); + output.matrix = + [ + this.matrix[M3x3.M00] * m.matrix[M3x3.M00] + this.matrix[M3x3.M10] * m.matrix[M3x3.M01] + this.matrix[M3x3.M20] * m.matrix[M3x3.M02], + this.matrix[M3x3.M01] * m.matrix[M3x3.M00] + this.matrix[M3x3.M11] * m.matrix[M3x3.M01] + this.matrix[M3x3.M21] * m.matrix[M3x3.M02], + this.matrix[M3x3.M02] * m.matrix[M3x3.M00] + this.matrix[M3x3.M12] * m.matrix[M3x3.M01] + this.matrix[M3x3.M22] * m.matrix[M3x3.M02], + + this.matrix[M3x3.M00] * m.matrix[M3x3.M10] + this.matrix[M3x3.M10] * m.matrix[M3x3.M11] + this.matrix[M3x3.M20] * m.matrix[M3x3.M12], + this.matrix[M3x3.M01] * m.matrix[M3x3.M10] + this.matrix[M3x3.M11] * m.matrix[M3x3.M11] + this.matrix[M3x3.M21] * m.matrix[M3x3.M12], + this.matrix[M3x3.M02] * m.matrix[M3x3.M10] + this.matrix[M3x3.M12] * m.matrix[M3x3.M11] + this.matrix[M3x3.M22] * m.matrix[M3x3.M12], + + this.matrix[M3x3.M00] * m.matrix[M3x3.M20] + this.matrix[M3x3.M10] * m.matrix[M3x3.M21] + this.matrix[M3x3.M20] * m.matrix[M3x3.M22], + this.matrix[M3x3.M01] * m.matrix[M3x3.M20] + this.matrix[M3x3.M11] * m.matrix[M3x3.M21] + this.matrix[M3x3.M21] * m.matrix[M3x3.M22], + this.matrix[M3x3.M02] * m.matrix[M3x3.M20] + this.matrix[M3x3.M12] * m.matrix[M3x3.M21] + this.matrix[M3x3.M22] * m.matrix[M3x3.M22] + ]; + return output; + } + + transition(x, y) + { + var output = new M3x3(); + output.matrix = + [ + this.matrix[M3x3.M00], + this.matrix[M3x3.M01], + this.matrix[M3x3.M02], + + this.matrix[M3x3.M10], + this.matrix[M3x3.M11], + this.matrix[M3x3.M12], + + x * this.matrix[M3x3.M00] + y * this.matrix[M3x3.M10] + this.matrix[M3x3.M20], + x * this.matrix[M3x3.M01] + y * this.matrix[M3x3.M11] + this.matrix[M3x3.M21], + x * this.matrix[M3x3.M02] + y * this.matrix[M3x3.M12] + this.matrix[M3x3.M22] + ]; + return output; + } + + scale(x, y) + { + var output = new M3x3(); + output.matrix = + [ + this.matrix[M3x3.M00] * x, + this.matrix[M3x3.M01] * x, + this.matrix[M3x3.M02] * x, + + this.matrix[M3x3.M10] * y, + this.matrix[M3x3.M11] * y, + this.matrix[M3x3.M12] * y, + + this.matrix[M3x3.M20], + this.matrix[M3x3.M21], + this.matrix[M3x3.M22] + ]; + return output; + } + getFloatArray() + { + return new Float32Array(this.matrix); + } +} + +M3x3.M00 = 0; +M3x3.M01 = 1; +M3x3.M02 = 2; +M3x3.M10 = 3; +M3x3.M11 = 4; +M3x3.M12 = 5; +M3x3.M20 = 6; +M3x3.M21 = 7; +M3x3.M22 = 8; From 6e73c602bf8ef85123163b14d14713719285ceb5 Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 12 Oct 2018 19:23:40 -0500 Subject: [PATCH 02/16] art --- art/oragami_dude.gal | Bin 0 -> 1417 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/oragami_dude.gal diff --git a/art/oragami_dude.gal b/art/oragami_dude.gal new file mode 100644 index 0000000000000000000000000000000000000000..602dab8f55c6704c5a5219956d8a44d241f43c6d GIT binary patch literal 1417 zcmXxii9Ztz7{GBy-h5`sWWBksggKfcM>Z-)qp?tq90|#ah9#3@49&IXuHNOS&5)1^ zDNT-gd&QJKGSbYEUgelH#<17C^%s1f=l49v&qbW~F@-|y#l^&M;&Wb&Ze38h&-r}f z2WM4xN~XDn4uW?2tsK~)*7P~)gwY+VY(E;82h-gZ91;>!!jBmHoPcUxC~(wvL8A?n zYmvnx_<$Sjbxs7rx= zdEXIT&HUnKp-p$yh9qR+C4I0pjxzmOAr{`v79YiB1&GYzoV~L8At$Iwj;An>;9NzTLV>YeRX3`PZhk+*EOMy4$|_$zMy5l}s%cS%f?kwg{; zyo5?iZV0O^HKS-X$~QcIww>}q6_+3OQzyj=1kyiD31hXEpcSFEY5P3ib10Z*Wb}}E zKAJr031TlwAJT_|VH}o3yh{ddlqv~q{lu5+M(h7oC~>2^Dz1;6@Z`Wjqu@HvElupg zHd#zg1&EnQ9}@`68GCj_2j*PPbze2#BF7H<-5gO`XKUfmAo8Gc&eG$IP(gD0j8E`eMd>l zis5|XxIA=+yL9JY-GKp5&1qGLDL9Jms=~{v|6{#n_v68Oq)0_? ztEJ>&KnfJNV~Haa)?o<7hUtyXkIuNfF`-bIkj-aAL)WCmR@(Ty`5#%`u(_X3 zy2{$r{q}2pm>~JUT%Gx-BeruG_QToio6D<3z40hv5B6)vS6jhE@1OsiTmuJ^=`XBB zVAM8POm-I?(td-rfr9x+-qjq`s#nNbc8p8}B~KzZX6|?N8xe?m7x%#%t?U}}R&X2I zIh}WozV{rO&@3Yzg0&syL`R=YY#E|>=2UTtuCIV1*ej^@u_SZCr;l%%zy^7ci&iZ( zS)G8Nh3$?aH|BpgZ_CvH+6%@vP=>unG#nx;l|w>#a6i()&M_7~NxzRH$mYcYX9HKo#$utgD(XckEUpeGQ;&ssuQ{gMyn;yqK3%FtjCM@LntU1dcdj~}5vr&;5a+ex z7WTGwp(GwagnV;|S&EFaJ_>Vzw-x+7CE5D5*+#@C{NjHH2VWH?lyod>7+TR^d32B5 z3|EfZ^5N69ro{3Sz}-62Xn1~TvKFX3WYq~wQk}`syDGo5A3+=8DzPBAk_lQyI@jB- zVAKIJ(Wa!vN-V3JaxH71JTL0P%Ai@BI!Kek;N{KI{)SDlGdWGqL?gs*k5ISOe(TA$ z+JoDKaL0E+;hEnLY(xQ_pRag@`GXjf0c-Eg(-sT}lx$q?ydE=7;m2kvBj5ELvtp+5 z!lJZausY2D?5X{0eLYOGG&^hwbaxtoI%&rUoTpx5tBWVq1AwYQv$V$b)wHL^m<4*f HuL%DSW$l{) literal 0 HcmV?d00001 From cc9f21e819c65588540d2040eff7590f2d756851 Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 12 Oct 2018 20:12:25 -0500 Subject: [PATCH 03/16] update --- art/oragami_dude.gal | Bin 1417 -> 1758 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/art/oragami_dude.gal b/art/oragami_dude.gal index 602dab8f55c6704c5a5219956d8a44d241f43c6d..4bd36f00721013849faec5540ecf24991da22641 100644 GIT binary patch delta 933 zcmV;W16urv3*HTXM`3JbSTZm$N&x@>cmeHJ%Wi`(5WH9FKde^DvErcuJwT;Gl=Oho zszvG92~M$UFv6q~{rawXM7j0agSpsi?A@7>9}{mnR&xz|-f5wl1bx><_z-1ZCFq3+ z&s=;~{nSs}mL}XIWa`|QF(2W5XpXN;Qh@Nrno`x`hnER|QkG2BZ85a`66E}w(@gr6 zZZjoSmtYw94LITkAipAG7|{n4|yW*W<~#8{7H|m*=|aYybcNcmb`F zQ3`-C3`2YWOKTx4ymg)QLy^%XFDZiYMDUIMN~@hmlb=Tn4j+C{xL^IL)Zph9!9$C9 zL{BWvPb}p9TmB=9!kj_Tudc;Iti&1~UM=w0Tt|AnIdvk}$&`lo2zc0J&ePKHk9idF zp1hp@3sYSU6{M%XVgr=rzD5850043T004Lavz7z%0e@rw004LaosUrpz%U3y{n-5v zJPKVv2vI6zg;HYrqBVAeo~Wfh9W{7ALfDLu$7m;_yc0=Y@8gbXw&paa2-_+EQ%lw4 zISAshd8XE%2tM%IeE!ztb+t+B$`jN4i%9EG%MZy^!8QN@003wJ004Lam5)&hz#t4m z`{Dhsynh7(A*-#cV~m-;7d4&;f8)FKQTY#kt_U6~;<5EaaektZ_iuSehN)a(si-qe zk*7pGyMkmjJS=~FS@t`S#EvhOD;OL7@&tIK1B{Wkk@w{6_R|+mM!iP>0001J0001Z z0gaJS4!|G?L;2YKuRK|ZO;<_97z6TJFvc6fJ5K&7m)bb_xdiY~0zO+$B+OqW1)ryR z<~f6OEG>JA+m+`Q89&>LeZcJE_k*&SuULReQ4+p|Sz>s2dcJj#OOs+k!wgCbOfRrh H000001Pr@w delta 590 zcmV-U0xQ4*N)mm5Uba2U76(gMNpA@b#XQ%LBwf@Qr~!_-~a} zI}K!r^&3rpFpc9l3?imST^|K7M8o(Q(mSRdp$-sybEwiyk1r{cagVjvVBCq|^=Pcu z!(9p-NPj;3eM#BBAHu(Wx25%>QiGQaNlQ`cgoEiJIlWpR(( zQxV?r2sJ4^6+GbB0(nY>c-*4{47uC*5X5OInv(*K#HV-7-g~qrFD+uT!~t9Ze{cW* z0C)kFk5LN1FbG5a*!@pDSOcLU)grDGiS|Wpd=Y-*O#SJq!Oty%hZgY|J+U}Hv5@z8 z{UeLQoI%l3*Ww|bjWs;HI^c0}P<*%7n^TLY;FN~<5p3S~PyF9~G=kgK$h8$KkSc08 cx1 Date: Fri, 12 Oct 2018 22:30:28 -0500 Subject: [PATCH 04/16] more --- art/oragami_dash.gal | Bin 0 -> 1147 bytes art/oragami_dude.gal | Bin 1758 -> 0 bytes art/oragami_fold.gal | Bin 0 -> 888 bytes art/oragami_idle.gal | Bin 0 -> 569 bytes art/oragami_move.gal | Bin 0 -> 1799 bytes art/oragami_run_attack.gal | Bin 0 -> 1887 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/oragami_dash.gal delete mode 100644 art/oragami_dude.gal create mode 100644 art/oragami_fold.gal create mode 100644 art/oragami_idle.gal create mode 100644 art/oragami_move.gal create mode 100644 art/oragami_run_attack.gal diff --git a/art/oragami_dash.gal b/art/oragami_dash.gal new file mode 100644 index 0000000000000000000000000000000000000000..4765790da2fbd4c499143c1c7619be06dd8f3d99 GIT binary patch literal 1147 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 S@A;X(k+2cB(`#_zd;bDgzCRKG diff --git a/art/oragami_fold.gal b/art/oragami_fold.gal new file mode 100644 index 0000000000000000000000000000000000000000..7a87425137f15f422a0776da8e4bc779ead583cb GIT binary patch literal 888 zcmZ=y%t?(fGBB`YWMHUZd>d-(f7n3e&cq-5)0XyWWV)Q3q%bi=*EvKWB(+R>dW6Ns z)a4!zuNQ9%esS#344seFb@Juvzb&IBuN8Th-HBMZYmQo>&&k;AAXTryJCOO7~;zpiF`!6sb-OeTS zaKCWa8`TL5uc^+8Kg1to&LbhF@cz1gzEB~4Q;L^#T-`|zcs*%Uo@U`YdNXxf+ugkco_Vul#7?Z5xm2Q**Lf7I~Ky6_Q8UAWT}$14q@_f>K)HFGKhF^kmEX2+5`TO2|6eE3>4OgoD_Q`D!h2ovMh#&M$h#? zc0|MM;AjBa(NV6tDJjJ)On8E*!sd-yc8!b*r#57@?Xp@1S!Nadp=oGkMNxYzv9GmKKmYnb7`r<&ttzfymi zj+D6TOMxd03Yo$HH-sDbVqr*PZt8F4kHIlr69Sl?hS^0LZX_U;qFB literal 0 HcmV?d00001 diff --git a/art/oragami_idle.gal b/art/oragami_idle.gal new file mode 100644 index 0000000000000000000000000000000000000000..bcc6e43219048c9d67ed1d7045d5cef63e6b14d9 GIT binary patch literal 569 zcmV-90>=GEVQghsGB7YC0RRAa0qu~_PJ}QJ#_uM+!=%X`4Syow0ZfF=t_QLjCF{An zbfvMhP0O0#(>pC-HeP%IxzL$*zWIG$zA?0C7WT|ou4F;tFeLEC+o3B+loEJk{Jk5d zbE!2xxFt}jv&3FZ;B}P8XDaZXzzdbF>iHLI3xXn*>UA?}_EXgCli^FeDz}vq$`m9` z;yYIhb^Mr@F6FWq>zx`lT!?b(*4$rT0puPVcF10k)ya8~=l;OVia=wiw6p#VVy&5= zBTk0S*_vCetOJfGCDf|vi0&6tIPr&lPXPE$lTfo0hJoUZ!hG<*=awG?lA+cmO_XL? z7Dowz2cbKP49RkS!swk-Z^#4TY>lb-b}+BZgNb#@An+ml=V9!xJn|_S*Zu~Ndd?eq z0001Z0mYEP4Ztu61NYy8aaf|WPz#D1h*CxEqdX!M&c=z^r&3k3W78sG@c&B?CJJG) zUA_f?XO86M^ilZ$!fdF;jffQ5EU*;}zDYnjd zL>d9)lIz?Tj(D*Fp4`aqbzaZ8Vyy2*@Pn)=?#-QFGxfMgFEeVh=)0QoaPGsy*jKNC z>Gs1ET|S6>Hq|zYtoX`%&ksLgRvruQ`Bl@ulE;;s$O`zuI=J2Y4>#5%IL&@OKI*Tg+LE{}SDvaEtq1sr0DkoS?- zLDLvomnF>9&&318ZMNO-k;lVjY*$A~JW2|6jOrm%%^(sDp$Ct0AIN^LdDk^umj;ta z6%JTu9iVdrkI(dyVc%Aa!mF{s*CvLm@Y2&aWCiS)bPm0wi~FS%B-7iOMLzcpcHhFj zQ4r#WAS)nq-eWyoAZHG>x&<|>EH(@RFLf{@L^=Ss9U*H(zDZjqWp(rx){{hKxxOnz zV%TZxeoBok*@l0IAgJxp{d7OR(8&*}*5&y!K^Fhn>-YEZ>P^zfjPzXxNyo3tZ|E@b zP`y;s;x>c}S~ZJNV&WuiiCb~60UK=2>n-7w(Y{p1&g>FjW=2r(4D@Mw@3{2s{j4%^ ziW^%gm=AhDO;$2CtD|(R4~g2(iEw9SCkr^4;BK|wI18>%D+i*@1DeN@{7-2iNfED4 z+%7c;60Di!o*0InZLH_(=tQ654_L=c_eiBq9L5L7hM{FIawZD-WDJRLE+Xjw6Jfc; z?B8hZ%P5=<;uT#jXLDM_e8_*ixCGI65S2jpn(eR)&`7pT3cU-AwLfdpaG^5v!>Q~Pc?Q8ZZdrpE zxURl@*fDYz$hIA`6@y{hU?xgI1llYn$=++xzpm>36ihIDxe&x4B7O4%zRp#M?u7tj z_-`l_MHtH9jx!U5Ys9$n_oQN&yd&-96|s6P6Xb(kKt!X|;M+u3Pg}jZn41h0T<6R< zF%DOvu-s_{I6@2@fr-uVe@)TYwmRNA@;)`7a&BB-5JOXR@y!P>&C%jp|Aah#cd2 z1GtUT#=~6}7NkK}F&epziWjaeCu)|Ct(T-e4$nND+;_h{Eu|Ga+Mo$2%uNS`Bdo{A zl8Qx#VsSKwQ1X;_Bqn5HGpF8D*6JGk?vPDE1TQL^g(=|YI4|){K}XmEXih$VqlY;{yJ)5_GQ zY0k!=Q!c7JiTk?>ke}SUD?P7W?|PXZih`0M@DS=1nr?{n27nypQRWi}>38!l=a;po zFPmxx{P^ex+-lK2MvD~SueAZ1*bCkAnD2W)c(|M-YqPH1+>1nQbyAo*ISApu)rsT~ zB9IBkK5IQsh2gIX? zO=i`{`fs}}JJlH{VU#YkUUdASXe@WHSPa@0GynI~lzuqx*bLL!oJ({t_nibK#C=xK zY}tK8bK~&-aU1>Au1;5nCr39iUw2QLu9_4%Pst_nI(&={!#yZ2QFOJiUtXteTxsqZ zn)1qUZ+A|x4Oc%GHN;I5b5Yw|7HU_Mww!3QceKh0{a*Df)&%j?Til9`b)w@l$Pz|0 zpjveld`3tchh%l*^8_N1M zS~inr7F_ZUMj;Z(^-I`wrcI^FyG{b4DbNM`s>BWcX*iSp?GG$&)&4^5F`y%~4=E1v E4^dH9IsgCw literal 0 HcmV?d00001 diff --git a/art/oragami_run_attack.gal b/art/oragami_run_attack.gal new file mode 100644 index 0000000000000000000000000000000000000000..587dc16251d35815fdf69b4d368f854db7d661d2 GIT binary patch literal 1887 zcmZ9Mc{~(&AIFU&#_?c6uH2@=)}UEeA?t{76mo>H&Kzmbqe+ZmT0)0OEeaQSE`<}Yutz0)z8b3H^g$A{E!I!Fi&>;t*vzAA)5H0Tj2_};@ z@)TgTWt?G1HGhkftk7Bi?E-qLTUC=MTU97uef>by;HertFRZhcM8Zid`Pq>PyZ%fa zC^%9MdLB`9UB++EASp({)Am?A<&5#o&*1?4lK^F7(dbgT!6%95@anoQ0X@hcpsj6okugZw9*%3iRnXbKbrJjLGxW!zj1JRE}2;g=HI<+6eHkBAFLC^bLT%DklELi2-f;Jd@)#xq+wDUVz(JTI)y;aSJ@mG-31|03z= zeGpF&e%phUxU*jO0)jsEx^Or1968K~6GRy>WYAfn{-=;m;%k>-Dn!Gb@s3L!JG_CH zaht`DMbTlwOOZlV(7o1uv>SyEbBhD0n>E2S)NNO+5vA*Ui6S(meRdCSM1eUqW0ZFkOJ+}&)z$aB2Ibr-ZRs-n@;JAY zfU5cz@wjabdg{Y=Z|mS!afm@w$8@d~UVDj&yU3O1^j0!Z0R`h)NEe^PM3)($A20dnI44{Y@Mfc#pdwISUp-PAnyBC#4D^oN%wUW9uqCG!JfaCSSw3A*I523q; z`>&1rAF~Y$94CuF>Ds}pDEEnCCj9@a|I>nKxC7pi(nE#~ov+{Qip;BxXqTTKg6}0P zcqQ?CgWpI*jrXbb>1;xY%QLNw>_{iMNM0*Qe2N0+7h(Vwxp}$VJ%xo(tn0PZi)E)O zin)~#EgERz1pnP2A+H?W-Z&P^(z7EMnREnW9s-Cz6o9#U3@qbkYYWEe-Lm|e(8Ew$ z^4gdrykizgV%4iNy!Mlv?9-rMp#?*2CeG2%-q=cEF3bykRa0xihaZJcoF==+Mc&rt zRt-ig7I;%}F1=I9vMFg9eA9x|v*v|%xm(IdSgRNknaTbxkk-L`dG^B%xi2L^|3q0G z{e&xdqgjJP6J8<+tixC3G9iblwH09R+N1xK?xZ z3sbeM^$s3*-LY-|jFT%f-n!JSgA96p1TguzwQjqOhzi)sO?!Ny%)+JKZ06*5D z1|~g}F+b*yhdVR!f07HrLj9Q4L-A`~J`DA%@*ee0;uK+2Z@&Y?>S6{bZFE-ZbRpkn z3(;?9?hjC;c8`TQjTgUM`h%LBP?4Xq#_Q0KI?`uVEb^Yd)}H6yb-Fbr*7ZQ_Y-+v) z3u z?lI4i-G~&E&5WM0cV>q$gUvX2Je=9P>q^jvFCyO6aZ1mgJ5_a9*55aoW|0Vpp&RiW z4S?7Pl#$y>4uqa5NWb90Z`!m$DmOv(qmRB9yb$;?fAkoGvTf9PmHt)I>}^(_nj4(2 zrFroj*a`*jRA@kVIFmazPK=VqTr>f*>to_f3* Date: Fri, 12 Oct 2018 23:03:57 -0500 Subject: [PATCH 05/16] iutiuk --- art/paper_move.png | Bin 0 -> 677 bytes art/rock_move.gal | Bin 0 -> 758 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/paper_move.png create mode 100644 art/rock_move.gal diff --git a/art/paper_move.png b/art/paper_move.png new file mode 100644 index 0000000000000000000000000000000000000000..ea491405e69dd0d08d6d403601b4614b69f433d5 GIT binary patch literal 677 zcmV;W0$TlvP)^~{cupqqIJ9kj#flH2iR*peUzPmD z|8xFiph1rpKKfUAN?E+gKVC2U1e$6Mv(;=i{@Hp-1I?gG^Rv}#HvYkSHG(K!>@t|f z<6|j;Po;~L#cRI0pCAv`xAn8-_3OB`ZQFs3cN*Q}1H<9){Crx2$@O0=)>t?vTS{*% zkkPr%5J9(ZkVr(v4>~N><9SH)xZ(KcTlkWAZzs+Az71qf)Bl#O4W!R4O$tqjpg1Kx zb;Zg-Uf3w$ujv6(Oiz^H)XgF*=ytDIqQ37(n3g356%%x|p>$V!$n>1&HgC;=+qC%D z3Yy0av7aO6b>R9zx0SjDG?3OK>PztHSJ-jGJcPVC##o-`O!b5377RSW*PObCQjk)a zeDyeq8$hQZl6a4S4Zv*;jtm-3`(cD}0`V_8WRBPqJQ4H|pMv1H$@m^2k+zo@UmGID zxHjYj<*forqQO(R)Lp!LOT`LO3K7JdRicOci2E+kMc+M(?R_jnG2pwQkWQ`+rC1fgK0ukYTRc~LF;>zc>Yaw_v%!z_It&6pH^ktf&h`SvL`1s|{R zJ&coRZj$!$stq|28~n*=)nDPs70aK@Tkc-bm|gH~@%D84 zJN}KWf2!>_ZO}ZoOuzD)sNT0(Iu5xN?f9 z1hfQwf3xiE-}l?k2!B=ec(QTrlwXalK8Ls6nWy?O$68cZ>~drj*XO)kCHuCm-FK%M z>PskmoaOE{mu2q$`Q9llk7E^N<#aV;R6-MX&hg)oXgYQJqZKZjrs_QNygX@>`NuQN zkELxp1uNd_zt1T22D*mZyu3lTf49k=b924A+wbbdwnm<9(^$EUC!uGqYUPqM+n26O z2uk!lapk4`vU?A|>aJ+JDsiqxGE&R*;ST9 Date: Fri, 12 Oct 2018 23:14:21 -0500 Subject: [PATCH 06/16] idiid --- art/paper_idle.png | Bin 0 -> 321 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/paper_idle.png diff --git a/art/paper_idle.png b/art/paper_idle.png new file mode 100644 index 0000000000000000000000000000000000000000..e63c84641582572190526c54d7ed46c7f108408e GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!2~3KB)#GTQtTz3zOL+#xOiE3W&bH>$pVGM zOI#yLg7ec#$`gxH8QgtbfW|14r4}g|>zNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5|ATavfC3&Vd9T(EcfWT40#PZ!6KiaA@S+~qx>z|nHEp6hraXL_cu zhlXvPN?<4dTA7-3&!x|c1onKtcifht{CQ~4QpNu)u5PY94Uc&)1@(Qbzn3yW^x&+O zEAo#DynH8STppFZ^Yxtz>>ay`cih!(^We*_ecG@{@ejXJ+f-3r#e`=JlX)VK{94?~ zaLqF+YtlQO4b2B79e72aFx=Rp`dWAgj{vj7bc^t#H!B$TPMozj|Nk!@pgS2nUHx3v IIVCg!08JZmivR!s literal 0 HcmV?d00001 From 8246cee85d4e6addd089f64fb31ff9ba4ac74e76 Mon Sep 17 00:00:00 2001 From: Marco Date: Fri, 12 Oct 2018 23:29:31 -0500 Subject: [PATCH 07/16] 123456789 --- art/paper_idle.png | Bin 321 -> 321 bytes art/rock_idle.png | Bin 0 -> 390 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/rock_idle.png diff --git a/art/paper_idle.png b/art/paper_idle.png index e63c84641582572190526c54d7ed46c7f108408e..2684a65b7ae2660fa1683af62f0a23c0975c525f 100644 GIT binary patch delta 17 YcmX@ebdYI+9-EB83supIjV8Q|05gLHBme*a delta 17 YcmX@ebdYI+9viRhKjkdhjV8Q|05cl}5C8xG diff --git a/art/rock_idle.png b/art/rock_idle.png new file mode 100644 index 0000000000000000000000000000000000000000..9d190fa1b313896a563828d1197168e19c630d4a GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!2~3KB)#GTQtTz3zOL+#xOiD)l%(gR7yyOD zOI#yLg7ec#$`gxH8QgtbfW|14r4}g|>zNd`E_n!4!ckJ-=MI!H2C^Bv8Z_mB6id3J zuOkD)#(wTUiL5|ATavfC3&Vd9T(EcfWT41HPZ!6KiaE(Y{F4tfXg-m#6mIG;VcK6+ z!rkyHOlB{eN#)*jB`}d)sc3Qe!hH=$v)+t{jI;)+Hq#4+bR;7YA0J z6%315S67J~J&|Ym{eh@n%QL-4SB(Wic&E5tcAiwF#^%KE;_0PRU$@WOr?^6BbyW+i zgW>{~Wo$8S!mH&hIS=mblwq2Y$vm&(L6pJO!@;^kN9cR3H7`5RD&6^3|rekc2diHLk4llvsSZyfeLG a85rzbA07Q&m~ Date: Fri, 12 Oct 2018 23:45:30 -0500 Subject: [PATCH 08/16] 123 --- art/paper_move.png | Bin 677 -> 677 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/art/paper_move.png b/art/paper_move.png index ea491405e69dd0d08d6d403601b4614b69f433d5..c32cce736026c1b6ddc8a316c3eb4daefb772cb8 100644 GIT binary patch delta 17 ZcmZ3=x|DT-9-Fep;_1tUHkuSN0RS_I1+M@A delta 17 YcmZ3=x|DT-9vidqo-(hPjV6Um05Q-7e*gdg From f4a7fa971cb274edf1a6d3e8d7a208ecf0aa1895 Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 13 Oct 2018 00:08:17 -0500 Subject: [PATCH 09/16] alpha --- art/paper_idle.png | Bin 321 -> 331 bytes art/paper_move.png | Bin 677 -> 700 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/art/paper_idle.png b/art/paper_idle.png index 2684a65b7ae2660fa1683af62f0a23c0975c525f..e73a71fea5c17c9525387dff044998ec31e556bd 100644 GIT binary patch delta 226 zcmV<803H9q0?PuB85;%w004IYeOUki00(qQO+^Rd3JnDa3wA<5K9MwBf2K)9K~#90 z#gyv_z#t5S-G2(laf!~7VjT~L+?*?88VR5p zWFVs2*Nn2-O~}=S>;DM|QGlxNv6@B$Y|SN*zFun;0kQ!mvDKVQYaR_S9i5cK3y=vQ z-lJwBX)*yIK;MKwJVQ8YJlCr+0a!F{98EmU89J{185;rs008)6>J9(^00(qQO+^Rd3JnAtFz6)}c#$+*f1F7~K~#90 zwUpfrz#s^O*?$VhaS3N>O-Lv`ek4(e53L-0XGx{!auB@t-p4%vcjr}%r6KKo3=jiAmpE6&*?0lHk(#}4 S|N0C70000l&acei`WD+B9eZM-ITsg`SVzfEoYH1RkC>5c&-1 z!S~dj%`MX3TY`v4`=2y|Cg9y99?mKPEufkMxkjyKGI+}f75rBGf0-PShx#TL?+72QxR{5jfRN6VOjB6edu`yvv^CysCjyp2V;P! z|5|@51IT!NAi4!I673N7`jmKWtcr+r6A|%yB0{j92z$*_SpZ%RvCJpl?XlJUR!1)qGL$umY?+IT`UY24J6#mU$SgxBL*SS5IhwsL>TN z+5m`owrGH700i4B0E=@~yv%SbGh%CCuoB;609HF$Jyt;CJm?{S7Q)^DTVN64Wj$b? wAY1pJt%2o^Jlmog*d>VM*li#qMtnj%0a0ykj())kxBvhE07*qoM6N<$f|0-+xBvhE delta 587 zcmV-R0<`_S1*HX$85;rs007T`=YIeI00(qQO+^Rd3JnA!D5ICB5|K1efByjg0RN!9 zr;`8x0su)wK~#90?U)OWgD?z4bN^Ft94^tbWRbG#8h^)>ibxx)s)~3{Ch<75ZGFXx z52A_decxY|{Kfxs{$!v*j~71rS9wZVyvaXaFZ%?VY7Mj1Y&QPcdPxJ#ph@$y)oeEY z!Fn}L`n8xE{DS}U>e~XmGYreXlAP?5J^|R&m>$tUT+kuUD8r|aq!{PA!d|HFa z^y>UC(Zi44P;K!|CX%{ zq|Yr)3QdThI3+!G#mYfm*eKwy=>bzrPn6))%_1x4cCT2XzVAnvf0iW%6%%x|p>$V! z$n>1&HgC;=+qC%D3Yy0av7aO6b>R9zx0SjDG?3OK>PztHSJ-jGJcPVC##o-`O!b53 z77RSW*PObCQjk)aeDyeq8$hQZl6a4S4Zv*;jtm-3`(cD}0`V_8WRBPqJQ4H|pMv1H z$@m^2k+zo@UmGIDf4DZ}1m&#)N}|D2xYS*|drQR%QVau$#iSFAl+kTY`1>rm)r~;@3dk(h7JmU4ZEW((d9CdBlKW?hh^rB^Q%ENli(352q;?4YXp# Zh#wl1EzMG`i$VYZ002ovPDHLkV1g`J7jFOn From 202e89f838c2d89189750e81ea6430374542ba54 Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 13 Oct 2018 01:26:48 -0500 Subject: [PATCH 10/16] pngs --- art/paper_dash.png | Bin 0 -> 408 bytes art/rock_attack.gal | Bin 0 -> 1183 bytes art/rock_attack.png | Bin 0 -> 470 bytes art/rock_idle.png | Bin 390 -> 382 bytes art/rock_move.png | Bin 0 -> 482 bytes art/rock_shield.png | Bin 0 -> 547 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/paper_dash.png create mode 100644 art/rock_attack.gal create mode 100644 art/rock_attack.png create mode 100644 art/rock_move.png create mode 100644 art/rock_shield.png diff --git a/art/paper_dash.png b/art/paper_dash.png new file mode 100644 index 0000000000000000000000000000000000000000..f38a5f76be831d51f396906c0fadb7a8d9b15660 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^6M$HNgAGXj{PryYNU@iA`ns||;^JjhQ@HqZBS?*S ziEBhjaDG}zd16s2gS(Fl&=`fX)FK6AJ(I%LB@cm0I7$lq+<`L2KsJL{gQh%?Vo7)O zb!1@J*w6hZkrl{iOY(MiVfYV%3-&Ib3>5k7>EaktG3V`#K)yo?0xTEiUHM$Z>A#@d z;kTocfR=Fsw~_qh32OY?rsQpD|NbvP#7tg%PVv8ga&r>ZwtU+D{P6t5nhj@uZA`t^ zuUq~9VAPxcA?*%zw)RUnwh6QBj#Bs3eSG<&R{M%9rez#IZU0PAD#{o9q_)_uZ0UVw z)%Z<4{_7Rz-Q9oXTSZ;Re=ARK#!vs>&-PEy+?t*nfvHRA_#TGTw=={Stdaf9G-c~&rh_)G6;A9}^&04X22WQ%mvv4FO#ouRtw#U= literal 0 HcmV?d00001 diff --git a/art/rock_attack.gal b/art/rock_attack.gal new file mode 100644 index 0000000000000000000000000000000000000000..f51831c41ce6398f467e927d60b1a9ffd54f6f84 GIT binary patch literal 1183 zcmV;Q1Yr9|VQghsGB7YQ0RRAa0qs<=PQx%1+>!VP%Th;_G@@ilkVvYQAu0%}GP{jS zEF9a4Q>5_qob434A@*d6pZ(swyOW=@RmWOx$&PncXqD3>jwyK)b>HN4en-h87w=6U z)`c-hxTU1jCxyKQC9i`zJTr-NN?w?%bt}Gjol}66x;5Lu@SmXKpB$MuD%Pczx^t*$ znkI7q6;dBQ#=b7Yh3DRgH@aU5DT}r1bbozCNamT74d~}|c62h-sonE#M#;8g%8o5= zz--AS8&DZLaZ6#1wvKZWkbqUO0S26Pq2dn*JOhF+RFaAx;RnFC8W!Qd6ISdcm;vjO z&9C4GX&MF&3yAmYC%EsFdO@BLYAe{_x1+IT76q=sgUFjO`O(?Q4>uIJkkkE`<|U{9 zeLu4BlDIMY1{l4sRHy&|0C)kVk--hZKnw&cqKZ_(Cruz)pa(kOmn!(?$vbbFNJbiI zW!)u!L}ZpR6;kg>LuG${%r*aF(nDjq_r(m|wSyjUW zr*AMxpE#=|d>ATCvGU{soVC7NtiacN1K`YED*ylh0I2`~0C)kVkg*MePz(hpVv0;b zlO-ZnV25mwE>omUNu4@Nz>`ioS^p~$2xKAK+lR3wu5Z30Qd;?6?S%?4t z005={004LarI5i10znW2BQgr3@M98U3g%!2{*1z}Pv5>x;w&gAmK8?e#>Ylk> zmVck)W^H{F1bMrhEc6G9nZa3JXW4n&uU3}Bez)45Df-Pqgk^!GJig;KN}4?KXh)Pk zX7bfd+J_}4KBKV)^6q!!xiN$l2{ZA*-7uYag*zA(mWVgJHFSk3fCUmA?eHEgBZjV; zGVyq0rX2fY^C$fTt({hC00000p#T5?cmbu5!3l!^5Cki-id2!0O@y>y59uI3tMKbH zZ{Ied3j@QUCL462zDS!Od%hP5&KOl z%-^`gA_zwaM^p?((wxd;fvJ7HwfUD`0f}l?umAu60HFW?0C)kVkh=*2Q4jztvI?s( zu?evSd$0pDt1vY*Hnxeofq~)S;h}gek6~~2!%ow`-+8w+zG;N{xLpi*rNo}el`LnO zc|GrjCVV;`Hv209Hw#D;e31$GlV72}T0Y>2v>@MQEM&=b--f(hK%a{NhMjfZ{Nyf7 xCSPy|Tcrj0XpUHJGRpp?Dh;r?kPM8PPG)^Z-x8fMU+tLuiDy6-TP^?q008KwC&&N* literal 0 HcmV?d00001 diff --git a/art/rock_attack.png b/art/rock_attack.png new file mode 100644 index 0000000000000000000000000000000000000000..805da9c0cce12c16e4a85a2d0b366abf57d7d2f9 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIk!3HE7J%1boQtTz3zOL+#xOmy5G;dBg2a*>r zag8Vm&QB{TPb^AhaQATm8lzB_TBKmCXHwX@!lvI6;RN#5=*4F5rJ!QSPQ85kH1JzX3_D(1YMuE@t^DBwEVcLyV1|6>k~ z9SlM&eB1j9SOp?@<}e(OV{&bBSzsV>NY-oF!jz2kTe+N(9@|g)?|!*&|5=}Hm$@{T zt`OBPTVx*Ny;kCJNQKzFcmDdVdP=JEdaT+ucIqo@ewtaa?O%rS^zKH6t zYO1UdKYws@x4npKs?CP^9}LPqS$#Tw+SgU8D){ovn6JAF-M?CJ&w5&M_SlC5VJBzH ziR90GVAvpai0#IaqsKnYTKnpEgxx(Z1<_KSxtdvwG1pFiQj}$stwYiNpk{`JBtgFl$*Ryeeik+dPZ!g)4WMB5boFyt I=akR{0M4elLjV8( literal 0 HcmV?d00001 diff --git a/art/rock_idle.png b/art/rock_idle.png index 9d190fa1b313896a563828d1197168e19c630d4a..f4197897eedcaa90d0f2dd2cce58c95e15f9edda 100644 GIT binary patch delta 277 zcmV+w0qXvS1O5V#85;%w004IYeOUki00(qQO+^Rd3JnDb3vXF)e~~m?f7wYyK~#90 zWBC97Kf^#`oD$BFGylUdIR+D}AE)LON3X##sg58;KUP;GYeqJN7#|VRkJAAl$#V~0 z!7;i4$a1(GfoujY{pflzT#jrJE{x3q&=Vp$A6sfhPWk8w5u1MGtcf!fJ9(^00(qQO+^Rd3JnAtA{(4!Fp)G|f8j|)K~#90 zWB5;Fz_961w$h%^GfdUOkb>Q)@R20_HwK~OydvQlK#a6Ncjhf6)O8YTuXaEY4L z-5v-;YSJPMNB|-TL_h@$r~sk`t9lg0$Zk3J;1w=}<}TvZGZ0h_ltt4+l6ocvLICLH z(#rL>p1vWd603TI1wbL7cLb&eTt*YC9ytlYy@?zGm}vu^c;H$v)x%RQN-{+YO*{!4 z%|V#z;aaf70mP3413fjzmMHa@zQ)WrXr4gJy;#+w2N9YcIKmoAxD;d6f?iZ$W+<#h j1)d@VO$tkCN?iZ|K1Jfi`*C9500000NkvXXu0mjfLCtM+ diff --git a/art/rock_move.png b/art/rock_move.png new file mode 100644 index 0000000000000000000000000000000000000000..a9fc14b403237d1d93d78aa406a8378c8ba7bc32 GIT binary patch literal 482 zcmV<80UiE{P)y+5Ac7EPiT&jp+kZ<41;c!-RFmwZG-KzPZ=0C>9I zU&bBO?;4RQ@g5Osk_a!wAE;IdXeJS{@RXPr&&AUOMDZ;jq2y_WsFNt3i{Qbd*uDIl zs&6Gg1GV6L1+?PR=UF1_a(krJ`jF5n``Rk|))@~TaoBDaUHrte(g2~qAO4P}DZO$K zzN+rUdpoEFUwyzSEDaKE5^I4ySD`ka3jhffDb`I^0M)Ftf Y34Cr&{HKo-WdHyG07*qoM6N<$f*J+I!~g&Q literal 0 HcmV?d00001 diff --git a/art/rock_shield.png b/art/rock_shield.png new file mode 100644 index 0000000000000000000000000000000000000000..f53dcc1fba904ffe02b13a0cfcb23f1b00828401 GIT binary patch literal 547 zcmV+;0^I$HP)fa+000+sMObuGZ)S9NVRB^vM@&RePDdbiWpW@hE;Mn4q~QPn00?w&PDe*f zL^A*Y002sWDIWj;00d`2O+f$vv5yP8=@ zxVLZOXW~nzWTU|7=dc{d{m*}^_?I1j&aGR@SCU6CS`tAKW?TiY2y_zFBE0-B*WbmI z2rB^;c?>WTfve7VC4%b;Ccq?IXK>z(R~_+2z=1iC695HF38XGaIk=YYxZB_VVvNOS z7-N;Z3xZ%Z(^Wji;EHa+JK@mJnG^sk=YUuRCQwNL337}*_$qnEuLKy8cgb%}LXFZ4 zezy9Em-FA1V$$v$aCp~2Nq`xA1*`CK1TcV_e>Vac!*xz>iEvHh_CKzh9mK>Hxw( zX%nb}ka21yR!OK$!0Rvx=hmq_1V?KybpZM)oEsq?1)OV+Sy_cje8l#5#(RLf6uEmq z1)n--B%rFIJ40OI7%xdA8(n4DSKTn(ZE}x*39FvHjewfvy&psFvZUg;ZvgkZdw=qA l&txTMEqx;-pHJau> Date: Sat, 13 Oct 2018 02:28:49 -0500 Subject: [PATCH 11/16] blocks --- art/Blocks_01.png | Bin 0 -> 1470 bytes art/platforms16x16.png | Bin 0 -> 1100 bytes art/platforms16x16_2.png | Bin 0 -> 1087 bytes art/platforms16x16_3.png | Bin 0 -> 1110 bytes art/platforms16x16_4.png | Bin 0 -> 1065 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/Blocks_01.png create mode 100644 art/platforms16x16.png create mode 100644 art/platforms16x16_2.png create mode 100644 art/platforms16x16_3.png create mode 100644 art/platforms16x16_4.png diff --git a/art/Blocks_01.png b/art/Blocks_01.png new file mode 100644 index 0000000000000000000000000000000000000000..85dd1697f9154464bf3efdbf20102856a7eeb207 GIT binary patch literal 1470 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 literal 0 HcmV?d00001 diff --git a/art/platforms16x16_4.png b/art/platforms16x16_4.png new file mode 100644 index 0000000000000000000000000000000000000000..87fafc7ab0b5054306091d6a9dd96ef24e664953 GIT binary patch literal 1065 zcmV+^1lIeBP)0O>Px23?3n*9s?>>h#l)9!IBjm1F=Ee10hZWE0!S9b+-tq?(Mis40G zT>Za4dGcrx2@iXAt|uwhnlZ zmH+@Z6*S<{FGx=S#?{4TwN6?B%E;G_K8LgfL?Jx^un2m+;rq{Tx9(FDAbkOT9O-(P zgwzB?U>E_gci;Nm)&d%cqsBuAD4mui1 zw#WGH1V|)c!*R!=jn`IwFdh@IX(Qy_)Ihm%Vq=}wM56nVm?r=kZG3GTn-4_`2~tE> zb56G>!dK!+ne%jhMztj^fZR4XYz+WNL5}41)>-{%gntILkynC}VIF|n9TpBpkGeOs zwnE}v4@Bq@wHMUzviP=~2m`_vyotD^wGfdVS#x{1&DyCK;sH@d)IHnNrb3s`U=~St zD9W8J!abzM@&5v({|Erm5kP^r+6B^%6MunHXNR}0H3yj-h0$+8N&;%X0@?;F6#+ex zD`^OzMz@l1P|48DUW*lrx;`ltw65UL(TNa}nTO zRA?F67=11^PIaWtYk~={F`Okp8yU$+?md2Hb$}zltD});)u9r=F^u1H(}ceBb^v#z zR;PtL7XcE>ScFQ35`cAEj9(GpEXa0tZvwRUQd+E;08hEQLV#p^H38mEN@cjlEj_J# zOPjkSN2O$_mL%og!831S)hfs3BUkKg^#IQZwCYK^o;qkga>h+Kj9J!L#3Le&um@XG z<&kN2aSC|d&f{_*we@&)E#Nv%PoJ&cU%L*tND;bXV)vrutTI%zx?6NLk^Y5J+`q`g jy*zXQ`4v^M8Z@_a5@00000NkvXXu0mjfw(ieA literal 0 HcmV?d00001 From 27b96083993ab423863818d90ac9f5a332914938 Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 13 Oct 2018 04:11:28 -0500 Subject: [PATCH 12/16] backgrounds --- art/Grass.png | Bin 0 -> 836 bytes art/hills.png | Bin 0 -> 879 bytes art/level_01.png | Bin 0 -> 61523 bytes art/mountains.png | Bin 0 -> 1548 bytes art/platforms16x16_4.png | Bin 1065 -> 1103 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/Grass.png create mode 100644 art/hills.png create mode 100644 art/level_01.png create mode 100644 art/mountains.png diff --git a/art/Grass.png b/art/Grass.png new file mode 100644 index 0000000000000000000000000000000000000000..f797f51a91cc1a1d79e9ff25d1c08a28f33596dd GIT binary patch literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=>?NMQuI!JvcsbduHn2{82NV)7 zag8Vm&QB{TPb^AhaQATm8lzB_TBKmCXHwX@!lvI6;RN#5=*4F5rJ!QSPQ85o%6d%8G=RLprhW1%05p+MW|$O{iDm=AFa z@QAfKJ~+3af`!M1NrH!udmf7j6Dyl*k$%JRglThCH_wz_c6ZzDyYfZXpIDdOetG8p z{=Ij(*R9gpe&PV@f<|r!X7L6#JqF$w2B{qkCIyTc511}cCUN$>``_cH)3YwT=$5^1 zd3?ph$-95vsF`n4;B@R2RAlPx$#3rEZspYdVsZEMz8N3aN$s=IG^}}hd0DB&I~Dhe z3G1J-SibB2-dlclqV>!m<*j|8*9)It{TWwn@*~P`Qtir*&R0&XOg?s+v2&iv@6w#` zKLVyfuOcj6_t+|`s2purXQP_k!t>#2aV+D;lSPlbub((6YLf8c=#+I6w=z0&|9h=7 zg;AYdyE~IXH^wNv;i=b|BN9)}pIdjw@@KNi?*~6P_p;xQlb@SYvi|p)9Rb#MwFTCf zrOV5H-f{T8@Q$LaVQKQ?lC_>$8>c8;c^9ANS!{XCXz`R~J1aN3FMGXX*8TOrUR+A@{2z5Xl$)mC%bh=$FG}gOE?@4aIc?l|C5bpV|B7ll-@kv4{Hx+ zHbyb93eSs_^8G;;*{zn(VKi+?N$IS(m-* z<-e%gp4V07y$rjrHwB%YxbfWIf7iFi>@is|H#p0Djg2PTlX(L7Wlr-Luk$}RXRcnR zTW8I)=mxov`SGiHcg5fD|EVIs?NMQuI!JvcsbdPFC3EL1`3In zxJHx&=ckpFCl;kLxcj&OjZr8|EmAPnGbwCc@(`$mqolyk9VlZAWHWd*XvzaAmUKs7 zM+SzC{oH>NS%G}EByV>YhW{YAVDIwD3=B-CJY5_^D(1Ysk=-TiDA9KDBI}RnfS4xh z;?TUKp*v=3G&=Z4UN3o`bWho4!J(2>udPEHE3N1H<)3={kXwL($$^1`fl+~hrGbH5 z4u3p8y%jV6{j=O!mBsKq?uT*C72W$!FP~rk{?_Nd)%Mjl7M*UD-y8Y;$DV55ec$x% z*Vo!zuR1>U=bAU?zZ{C@UZ-1gKB4Nux13AHJo~rS@BN?s_UW0%IWvzJFx+mR?!12M zbFJ*$E8FkOpZ{ub=abou&!SguAI|2xy0v{%X}~hmt#Wlgf4^xze?{t#)-GjsyXsA8 zd>7tSf1Qwjy|D6LM!r<>jLTQ5UYuDQP~CZLf42VCU4hq~A}ks9o`3!K%`5A#Z9DHS z&s{wK_lL))s~NVw{-#ut+PIfrZ~cdhYPs<#=iOurL%*|y)rIA6*gJWb(T~${(>6!h zsysK{F1KsfiMLK!+}cyO3B>&VX}ta1nQ;G|om)-6DO_(WteijfyOg5T+vg??x17Vx zcWhs9js3gXhmMEe{nB5*UVi7rrzhJB`X}V`AA2=#-JQC<%~x$?o<2wy>}jh%a-omK z;MXtB`}HN#SLWGA9S_`)-Mqi-{eQ*{=^wUB-7r0`VV+tNo5y&kD&hQ<+xO1eCjHo& zxSlB^_UKye8vQNdnVb$gZ}vx(yqAh+jNGj%_c!l9YeV>&@3)VI^EG^6;NTxf;ywSG W)JN`CrvG#pfWXt$&t;ucLK6Ui?`byx literal 0 HcmV?d00001 diff --git a/art/level_01.png b/art/level_01.png new file mode 100644 index 0000000000000000000000000000000000000000..8706ef19e4caaee824a67d67f883407590489463 GIT binary patch literal 61523 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�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 literal 0 HcmV?d00001 diff --git a/art/platforms16x16_4.png b/art/platforms16x16_4.png index 87fafc7ab0b5054306091d6a9dd96ef24e664953..ea4a668eac44585bf6288f1376507e50a9fca706 100644 GIT binary patch delta 984 zcmV;}11J2c2+s(REe8n*195{eXpuBrf2v7DK~#90mb3B z6&wSxLEHl&P6I2JAdz*p2r1zhSwUALPu{p~m+Rx6spLskdZz2=SFW0}U74n7`g@<{ z!89mN-@IN#!_yD%r?>BJ<>Tj1dqNnN00Ji=DW2rT&HvA5PaZ9z;bG+9B60QQf9vWy zPKKp8VQ33Lh12uN>Eq>@W?#e0=dX6p!xBKsTl;_q!xBJ{mVyPG{eTnLcOhd#`h$$A9|jBe}P42Cuot``B@3njUP~?;+$lS1WrUK0b9(t$HF)P zNWvxrcn2CqfK%c-#&Tqu(S)OfSO6zL8vrVf1BtM_B+}aF%3oYu?#fpMM7+P{R4)1H zIUl_hxp;sT90{=iZRR5^0GF1v^V9631ymn|@X*0MGnx&W5rQW~)f1lnf0|-~p12$a zC%uDeLFrO!ItpuNds_3+>%JGd>;V(3MQshz`olHYLvRn!c78q%svGJIp}Au$?)>~& zWVc1wBp|{Ak%vZ?cmV$u@S@l3dt(bZm$=CSN&=Hf@t(@_anwYF31P?5DA5jHo?|fg z1%?cY)`Y~ZrEu^WJ){h0e*sdInLbl$9Pb5acLWH-5x{{SXM%S6)XpTs5zrcGzLUvO z?sb-6NCHZK1uPGAC;}qVY{L*BrP*q*d2;mFF$@9Lnnyn%ml;mjEIZsAxcTwFmNR4> zgO8Q~-0&pt&-(1K0zwx8yt}hj&RaLvPOTNJ+{}_3n>Rxwm9_fSf7;FEBDDN~k(Ve} z#H(1YYz^@NN!ET1my*_^q(&lIfMp3Q0;EQ**~tx3vZ!2En3qjbLWWm)l>n<@iE->m zTcgsTEJCI777@96E&{xp3NOPu)_W;2nxvWl zPq||uKvTY$0Pi5RGE(QcdRFUMy2g|>*j!MNGbZA>EIn6 zzGI?!@p8E`T&%Wh>RQ6C#qODZl1X}b*M*e7cLbo~B>w;`3_=&Fd+9F#0000mtFD z6&wSxLEHl&P6I2JAklTV2&v^5UBP6KTi4^iWSmU>`bpNCpE!xXIGH$p(=<(g@3TCZ zlH&Ny>qR6y{qTNz`|d_Qe*Sbz0BH#TP!fvaMP6L}zdw2MXb}kydv>lTF1~zSe?6mQ zXodq)djK}LTpt}jUan#ECA@t8>iRk@0bsng4tS83001`?G~m%MNKXL9)x~ACPFe!W z$k&cOhqMGlAw2=G2ztHY`_FH;?o$&WeF1(P>3W!i)C5Fe7y+<%-}>FwK&Qd)Uw>SB z-6O8qXjY=zfa^IHSY!@@7MX*ef0ZEJF=1y<0=POU36zN42^di?B>&d%cqsBuAD4mui1w#WGH1V|)c!*R!=jn`IwFdh@I zX(Qy_)Ihm%Vq=}wM56nVm?r=kZG3GTn-4_`2~tE>b56G>!dK!+ne%jhe@3+>Er8rM zIBX37NI{O|_SRYbXoP$-gYPT>c){bMKkeS*1%S{KA!}ih%6WCIdRo1JJ>8j{!9-2g zS1M;cqo++$TUvgA3eu}L#A}#UwuShBWGI!mifc*RVx&YO_5jTje^vx=m1?77b&~Ta zD;G%1(nP97hSzwJ0Ig!_*b8@*Go0&`MkrTaBf`>i5#U`^Xc^iVeJ(Xlb)?Q~f(frN zoFzaT8OccQJ$`0&fFr=GqmgITp%TC`jNfz9gue530C%KTr-eKh0TRntgi3}IfOT7p zUlHIe$aZ#b0<`y1e_E`W08hEQLV#p^H38mEN@cjlEj_J#OPjkSN2O$_mL%og!831S z)hfs3BUkKg^#IQZwCYK^o;qkga>h+Kj9J!L#3Le&um@XG<&kN2aSC|d&f{_*we@&) zE#Nv%PoJ&cU%L*tND;bXV)vrutTI%zx?6NLk^Y5J+`q`gAiX?v0psr-0oZVmf3!B| UQ1W~(S^xk507*qoM6N<$f;z9Xi2wiq From b594ed566c12a5102d06805be81dcaa53d740c1c Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 13 Oct 2018 04:42:22 -0500 Subject: [PATCH 13/16] new things --- art/mountains.png | Bin 1548 -> 1747 bytes art/paper_airplane.gal | Bin 0 -> 604 bytes art/paper_airplane.png | Bin 0 -> 338 bytes art/sky.png | Bin 0 -> 414 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 art/paper_airplane.gal create mode 100644 art/paper_airplane.png create mode 100644 art/sky.png diff --git a/art/mountains.png b/art/mountains.png index 7cc862e4b1d93152f4a7fd0fef84e2bfa218804c..d97ce4460356a22362538755e3b8dda28a72e353 100644 GIT binary patch literal 1747 zcmbtVe>f9(82@h1HZx(k4INACj!NgMQ5vUB`(YX3OtV9NZM$$+YGY@`1CQI4+Zl+);DIJabG=$>T?3?$MR9+x>U{-967e@AJN&_x-$|=l%2Z=7$8+Em0d$ z002uy042&27y$i?=9Dl)Zq;7JPn;CrFPw!3A_C z#dO9cjeEj{;Nh8?du_@jK?;rs(@h(KsRsuo+cud1#wQ1n0k|o(cozpZ&4~CwIt3X2 z4tZDo1ry=Hppe5wR~N4Y6_3+4nzwTbgZ>8-0C5?ik*#G@&7 z!cF4DbOscc!MW5Jppsr3fA~$6+3gk_4p6~XD9HvCfDo7j4?cj%k^e$Hs~?&l&3arj ztTgVpkdXu;%+^{N8>`9kIg!s$CoOhj;*{e;oyGbF15+Klvtrw~AiL3$M7!aO=NQ)w zC}EE{Y-BcI>=Xs9 zLyDue>J1LoIM0B*+Dcay`duPX$r~|*`^bp&}!YQ)7Ck0*FgeHQ^@z;e=19D_b zav_#6zW2#9lF%#w-L%rbvKaFVPRIhCeSGO}$b;Si7Kp&n<>hJp{!_K)v$qj!gO-G0FoDfC$ARIcXm*;za{CqY0SXcZmX|u z`SN9SyM_n+UZOZl8I!?w3D+EOb31VwRc|$DyF22VmP2Gex7lSu<~r3q{XXFmCa1lM z)iT@Q7at@ms!gJzMInhh2YnBH^5liE%*f%*Y;mPX&6B&f!^*@u&!rBu1ci)%>cmik z6ScZmtGCjOg-!{ZLVqQIrt#7`LlyVIi}b@IA`7TSJU*Fsx-;wyf{mI)NhOw`t{9|LYzkKv* zb$O}I2g5mZx`o@8oS7yllG^t7HI&JnR^H~h>g&UR~y=EfvH&gD6xLAC4%mEbVjKXpK$w>m^JS)lf6YpAS8(Vb2- zR@n;s&r7iOUi;lQ#;fRU!N;*@lD-aID22FNR+qQs1!EU?d!n_A9K#)c2G-g?13^LT zuV}eUf4KFAA7NDV#wj$l$v=WQ3ZXR?CLBAapZpkxbI_<{!RIySlDvM}gt}MheP087 zTu`@?Ro})^O9k|B$k5C;Yc#;hWlD~MrubPr%TiyVcg*=n--~&H>5-&4Kxx6j8SG=t9H4e0FIyfWl8$YvQa44Ujd(M>sBVP&>6xko{4YzJcnfxA5KJ3?Deq#f) z4YyYvesJMYa;cq^1Cj+d?hBk_-rbyxu+^t*MJ!LLQ@%-*JN?t^_TO!SZlIR3-$zs0mYDsd*)$L-6-O|!}O}uJcSsB|q z^y>7iCrN(c8QtrOLS4|wk;(+nL^4;s#y<% z5D6^((~w5B|NHdB%wcqdN2@GLjVRElg7&DF&WVOYKEt{z!|f=q@`?Kh(J!+FQD$$y z-1O0rHeB9_!|4$+8E&KG$1;KoSXm-a0Q50JVIA z=?1J|(&Fs@?3n+}SO2L}b|LT1;6deikm3PVcKq*Q9gftV*tu$(Y5FMuFsQ+lX8+hT Fe*v3i^veJM delta 1433 zcmb8vX;{(+0LSq^S0ltIod+3)y38w)FiSiuk1SVe2;Ns2rFNpGqWnE(SjE^q7l;l}t9RNA0o5RHP+AhR61DuXg-iet+*jazi%yhVwe4ahfY0UFsSQ zBIrSWdns8zswz%jcG&g7`WrX%9=o1uBzl5e(oUfMoaiR%fyP9UzWtmu4dx$uDL>~hb?IP*83 zP7n|W9ozWINkbp*O2sxJX!P5tWP(w*fvt$nvscH{gAdI-itm4_I;&8pK)Ih=A_8kM zibDj0?<6_1Zzu~#UeCk2>e*byd|Y0;WD^lJFuX^mXfd69W4z8$@>0 z=bQQk??-uJ$E39}i^{>Bu)Qa!`imxoto~IJX@n^Vn;Y{<#j2`mW4oRNu0MV({T%w1 zbZhnTl`07XoYj?P$tDjE$r-M_bqiTcW;E58PwIMB#KueOwU%1&j z^&y>I)@Md5r@@QH6H(@o>`0isE4w5iE&EwKVIFDI;N;Idgt zXrI&p5~+-?R%Hb1htY5cKvmNPG|KD7rQCPp>UWbL;URA1n>y5U3z6+qfeXwxlY`iM zPjF%0UT5bXt}U^hdcDE}lUTj4(+W-Y(`%0k3ZStDEK1RfFD;GD8T0kVcmoFybvzb| zSY724NsVFGRwsTSN2O+~tyQ|m2PNcdHbD7Q8I)e=(6o_yJ30VoH9`q=ke^Nv0|@9u%Av#7axd0Axo_e+E5bX z+;{LI)U~z7cfQTdJW9YiR)#a}Q=uAH$-jIW01bWOcD;*f~>*8{uQIYa|Qk`nm2Gk@b?a1@ z%ViwR(USW3KJIldTsiGVz17`XNSSTiru)kaLK5$sY+*m8vy+RV&dq_hGfK*qDLbyX zg0mHutjA>N!mWfg+B(nipaiXg^#CyC!o(j0yaR%7m?Q;1fd|A(4Mh0wg%t-0XVCiT zCc0hRT_f&;G&O^R`E-5)dzaJ4@pdp-0D^A^e1PD8yofhHQwJ88l2$2bDUv3WNgU38_;$Pdw0OjB z`;k&2es2k|cqOZilx$wsg)6u^%do1z^Ei>@sZ1D=mjYb!mJ^gPJbO~|2+5z|z=QcW z^PRy&N^Za90R{^s`{Z&pR-NVMf~!u$3LrTxq#M=3*O|Y93*eJITL1t60FD3v0C)kt zk3kB6Fbo96PxXghy!n8F|M4Q;{7fBKTuNHSlO>cincbx69Mius+~><&vDQpn#W z0T!=fS4hjwdCi32?kvOV0x#1{k*6wQMBNH-%iEl!h2hzgmPg3^2@X7%zgh1LCQ|11 qw|RiU0?9tLxrANMc5}g9Ps2(eIbTQ%CE<4EDY*dh3q4x^0002?@+rLl literal 0 HcmV?d00001 diff --git a/art/paper_airplane.png b/art/paper_airplane.png new file mode 100644 index 0000000000000000000000000000000000000000..328b5bc5e599297137f8ad821767666913191dbb GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYe6nlxMuPgf_E?!PmCD{X2H-SRp zC9V-A!TD(=<%vb94DLQIKw}ijQi~Lf^-Ky|mplY2;V3Eaa|g;81KA8-4Vv;miY49A z*O7r?V?XzwL{=c5Ey>&6h2cL4F4((#GEii#r;B4q#hjy49J!hUcwB62&EMHHJgB`R z!Y`8Ttz!E5v$0^5qC%Z|{yc7WLCJrXZ=0`AJa?X3qoR79(tP%k&NU8P>%2F`w+J>Q zO3#`8)0Rz6Uxjs6L3BcmkGf58gJ8i!IUB72L5|tVKMG~vFBB4G6n}RxnspVEfefo@ z4_63Fj0CIlhge4OZ3pEfZf<6ZPuzRHX`-$6gF3lLgH8IJH(YssL@m-eaHvW(qEVLb XSQ5`S{jLU}!x=nX{an^LB{Ts5Al7RT literal 0 HcmV?d00001 diff --git a/art/sky.png b/art/sky.png new file mode 100644 index 0000000000000000000000000000000000000000..0cb49d21b801f6b66beb644961c52d78d9ca57f3 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwr>?NMQuI!JvcscoG?_OKg3ltJB zag8Vm&QB{TPb^AhaQATm8lzB_TBKmCXHwX@!lvI6;RN#5=*4F5rJ!QSPQfg(RWT^vIy=DfY=$jM;9bKtL+ z%eXi^cy?#`(X_t`atsV_85lCy862z`7;Z5#T;OA9C}UvQ!pyKhcF0QoHe&QVWe_@P R5ik%KJYD@<);T3K0RWT7Y^neN literal 0 HcmV?d00001 From 1cfe79bb57258a6284e1ddaea8c22b0bdb1cf74b Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 13 Oct 2018 08:22:28 -0500 Subject: [PATCH 14/16] ok --- art/{ => pngs}/Blocks_01.png | Bin art/{ => pngs}/Grass.png | Bin art/pngs/grass_2.png | Bin 0 -> 1047 bytes art/{ => pngs}/hills.png | Bin art/{ => pngs}/level_01.png | Bin art/pngs/long_grass.png | Bin 0 -> 1469 bytes art/pngs/long_hills.png | Bin 0 -> 1231 bytes art/pngs/long_mountains.png | Bin 0 -> 2307 bytes art/{ => pngs}/mountains.png | Bin art/{ => pngs}/paper_airplane.png | Bin art/{ => pngs}/paper_dash.png | Bin art/{ => pngs}/paper_idle.png | Bin art/{ => pngs}/paper_move.png | Bin art/{ => pngs}/platforms16x16.png | Bin art/{ => pngs}/platforms16x16_2.png | Bin art/{ => pngs}/platforms16x16_3.png | Bin art/{ => pngs}/platforms16x16_4.png | Bin art/{ => pngs}/rock_attack.png | Bin art/{ => pngs}/rock_idle.png | Bin art/{ => pngs}/rock_move.png | Bin art/{ => pngs}/rock_shield.png | Bin art/{ => pngs}/sky.png | Bin 22 files changed, 0 insertions(+), 0 deletions(-) rename art/{ => pngs}/Blocks_01.png (100%) rename art/{ => pngs}/Grass.png (100%) create mode 100644 art/pngs/grass_2.png rename art/{ => pngs}/hills.png (100%) rename art/{ => pngs}/level_01.png (100%) create mode 100644 art/pngs/long_grass.png create mode 100644 art/pngs/long_hills.png create mode 100644 art/pngs/long_mountains.png rename art/{ => pngs}/mountains.png (100%) rename art/{ => pngs}/paper_airplane.png (100%) rename art/{ => pngs}/paper_dash.png (100%) rename art/{ => pngs}/paper_idle.png (100%) rename art/{ => pngs}/paper_move.png (100%) rename art/{ => pngs}/platforms16x16.png (100%) rename art/{ => pngs}/platforms16x16_2.png (100%) rename art/{ => pngs}/platforms16x16_3.png (100%) rename art/{ => pngs}/platforms16x16_4.png (100%) rename art/{ => pngs}/rock_attack.png (100%) rename art/{ => pngs}/rock_idle.png (100%) rename art/{ => pngs}/rock_move.png (100%) rename art/{ => pngs}/rock_shield.png (100%) rename art/{ => pngs}/sky.png (100%) diff --git a/art/Blocks_01.png b/art/pngs/Blocks_01.png similarity index 100% rename from art/Blocks_01.png rename to art/pngs/Blocks_01.png diff --git a/art/Grass.png b/art/pngs/Grass.png similarity index 100% rename from art/Grass.png rename to art/pngs/Grass.png diff --git a/art/pngs/grass_2.png b/art/pngs/grass_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4392970563072db1b5d78456f894766e6417bc2f GIT binary patch literal 1047 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRS>?NMQuI!JvcsUK!bR{CL0ENU$ zTq87DknS;JdjWj@!?F22oo#Y(KEG-Hf+JaO4a60n7zc)%(wja+%t3L-ZlAK zw<&%5TFJJ94RL1r3<5NO^e}dtK!VICqZn(68K-UE9e*=%vDvm~|CUeRy`N9mY=NrD z^y)kPH=jqm0-8?HObK zOukcD|Mt=^)1oO)IFIt=&N}wb_f1QPqN?-;k>#m{(=l(utgmZ}x2y|y z{_n|nEpJ(ApWM&y*Xn~AAN&bWJjiTpXy!xpS_ar&(Fu*h3z%po;$q`di?XW_vZ(Xnk&D4yWLXbchv9d#L4F6 zu^Q8#{o`MH(reO*AAkO?dJ(f*ZHwgEEUvlBxBb7fzh~+G)epX={&_83&nokE3lok@NPdz~eth=$!Y^){Z%??Dvv+M<+rP<7 zCko_~qk8X$Z%?n{{V9|>*{k^7-v7?4I@Z6R?|Z{n;=fU!)*|=IL936>@4qS{E%nRX z|NVW*mZjN=Z%a=e^Dlg})j#Qm)!X874$F7XuiV?ev!W(@-jwgU`Cdh{`fC+;&VIbk z^j_?S-HP8f%g0y$UuKe+w|S{_z;Eu(xx%-4OzV4}-}-OL=p}S*#=RorswX$9{~uh= zuru)I=kL#2?BCbFt5mRa5)*_kxh8K*QeoN{D%s?bm*;9&WmLE+@7!1IQ; Q4M6$S)78&qol`;+0OpXR4*&oF literal 0 HcmV?d00001 diff --git a/art/hills.png b/art/pngs/hills.png similarity index 100% rename from art/hills.png rename to art/pngs/hills.png diff --git a/art/level_01.png b/art/pngs/level_01.png similarity index 100% rename from art/level_01.png rename to art/pngs/level_01.png diff --git a/art/pngs/long_grass.png b/art/pngs/long_grass.png new file mode 100644 index 0000000000000000000000000000000000000000..3679bfb9ecc6c19b94766af8f0d66c2a8af21675 GIT binary patch literal 1469 zcmeAS@N?(olHy`uVBq!ia0y~yU~B-g8#vg2B-4g{+(3%G#M9T6{Sg;0m$7b%YEVUg_gMsI(s(CS{HswH=e&V zUw`A=ng8e8W=_f3bvN%iCo=>lD zPIOhR#WT}q7Nt3Vzh003FZTO={ht5F568)Fkh0$X@$V0Zv1+^e*Zt;Z|j?D z{#<5nXFSfce){vj#op`WXD4UPG5vn!c<{|-MK6GAer> zzVz>nY`(;>a~sR%t*ivvQU5pk&HbyB@7I1l`Eadc?Vb9-|95Wv);Bz^`B_KOy&mX{ z{Zs$_zsc~cP5;$=`FquG{&}C-m^N>t;c+ovuW20f88(dpNT!W)4IAoRsMHQmc_TQ{WCTeK7V!zq&R=; z|HH{U-hIEmzwGZ~8~J(CyYt`u`1Cq{SO2`f7i{Z47Ol6LFI}y7d{X7~d*)`-|NYXJ z^sfIqUCw{$|HHRVUh@g+n;*Y7^6Rat^EZ-mre?k=1v~8Q*Z5!49^SY;b>rv$;x}^T z2lsyZab@STXZNyvz)^GUSNzwSH#pKRV>>L`@;@wt9n z+!Ol-kO%5_J>U5^-Mqp3?Y!xFclG1NA54)0+wwAQ`WyS5j6CHNmTwUFd&xN)YD)G0 z!`mB<^?fp3Ry1Y3;nc^s<;#n=yZ298`|R$k3-SMfky}6aaae!w@AG*KPhZscX0CpG z-u%5>%xjJPM>ct6Kfea9QlhC>wf?1-n)yVKVR}3S7GlZ)ofE6`>B~gb3h^e z{NLT@^82=H_tlD(y?P#0`p5El-M7$VD=c4s&pSTl^x=Sh;E32*zrF0x($wpE2PPej+2crVr?c(`m8PDqelF{r5}E*QH?oe(Tv@R(pPO-(9marq6l#{LSZ!`~Q9YKj-gzzI)tvxayY7xaewK;M39TOSgZySK;rtxB1t%-;cX5rdB-J-gs^1 zo!>rtH{bfbaMyR|%Jd zo}XQEa=K;S`t7A=d-<3C`?~)BtiSK$Cg1CR_cQE5RmVO1?Q&V)7QEZbVJzQp@ptdP zH*bu4PsPl;eCgW!-ya^Ie#Uwo=Zh&+cx;mTb=8%XX`woW`12?|5yCg{_l%6D^7QeI(SX{>TZ_r`~JU3Os}h2 z$G>rEVadek)I0OipY7bHckx=~yS)s*fcCupR-d`|#T&+crrg*)*BIvo{`+McZGYD7 z==Qo*U-iCUQ;n}PNIPE=lJ>gji(SOt@1QV^-~Rvft{;1+C#?Qs>}CC#sYi$Vee8p< zZMN)t_qp^JJb43h%JsMZ_cK}q{aMVl`?=}0cB80wUs)?k67xGj;j!y)e4pGq$*0>- z&D+ax`v3m#!6iTM_r-1L`Vv3;-~97e7}oGxi&lLx&U@yxZJ+9r`EPAK=1&A^EWTsP zaDK(tvkG%L|1SRTZp6UgD#_5Wh=;);kd0x11~Wsz6h;P(Qw$6usSFHVLq~dr{a@>4 UA8#sOmjsnBp00i_>zopr06anVkN^Mx literal 0 HcmV?d00001 diff --git a/art/pngs/long_mountains.png b/art/pngs/long_mountains.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f75de6a97bdb21e804f865fe5df888ddda2b8e GIT binary patch literal 2307 zcmd^B`&&|J0zQV(s9kKV9JR#Ksaz**MKm)-9WULWixYyYSXqjcV4{S6#)mYy6 z*Ivgp*@KpxwCnfJR6PIU#nef=p@B9pA(}CP&LvKB6Q>0wbc}8C(|$Lmt{dv;hvpNv zOcq)*^c})%8%#_2ALKW#=?m9nXh^cc|kJ#vX9F*dW^@a?g&Aq5#(J=T`u-`DYk4HP*RJ_MYcmj-nB>G2Wp0i zLydzMf-+DObBkpkBqoBwLq=Zfcp09%l@zCq{5f}+DsO1r9+$(3tvq&s(LvD`m_Xf- zK^4Ecd1WOyeKg3~y?IZq%JFw1vd%eRQ`r_}mq)a#}etvonGad1hdP6&sr+f%+Mt6}Qo zGP2!m=v2)f)-~I`BUuxFquJA1$>KLnL>WKh;&`B)8TogWF#SpW5j%D1$-$K# z7~8;^BE*in`3S4cA8rc#dY@V0h}^l$EKuSFX?xIhd+RK4jt}c|a0xx3--$)^z8UEa zT5EiR%@rSYU*v0%j^q2%jNPb1NBrvl96q#FWaH-b%gnx@;?H`TF6gFB>B# z!?)2#v#MyT*@?GJsetBnyt@yMsh^yve$%a_)%(7R>5h_hbj3iE6-I~81U&b#vv{2q zW!))5W|h>z@MEya80IhFV#rXT=9d`vMBe5YI|g;1j*G zK;UKA@$bRukiff>F+}Tf24(0!oRn zXO`mKBLpe#AaN(;ao#pU@aJ&I zb-7yvX6H!vw7;Mc7dnf2cXo8zDcWpEGk6F7nv|njOj>vZFJ`=#I%!eJcr298hnzu~Sm4j2_-S`)OzPKzBV9K1T?M|UvF6eoTdZvL5YZ}P&kZDW(&hHYy3Vkvv9?J0zxKr_FerZz>6Ly^H!p?tm z7m@F6L!ZA#u&cX|eo9f}75*Fzajmf|ka?U@0|+Wb$lFB}_I9eO Date: Sat, 13 Oct 2018 08:23:10 -0500 Subject: [PATCH 15/16] lets go --- GameEngine2D/img/Blocks_01.png | Bin 0 -> 1470 bytes GameEngine2D/img/grass.png | Bin 0 -> 1848 bytes GameEngine2D/img/hills.png | Bin 0 -> 1537 bytes GameEngine2D/img/level_01.png | Bin 0 -> 61523 bytes GameEngine2D/img/mountains.png | Bin 0 -> 2307 bytes GameEngine2D/img/paper_airplane.png | Bin 0 -> 338 bytes GameEngine2D/img/paper_idle.png | Bin 0 -> 331 bytes GameEngine2D/img/paper_move.png | Bin 0 -> 700 bytes GameEngine2D/img/paper_special.png | Bin 0 -> 408 bytes GameEngine2D/img/platforms16x16.png | Bin 0 -> 1100 bytes GameEngine2D/img/platforms16x16_2.png | Bin 0 -> 1087 bytes GameEngine2D/img/platforms16x16_3.png | Bin 0 -> 1110 bytes GameEngine2D/img/platforms16x16_4.png | Bin 0 -> 1103 bytes GameEngine2D/img/rock_attack.png | Bin 0 -> 470 bytes GameEngine2D/img/rock_idle.png | Bin 0 -> 382 bytes GameEngine2D/img/rock_move.png | Bin 0 -> 482 bytes GameEngine2D/img/rock_special.png | Bin 0 -> 547 bytes GameEngine2D/img/sky.png | Bin 0 -> 414 bytes GameEngine2D/index.html | 2 +- GameEngine2D/js/entity.js | 158 +++++++++++++++++++++----- GameEngine2D/js/game.js | 145 ++++++++++++++++++++--- GameEngine2D/js/material.js | 3 +- 22 files changed, 262 insertions(+), 46 deletions(-) create mode 100644 GameEngine2D/img/Blocks_01.png create mode 100644 GameEngine2D/img/grass.png create mode 100644 GameEngine2D/img/hills.png create mode 100644 GameEngine2D/img/level_01.png create mode 100644 GameEngine2D/img/mountains.png create mode 100644 GameEngine2D/img/paper_airplane.png create mode 100644 GameEngine2D/img/paper_idle.png create mode 100644 GameEngine2D/img/paper_move.png create mode 100644 GameEngine2D/img/paper_special.png create mode 100644 GameEngine2D/img/platforms16x16.png create mode 100644 GameEngine2D/img/platforms16x16_2.png create mode 100644 GameEngine2D/img/platforms16x16_3.png create mode 100644 GameEngine2D/img/platforms16x16_4.png create mode 100644 GameEngine2D/img/rock_attack.png create mode 100644 GameEngine2D/img/rock_idle.png create mode 100644 GameEngine2D/img/rock_move.png create mode 100644 GameEngine2D/img/rock_special.png create mode 100644 GameEngine2D/img/sky.png diff --git a/GameEngine2D/img/Blocks_01.png b/GameEngine2D/img/Blocks_01.png new file mode 100644 index 0000000000000000000000000000000000000000..85dd1697f9154464bf3efdbf20102856a7eeb207 GIT binary patch literal 1470 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 literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/hills.png b/GameEngine2D/img/hills.png new file mode 100644 index 0000000000000000000000000000000000000000..9667b1ad0abd50172e2cac1241811c27030d63d4 GIT binary patch literal 1537 zcmeAS@N?(olHy`uVBq!ia0y~yUVO18a<@i(^Q|oVPavyRJA0G(5b>{6j}W z?%?c7t@V#I_ngtiqb2-6@`xwM@{Y-NKvF=x7Dy`i{Q{B>b4E2#7D@{??cX0)wJF`X{)>D4m*=zo z-aq;v|KWmpKlSF<)%`s_v3ySw|KG3IB`PcQgF1$W?-fm6DbJy1Vy{Es&&yW9l zuW;G~`3ACwc_#NVD!+}rwN?`P@1vF~-h*C?KUvk*zC z>92gYh`JwERo?FpRx^F&dv*JL|9ZFS4^J$ey?2WHy_Mx*)%!#G>omXD1%83M+0wJ z+kTJxon*%O4|}J-_`CCK&}R0pFI;E*Wa^n`{_Ez=a;c*+^DbYycE0w<$JEbFQ2&7R z*Wdj2KTqQ{|18;pFAu)fKg^N6^vShP=E^Swn9PgIWk5TLuZhyWSNB=i9=Bl5cEL&IdVy|&TonhMf5|PcN zmR0dB__mnqAZ+>g};;U*^n{qlNvcQ2;zxLmMT?Y3< z_S!d;=Wn!|a`D-=eGKRMzD;|9P!zxV|JxT2=Lzl?t^UTO^S@U6+u!?N^c<%?NH4jx zU+r)9<^5(r;(ygLv4*dS>AZKl&8rooqm#bv-phV7eF-8C{y&zBVpz9gt7O{wmVYn$ zK`4DQC^svL0ZEM`OhB?V0!SdNT4=me{ RbOZg*;OXk;vd$@?2>_ewUR?kH literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/level_01.png b/GameEngine2D/img/level_01.png new file mode 100644 index 0000000000000000000000000000000000000000..8706ef19e4caaee824a67d67f883407590489463 GIT binary patch literal 61523 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�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 XSQ5`S{jLU}!x=nX{an^LB{Ts5Al7RT literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/paper_idle.png b/GameEngine2D/img/paper_idle.png new file mode 100644 index 0000000000000000000000000000000000000000..e73a71fea5c17c9525387dff044998ec31e556bd GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYe6nlxMuPgf_E?!m+?lLDwJD`ww ziEBhjaDG}zd16s2gS(Fl&=`fX)FK6AJ(I%LB@cm0I7$lq+<`L2KsJL{gQh%?Vo7)O zb!1@J*w6hZkrl{iOY(MiVfYV%3-&Ib3=~=B>EaktG3V%%*PI6wcv|k(a~&`2JU1yx z@xkLyOSZNCSy3_ly-7sJia(JB8@IZN+ur}qaA%HovJ~e6sT74px32eWy5)P~YU}I& zoE(7-tKM&%<;I+IR&~O@xNK3zO^j+Aug>w#mg6;$ojc_S_XJLbdyCVQGL0A&9PYO` z*f?8cU0-d;7-5np<7;zP(qR_A1@j3O$qL3Til&TPgfA#e5Mx{;_ip;zkh>FPQ literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/paper_move.png b/GameEngine2D/img/paper_move.png new file mode 100644 index 0000000000000000000000000000000000000000..bfca551b23a28e2ec85d10f3b29fb599dfbdb624 GIT binary patch literal 700 zcmV;t0z>_YP)Ab_`A0006PNklrmP!+vM=hej@!mzEBDT$Qb$M^5oW5kHNhWW>N zo|m6xS=gilKk%P|cfl>#!_UOa90Pwm{_Oc9_)C!31An#%?v6iu{#E=XNbH3_TLgE< zpFRHyepRq6T>qXC$?$07B_17|&N1-E;(O=E;2Hg`4vpgVnQ5B-61AV6B0BZp3N=N-&=x+ zNc*2Of+pbIBp%Kx0xh7L1Gz@6W-@ro2o?NR{Fxk)hx#TL?+72QxR{5jfRN6VOjB6edu`yvv^CysCjyp2V;P!|5|@51IT!NAi4!I z673N7`jmKWtcr+r6A|%yB0{j92z$*_SpZ%Rv%y#e*&U}}(OGv;BIk6wN~+NtDl4PZ3{A<%N5 zZ%EcWItPQ*d{ObR0<1ha8Syg)V4sebc^Is>{1B{HPiTOs(G@b<0El_EXn5k7>EaktG3V`#K)yo?0xTEiUHM$Z>A#@d z;kTocfR=Fsw~_qh32OY?rsQpD|NbvP#7tg%PVv8ga&r>ZwtU+D{P6t5nhj@uZA`t^ zuUq~9VAPxcA?*%zw)RUnwh6QBj#Bs3eSG<&R{M%9rez#IZU0PAD#{o9q_)_uZ0UVw z)%Z<4{_7Rz-Q9oXTSZ;Re=ARK#!vs>&-PEy+?t*nfvHRA_#TGTw=={Stdaf9G-c~&rh_)G6;A9}^&04X22WQ%mvv4FO#ouRtw#U= literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/platforms16x16.png b/GameEngine2D/img/platforms16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..33bb41310498466be88f60525935f4440648d574 GIT binary patch literal 1100 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 literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/platforms16x16_4.png b/GameEngine2D/img/platforms16x16_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ea4a668eac44585bf6288f1376507e50a9fca706 GIT binary patch literal 1103 zcmV-V1hD&wP)1OKucF3~eE#90MXnh#l)7!IBjm1F=Ee10hZWE0!RUb+!m8;TTy#S0hi}xNVo~ z*rUlnzCJ)rfK?npXI?cC{EwJUPQyw5AUb9?{4Me=TCb=7?uD6Cm|`G z^jgFBpWpUAhZ8_2w$|NR zYg@vP6T2Rg5J~_aU=$H82qmD$Ce_m4?_Ymh^+LU^dB*o7vLAY$eSt-0Cuot``B@3n zjUP~?;+$lS1WrUK0b9(t$HF)PNWvxrcn2CqfK%c-#&Tqu(S)OfSO6zL8vrVf1BtM_ zB+}aF%3oYu?#fpMM7+P{R4)1HIUl_hxp;sT90{=iZRR5^0GF1v^V9631ymn|@X*0M zGnx&W5rQW~)f1lnnqq>UxEuy2y@P5&=~8Pt3TtP3TJzECz8AXe0TZl6Z4J`;!!_7L za1YRSem)MW8|n<9xnnHu{QOyDw?)__Ai@KYhenrp0RI*6qSx$uV+%Q#xXA)a0+UJc zp33ua)I@{{VaL)a(GFgoV=(sxh75|PQk0oKQ)(RV1!#8!2*VM; zfgWdqcKX!LB*PKV8fm_h$x-fgmS9K%N`D0`4|FI3BGPQb5Fn-5YOr~7^w=>B0oIyF zKOmPGPS`9v+#9(0@xPWcWF3Q#mH^!FB=67q?6Cqu7XrMyvsTVqH`h+B6|CIMk{p{i zLnM{8`qkRa)_W;2nxvWlPq||uKvTY$0Pi5RGE(QcdRFU zrR{j@=74QTDf*r1;2j>mW1@NSa=9{GthQ_FTEecy?wNm*NqTwLg_OT{1fb$1{{Sou VLKmrf=`R2P002ovPDHLkV1jz;=!gIS literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/rock_attack.png b/GameEngine2D/img/rock_attack.png new file mode 100644 index 0000000000000000000000000000000000000000..805da9c0cce12c16e4a85a2d0b366abf57d7d2f9 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIk!3HE7J%1boQtTz3zOL+#xOmy5G;dBg2a*>r zag8Vm&QB{TPb^AhaQATm8lzB_TBKmCXHwX@!lvI6;RN#5=*4F5rJ!QSPQ85kH1JzX3_D(1YMuE@t^DBwEVcLyV1|6>k~ z9SlM&eB1j9SOp?@<}e(OV{&bBSzsV>NY-oF!jz2kTe+N(9@|g)?|!*&|5=}Hm$@{T zt`OBPTVx*Ny;kCJNQKzFcmDdVdP=JEdaT+ucIqo@ewtaa?O%rS^zKH6t zYO1UdKYws@x4npKs?CP^9}LPqS$#Tw+SgU8D){ovn6JAF-M?CJ&w5&M_SlC5VJBzH ziR90GVAvpai0#IaqsKnYTKnpEgxx(Z1<_KSxtdvwG1pFiQj}$stwYiNpk{`JBtgFl$*Ryeeik+dPZ!g)4WMB5boFyt I=akR{0M4elLjV8( literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/rock_idle.png b/GameEngine2D/img/rock_idle.png new file mode 100644 index 0000000000000000000000000000000000000000..f4197897eedcaa90d0f2dd2cce58c95e15f9edda GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYe6nlxMuPgf_E?!nn?)=DtdZ3Va ziEBhjaDG}zd16s2gS(Fl&=`fX)FK6AJ(I%LB@cm0I7$lq+<`L2KsJL{gQh%?Vo7)O zb!1@J*w6hZkrl{iOY(MiVfYV%3-&Ib3>3NP>EaktF(>)Q|Nr)f9g^k-o*{9%Y9~Q2h?Pk^@Auo8T|1zV($zuMvgNC~pPZaHtY0P2M`}?BG zFs3g@P_O4K@wujd)&-b|47H;3g>>#ATx`RQn z`{bqmdCV7tm8|5Wv)ufCzTgy`UH4>7r?KecQ-VK=7&iWzc=o_dwuFPOUNy^~-I%ma zKHT7umdA!xrfrk>=hv+XY&a{B(xWfM@$zUo+eJ~1g^Om)SR^%DYE}69B}oh?mj4m5 TeSNbE=t%}oS3j3^P6y+5Ac7EPiT&jp+kZ<41;c!-RFmwZG-KzPZ=0C>9I zU&bBO?;4RQ@g5Osk_a!wAE;IdXeJS{@RXPr&&AUOMDZ;jq2y_WsFNt3i{Qbd*uDIl zs&6Gg1GV6L1+?PR=UF1_a(krJ`jF5n``Rk|))@~TaoBDaUHrte(g2~qAO4P}DZO$K zzN+rUdpoEFUwyzSEDaKE5^I4ySD`ka3jhffDb`I^0M)Ftf Y34Cr&{HKo-WdHyG07*qoM6N<$f*J+I!~g&Q literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/rock_special.png b/GameEngine2D/img/rock_special.png new file mode 100644 index 0000000000000000000000000000000000000000..f53dcc1fba904ffe02b13a0cfcb23f1b00828401 GIT binary patch literal 547 zcmV+;0^I$HP)fa+000+sMObuGZ)S9NVRB^vM@&RePDdbiWpW@hE;Mn4q~QPn00?w&PDe*f zL^A*Y002sWDIWj;00d`2O+f$vv5yP8=@ zxVLZOXW~nzWTU|7=dc{d{m*}^_?I1j&aGR@SCU6CS`tAKW?TiY2y_zFBE0-B*WbmI z2rB^;c?>WTfve7VC4%b;Ccq?IXK>z(R~_+2z=1iC695HF38XGaIk=YYxZB_VVvNOS z7-N;Z3xZ%Z(^Wji;EHa+JK@mJnG^sk=YUuRCQwNL337}*_$qnEuLKy8cgb%}LXFZ4 zezy9Em-FA1V$$v$aCp~2Nq`xA1*`CK1TcV_e>Vac!*xz>iEvHh_CKzh9mK>Hxw( zX%nb}ka21yR!OK$!0Rvx=hmq_1V?KybpZM)oEsq?1)OV+Sy_cje8l#5#(RLf6uEmq z1)n--B%rFIJ40OI7%xdA8(n4DSKTn(ZE}x*39FvHjewfvy&psFvZUg;ZvgkZdw=qA l&txTMEqx;-pHJau>?NMQuI!JvcscoG?_OKg3ltJB zag8Vm&QB{TPb^AhaQATm8lzB_TBKmCXHwX@!lvI6;RN#5=*4F5rJ!QSPQfg(RWT^vIy=DfY=$jM;9bKtL+ z%eXi^cy?#`(X_t`atsV_85lCy862z`7;Z5#T;OA9C}UvQ!pyKhcF0QoHe&QVWe_@P R5ik%KJYD@<);T3K0RWT7Y^neN literal 0 HcmV?d00001 diff --git a/GameEngine2D/index.html b/GameEngine2D/index.html index 6927c54..e6eac33 100644 --- a/GameEngine2D/index.html +++ b/GameEngine2D/index.html @@ -28,8 +28,8 @@ window.game.resize(window.innerWidth, window.innerHeight); }); - window.addEventListener('keyup', function(event) { Key.onKeyup(event); }, false); window.addEventListener('keydown', function(event) { Key.onKeydown(event); }, false); + window.addEventListener('keyup', function(event) { Key.onKeyup(event); }, false); diff --git a/GameEngine2D/js/entity.js b/GameEngine2D/js/entity.js index 7ced11a..f5316c4 100644 --- a/GameEngine2D/js/entity.js +++ b/GameEngine2D/js/entity.js @@ -19,6 +19,7 @@ var Key = { RIGHT: 39, DOWN: 40, Q: 81, + E: 69, isDown: function(keyCode) { return this._pressed[keyCode]; @@ -33,31 +34,36 @@ var Key = { } }; -class Player + + +class Paper_Player { constructor(index, gl, vs, fs) { this.index = index; - this.pos = new Point(); + this.pos = new Point(100, 80); + this.vel = new Point(); + this.acc = new Point(); + this.acc.y = 0.01; this.frame = new Point(); + this.dt = 1/60; this.mirrored = 1; + this.isGrounded = true; - this.skelly_walk = new Sprite(gl, "img/skellywalk.png", vs, fs, {width:22, height:32}); - this.skelly_death = new Sprite(gl, "img/skellydeath.png", vs, fs, {width:33, height:31}); - this.skelly_attack = new Sprite(gl, "img/skellyattack.png", vs, fs, {width:43, height:36}); - this.skelly_hit = new Sprite(gl, "img/skellyhit.png", vs, fs, {width:30, height:32}); - this.skelly_idle = new Sprite(gl, "img/skellyidle.png", vs, fs, {width:24, height:32}); - this.skelly_react = new Sprite(gl, "img/skellyreact.png", vs, fs, {width:22, height:32}); + this.walk = new Sprite(gl, "img/paper_move.png", vs, fs, {width:16, height:16}); + this.attack = new Sprite(gl, "img/paper_special.png", vs, fs, {width:16, height:16}); + this.idle = new Sprite(gl, "img/paper_idle.png", vs, fs, {width:16, height:16}); + - this.curr = this.skelly_idle; - this.currNum = 4; + this.curr = this.idle; + this.currNum = 2; } update() { - this.curr = this.skelly_idle; - this.currNum = 4; + this.curr = this.idle; + this.currNum = 2; if (Key.isDown(Key.UP)) this.movement(0); if (Key.isDown(Key.DOWN)) this.movement(1); @@ -65,7 +71,99 @@ class Player if (Key.isDown(Key.RIGHT)) this.movement(3); if (Key.isDown(Key.Q)) this.movement(4); + this.render(); + } + + movement(num) + { + if (num == 0) //move up + { + //this.pos.y -= 1; + } + if (num == 1) // move down + { + + } + if (num == 2) // move left + { + this.curr = this.walk; + this.currNum = 0; + this.mirrored = -1; + } + if (num == 3) // move right + { + this.curr = this.walk; + this.currNum = 0; + this.mirrored = 1; + } + if (num == 4) // attack + { + this.curr = this.attack; + this.currNum = 1; + } + } + + render() + { + this.vel.y += this.acc.y * this.dt; + this.pos.y += this.vel.y * this.dt; + + if (this.pos.y >= 80) + { + this.pos.y = 80; + } + + if (this.mirrored == -1) + { + this.pos.x = 116; + } + else this.pos.x = 100; + this.frame.x = ( new Date() * this.index.s_f_s[this.currNum][1]) % this.index.s_f_s[this.currNum][0]; + this.curr.render(this.pos, this.frame, this.mirrored); + } +} + + +class Rock_Player +{ + constructor(index, gl, vs, fs) + { + this.index = index; + this.pos = new Point(100, 80); + this.vel = new Point(); + this.acc = new Point(); + this.acc.y = 0.01; + this.frame = new Point(); + this.dt = 1/60; + this.mirrored = 1; + this.isGrounded = true; + + + this.walk = new Sprite(gl, "img/rock_move.png", vs, fs, {width:16, height:16}); + this.attack = new Sprite(gl, "img/rock_special.png", vs, fs, {width:16, height:16}); + this.idle = new Sprite(gl, "img/rock_idle.png", vs, fs, {width:16, height:16}); + + + this.curr = this.idle; + this.currNum = 2; + } + + update() + { + this.curr = this.idle; + this.currNum = 2; + + if (Key.isDown(Key.UP)) this.movement(0); + if (Key.isDown(Key.DOWN)) this.movement(1); + if (Key.isDown(Key.LEFT)) this.movement(2); + if (Key.isDown(Key.RIGHT)) this.movement(3); + if (Key.isDown(Key.Q)) this.movement(4); + + if (this.pos.x >= 80) + { + this.isGrounded == true; + } this.render(); } @@ -73,43 +171,47 @@ class Player { if (num == 0) //move up { - this.pos.y -= 1; + this.vel.y += 0.2 * this.dt; + this.pos.y -= this.vel.y * this.dt; } if (num == 1) // move down { - this.pos.y += 1; + } if (num == 2) // move left { - this.pos.x -= 1; - this.curr = this.skelly_walk; + this.curr = this.walk; this.currNum = 0; - if (this.mirrored == 1) - { - this.pos.x = this.pos.x + 16; - } this.mirrored = -1; } if (num == 3) // move right { - this.pos.x += 1; - this.curr = this.skelly_walk; + this.curr = this.walk; this.currNum = 0; - if (this.mirrored == -1) - { - this.pos.x = this.pos.x - 16; - } this.mirrored = 1; } if (num == 4) // attack { - this.curr = this.skelly_attack; - this.currNum = 2; + this.curr = this.attack; + this.currNum = 1; } } render() { + this.vel.y += this.acc.y * this.dt; + this.pos.y += this.vel.y * this.dt; + + if (this.pos.y >= 80) + { + this.pos.y = 80; + } + + if (this.mirrored == -1) + { + this.pos.x = 116; + } + else this.pos.x = 100; this.frame.x = ( new Date() * this.index.s_f_s[this.currNum][1]) % this.index.s_f_s[this.currNum][0]; this.curr.render(this.pos, this.frame, this.mirrored); } diff --git a/GameEngine2D/js/game.js b/GameEngine2D/js/game.js index 041d241..644d338 100644 --- a/GameEngine2D/js/game.js +++ b/GameEngine2D/js/game.js @@ -4,34 +4,70 @@ function loop() requestAnimationFrame(loop); } +var Key = { + _pressed: {}, + + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + Q: 81, + E: 69, + + isDown: function(keyCode) { + return this._pressed[keyCode]; + }, + + onKeydown: function(event) { + this._pressed[event.keyCode] = true; + }, + + onKeyup: function(event) { + delete this._pressed[event.keyCode]; + } +}; + class Game { constructor() { this.canvasElem = document.createElement("canvas"); - this.canvasElem.width = 800; - this.canvasElem.height = 600; + this.canvasElem.width = 64; + this.canvasElem.height = 64; this.worldSpaceMatrix = new M3x3(); this.gl = this.canvasElem.getContext("webgl2"); - this.gl.clearColor(1.0, 0.6, 0.2, 0.0); + this.gl.clearColor(0.5, 0.5, 0.8, 0.0); document.body.appendChild(this.canvasElem); let vs = document.getElementById("vs_01").innerHTML; let fs = document.getElementById("fs_01").innerHTML; + this.mountains = new Sprite(this.gl, "img/mountains.png", vs, fs, {width: 384, height: 128}); + this.mount_pos = new Point(-64, 0); + this.bg_frames = new Point(); + + this.hills = new Sprite(this.gl, "img/hills.png", vs, fs, {width: 768, height: 128}); + this.hills_pos = new Point(-384, 0); + + this.grass = new Sprite(this.gl, "img/grass.png", vs, fs, {width: 768, height: 128}); + this.grass_pos = new Point(-384, 0); + + this.paper_index = new SpriteIndex(); + this.paper_index.addSprite(12, 0.02); // move + this.paper_index.addSprite(9, 0.02); // special + this.paper_index.addSprite(2, 0.003); // idle + this.paper_player = new Paper_Player(this.paper_index, this.gl, vs, fs); - this.skelly_index = new SpriteIndex(); - this.skelly_index.addSprite(13, 0.02); - this.skelly_index.addSprite(15, 0.01); - this.skelly_index.addSprite(18, 0.02); - this.skelly_index.addSprite(8, 0.01); - this.skelly_index.addSprite(11, 0.01); - this.skelly_index.addSprite(4, 0.01); + this.rock_index = new SpriteIndex(); + this.rock_index.addSprite(4, 0.008); // move + this.rock_index.addSprite(4, 0.02); // special + this.rock_index.addSprite(2, 0.003); // idle + this.rock_player = new Rock_Player(this.rock_index, this.gl, vs, fs); - this.player = new Player(this.skelly_index, this.gl, vs, fs); + this.character = 0; } resize(x,y) @@ -43,17 +79,94 @@ class Game this.worldSpaceMatrix = new M3x3().transition(-1, 1).scale(2/wRatio, -2/240); } + move(num) + { + if (num == 0) + { + console.log(this.mount_pos.x); + this.mount_pos.x += 0.2; + this.hills_pos.x += 0.5; + this.grass_pos.x += 1; + if (this.grass_pos.x % 128 == 0) + { + this.grass_pos.x -= 128; + } + if (this.hills_pos.x % 64 == 0) + { + this.hills_pos.x -= 128; + } + if (this.mount_pos.x % 26 == 0) + { + this.mount_pos.x -= 128; + } + + } + if (num == 1) + { + this.mount_pos.x -= 0.25; + this.hills_pos.x -= 0.5; + this.grass_pos.x -= 1; + if (this.grass_pos.x % 64 == 0) + { + this.grass_pos.x += 128; + } + if (this.hills_pos.x % 64 == 0) + { + this.hills_pos.x += 128; + } + if (this.mount_pos.x % 64 == 0) + { + this.mount_pos.x += 128; + } + + } + } + update() { - this.gl.viewport(0,0, this.canvasElem.width, this.canvasElem.height); - this.gl.clear(this.gl.COLOR_BUFFER_BIT); + this.gl.viewport(0,-510, this.canvasElem.width * 1.5, this.canvasElem.height * 1.5); // scales and moves the canvas + this.gl.clear(this.gl.COLOR_BUFFER_BIT); // bg color + // allows transparency this.gl.enable(this.gl.BLEND); - this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA); + this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA); + if (Key.isDown(Key.LEFT)) this.move(0); + if (Key.isDown(Key.RIGHT)) this.move(1); - this.player.update(); - //this.player.render(); + + + this.mountains.render(this.mount_pos, this.bg_frames, 1); + this.hills.render(this.hills_pos, this.bg_frames, 1); + + if (Key.isDown(Key.E)) + { + this.character++; + console.log("character num = " + this.character); + + if (this.character >= 2) + { + this.character = 0; + } + } + if (this.character == 0) + { + this.paper_player.update(); + } + else if (this.character == 1) + { + this.rock_player.update(); + } + else if (this.character == 2) + { + // scissor update + } + + this.grass.render(this.grass_pos, this.bg_frames, 1); + + + + this.gl.flush(); } diff --git a/GameEngine2D/js/material.js b/GameEngine2D/js/material.js index 3078191..dfa10e6 100644 --- a/GameEngine2D/js/material.js +++ b/GameEngine2D/js/material.js @@ -209,7 +209,8 @@ class Sprite let frame_x = Math.floor(frames.x) * this.uv_x; let frame_y = Math.floor(frames.y) * this.uv_y; - + //console.log(" rendering ... \n" ); + let obj_mat = new M3x3().transition(position.x, position.y).scale(mirrored, 1); gl.useProgram(this.material.program); From 58af5a89b71f0e24f0f81593b64dfa74fa8ae706 Mon Sep 17 00:00:00 2001 From: Marco Date: Sat, 13 Oct 2018 09:46:57 -0500 Subject: [PATCH 16/16] new --- GameEngine2D/img/scissor_idle.png | Bin 0 -> 348 bytes GameEngine2D/img/scissor_move.png | Bin 0 -> 527 bytes GameEngine2D/img/scissor_special.png | Bin 0 -> 571 bytes GameEngine2D/index.html | 6 +- GameEngine2D/js/entity.js | 86 +++++++++++++++++++++++++++ GameEngine2D/js/game.js | 40 ++++++++----- 6 files changed, 116 insertions(+), 16 deletions(-) create mode 100644 GameEngine2D/img/scissor_idle.png create mode 100644 GameEngine2D/img/scissor_move.png create mode 100644 GameEngine2D/img/scissor_special.png diff --git a/GameEngine2D/img/scissor_idle.png b/GameEngine2D/img/scissor_idle.png new file mode 100644 index 0000000000000000000000000000000000000000..d7cd269c0741843982ca5716f74683ab4fed3377 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^4nQox!3HFkJ+IURQtTz3zOL+#xOmx(4Sv*5_5lis zm$*ih1m~xflqVLYGPwJ=0F6;7OD$3`)-x$=UGfm9grlUu&mAaZ3}iESHE7BMDVB6c zUq=Rpjs4tz5?O(Kwj^(N7l!{JxM1({$v~0qo-U3d6?2|Wxyaj~z~j={`Mdu>`{51E zr>{)8!P2XctIPXw@%;Dis>GNXTI~C)8QvQT-{Cw& zt3t#qFR_av1Mr%w3>rvh$?m;bd67|xvtvf;Y_ i$C~mxmuL6dGbHZccH-V$W-*`_7(8A5T-G@yGywpHX@Bkj literal 0 HcmV?d00001 diff --git a/GameEngine2D/img/scissor_move.png b/GameEngine2D/img/scissor_move.png new file mode 100644 index 0000000000000000000000000000000000000000..b4eb70d442acda95da34de127a9ff4ce6186a806 GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^4L~fw!3HGnMU-~{DfSXiUsv`=T)gZ$qIHU%Q-MO_ zC9V-A!TD(=<%vb94DLQIKw}ijQi~Lf^-Ky|mplY2;V3Eaa|g;81KA8-4Vv;miY49A z*O7r?V?XzwL{=c5Ey>&6h2cL4F4((#G6Mr+mZytjNX4AD;f{RG20YG_zx`K#v*GxM z_F6UJ_P$A~*>h4vT==J6SRs7daIuezNpI=ht8))Tu=5^xUA8>6lAHgJe^tkk@7CR}ZXg*SW6Ic*)|i?6t-Jr+(>v)Xn%*O7-B!b&6;9-J8V5Z?;JB zlD+r-sk{AZ6ayx15W4uGqk-Qpq3&fr&%$e`J{Iu0|JV83@jvU+Qk88dQdl&S98wx& zc0Xi#)z6~gZ2xG##~gX3HO)D!8QU2&n78oht&)HHzn>xEZ@l?g?Tu4^P)Y426k__dkL^JPdd6GBY!bjM|mHwy>c4(F7M>DSaQ?+>}z9MvN%&m{UT= zyB9p-JP1_UXG)yDHGbGjyl(fDqnG}w28IC8Fx#VVjUQrQt+V9t>LcF41%SgqNw3Mt z8I9Bv0#I)NA^<{j6^BBZk885Is`IM!y6y8-5uGz{3Inn9p5n>u>3$6)7A5kKO|ScOR`oQwwcY z`K<+r-jC=xqoVYh96trnI)-d;tEsw`L&~FVS`PsJ3Lu(8tDyjtV)ydUrG{%%ea~Lq zk!Meq8SDtXHb>YV$N~WOKxp$Q-0MBv?HQICj4s8RJQ6ro0QbgC$vlOO;G^}Sa{s8L zp0}<~2Pk?f9}x$Y)bm