commit b8cdce07af0f28ba38d1e011e78f699ad5ee185d Author: luxick Date: Wed Nov 20 19:10:35 2019 +0100 Initial diff --git a/mttt.nim b/mttt.nim new file mode 100644 index 0000000..fa20cdb --- /dev/null +++ b/mttt.nim @@ -0,0 +1,16 @@ +import dom, jsconsole, sugar + +import src/game + +const + canvasId = "game_canvas" + +proc onTick(game: Game, time: float) = + discard window.requestAnimationFrame((time: float) => onTick(game, time)) + game.nextFrame(time) + +proc onLoad(event: Event) {.exportc.} = + var game = newGame(canvasId, window.innerWidth, window.innerHeight) + onTick(game, 60) + +window.onload = onLoad \ No newline at end of file diff --git a/mttt.nimble b/mttt.nimble new file mode 100644 index 0000000..4791db3 --- /dev/null +++ b/mttt.nimble @@ -0,0 +1,20 @@ +# Package + +version = "0.1.0" +author = "luxick" +description = "Meta Tic Tac Toe" +license = "GPL-2.0" +srcDir = "src" +bin = @["mttt"] + +backend = "js" + +# Dependencies + +requires "nim >= 1.0.0" + +task debug, "Compile debug client": + exec "nim js --out:public/mttt.js -d:local mttt.nim" + +task release, "Compile release client": + exec "nim js --out:public/mttt.js mttt.nim" \ No newline at end of file diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..fcb8080 --- /dev/null +++ b/public/index.html @@ -0,0 +1,29 @@ + + + + + + Meta Tic Tac Toe + + + + + + + + + + +
+
+ +
+
+ + + \ No newline at end of file diff --git a/public/mttt.css b/public/mttt.css new file mode 100644 index 0000000..e69de29 diff --git a/public/mttt.js b/public/mttt.js new file mode 100644 index 0000000..a0c7bd2 --- /dev/null +++ b/public/mttt.js @@ -0,0 +1,1854 @@ +/* Generated by the Nim Compiler v1.0.2 */ +/* (c) 2019 Andreas Rumpf */ + +var framePtr = null; +var excHandler = 0; +var lastJSError = null; +if (typeof Int8Array === 'undefined') Int8Array = Array; +if (typeof Int16Array === 'undefined') Int16Array = Array; +if (typeof Int32Array === 'undefined') Int32Array = Array; +if (typeof Uint8Array === 'undefined') Uint8Array = Array; +if (typeof Uint16Array === 'undefined') Uint16Array = Array; +if (typeof Uint32Array === 'undefined') Uint32Array = Array; +if (typeof Float32Array === 'undefined') Float32Array = Array; +if (typeof Float64Array === 'undefined') Float64Array = Array; +var NTI100432 = {size: 0,kind: 31,base: null,node: null,finalizer: null}; +var NTI103247 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI3630 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3652 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3644 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI124 = {size: 0,kind: 36,base: null,node: null,finalizer: null}; +var NTI202309 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI214055 = {size: 0,kind: 16,base: null,node: null,finalizer: null}; +var NTI214054 = {size: 0,kind: 16,base: null,node: null,finalizer: null}; +var NTI214225 = {size: 0,kind: 16,base: null,node: null,finalizer: null}; +var NTI214224 = {size: 0,kind: 16,base: null,node: null,finalizer: null}; +var NTI214021 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI214233 = {size: 0,kind: 16,base: null,node: null,finalizer: null}; +var NTI214232 = {size: 0,kind: 16,base: null,node: null,finalizer: null}; +var NTI3642 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3646 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3658 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3662 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI104 = {size: 0,kind: 31,base: null,node: null,finalizer: null}; +var NTI21156 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI3608 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3714 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI114 = {size: 0,kind: 40,base: null,node: null,finalizer: null}; +var NTI138 = {size: 0,kind: 28,base: null,node: null,finalizer: null}; +var NTI140 = {size: 0,kind: 29,base: null,node: null,finalizer: null}; +var NTI3708 = {size: 0,kind: 22,base: null,node: null,finalizer: null}; +var NTI3626 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3628 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI3650 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NNI3650 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3650.node = NNI3650; +var NNI3628 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3628.node = NNI3628; +NTI3708.base = NTI3626; +NTI3714.base = NTI3626; +var NNI3626 = {kind: 2, len: 6, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI3708, name: "parent", sons: null}, +{kind: 1, offset: "name", len: 0, typ: NTI140, name: "name", sons: null}, +{kind: 1, offset: "message", len: 0, typ: NTI138, name: "msg", sons: null}, +{kind: 1, offset: "trace", len: 0, typ: NTI138, name: "trace", sons: null}, +{kind: 1, offset: "raiseId", len: 0, typ: NTI114, name: "raiseId", sons: null}, +{kind: 1, offset: "up", len: 0, typ: NTI3714, name: "up", sons: null}]}; +NTI3626.node = NNI3626; +var NNI3608 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3608.node = NNI3608; +NTI3626.base = NTI3608; +NTI3628.base = NTI3626; +NTI3650.base = NTI3628; +var NNI21156 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI140, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI104, name: "Field1", sons: null}]}; +NTI21156.node = NNI21156; +var NNI3662 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3662.node = NNI3662; +NTI3662.base = NTI3628; +var NNI3658 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3658.node = NNI3658; +NTI3658.base = NTI3628; +var NNI3646 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3646.node = NNI3646; +var NNI3642 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3642.node = NNI3642; +NTI3642.base = NTI3628; +NTI3646.base = NTI3642; +var NNI214021 = {kind: 2, offset: 0, typ: null, name: null, len: 4, sons: {"0": {kind: 1, offset: 0, typ: NTI214021, name: "mPlayer1", len: 0, sons: null}, +"1": {kind: 1, offset: 1, typ: NTI214021, name: "mPlayer2", len: 0, sons: null}, +"2": {kind: 1, offset: 2, typ: NTI214021, name: "mFree", len: 0, sons: null}, +"3": {kind: 1, offset: 3, typ: NTI214021, name: "mDraw", len: 0, sons: null}}}; +NTI214021.node = NNI214021; +NTI214233.base = NTI214021; +NTI214232.base = NTI214233; +NTI214055.base = NTI214021; +NTI214054.base = NTI214055; +NTI214225.base = NTI214054; +NTI214224.base = NTI214225; +var NNI202309 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "x", len: 0, typ: NTI124, name: "x", sons: null}, +{kind: 1, offset: "y", len: 0, typ: NTI124, name: "y", sons: null}]}; +NTI202309.node = NNI202309; +var NNI3644 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3644.node = NNI3644; +NTI3644.base = NTI3642; +var NNI3652 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3652.node = NNI3652; +var NNI3630 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI3630.node = NNI3630; +NTI3630.base = NTI3626; +NTI3652.base = NTI3630; +var NNI103247 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI100432, name: "a", sons: null}, +{kind: 1, offset: "b", len: 0, typ: NTI104, name: "b", sons: null}]}; +NTI103247.node = NNI103247; + +function makeNimstrLit(c_23270) { + var ln = c_23270.length; + var result = new Array(ln); + for (var i = 0; i < ln; ++i) { + result[i] = c_23270.charCodeAt(i); + } + return result; + + + +} + +function toJSStr(s_23304) { + var Tmp5; + var Tmp7; + + var result_23305 = null; + + var res_23363 = new_seq_23336((s_23304 != null ? s_23304.length : 0)); + var i_23365 = 0; + var j_23367 = 0; + L1: do { + L2: while (true) { + if (!(i_23365 < (s_23304 != null ? s_23304.length : 0))) break L2; + var c_23368 = s_23304[i_23365]; + if ((c_23368 < 128)) { + res_23363[j_23367] = String.fromCharCode(c_23368); + i_23365 += 1; + } + else { + var helper_23391 = new_seq_23336(0); + L3: do { + L4: while (true) { + if (!true) break L4; + var code_23392 = c_23368.toString(16); + if (((code_23392 != null ? code_23392.length : 0) == 1)) { + if (helper_23391 != null) { helper_23391.push("%0"); } else { helper_23391 = ["%0"]; }; + } + else { + if (helper_23391 != null) { helper_23391.push("%"); } else { helper_23391 = ["%"]; }; + } + + if (helper_23391 != null) { helper_23391.push(code_23392); } else { helper_23391 = [code_23392]; }; + i_23365 += 1; + if (((s_23304 != null ? s_23304.length : 0) <= i_23365)) Tmp5 = true; else { Tmp5 = (s_23304[i_23365] < 128); } if (Tmp5) { + break L3; + } + + c_23368 = s_23304[i_23365]; + } + } while(false); +++excHandler; + Tmp7 = framePtr; + try { + res_23363[j_23367] = decodeURIComponent(helper_23391.join("")); +--excHandler; +} catch (EXC) { + var prevJSError = lastJSError; + lastJSError = EXC; + --excHandler; + framePtr = Tmp7; + res_23363[j_23367] = helper_23391.join(""); + lastJSError = prevJSError; + } finally { + framePtr = Tmp7; + } + } + + j_23367 += 1; + } + } while(false); + if (res_23363 === null) res_23363 = []; + if (res_23363.length < j_23367) { for (var i=res_23363.length;i> 6) | 192; + } + else { + if (ch < 55296 || ch >= 57344) { + result[r] = (ch >> 12) | 224; + } + else { + ++i; + ch = 65536 + (((ch & 1023) << 10) | (c_23287.charCodeAt(i) & 1023)); + result[r] = (ch >> 18) | 240; + ++r; + result[r] = ((ch >> 12) & 63) | 128; + } + ++r; + result[r] = ((ch >> 6) & 63) | 128; + } + ++r; + result[r] = (ch & 63) | 128; + } + ++r; + } + return result; + + + +} + +function setConstr() { + var result = {}; + for (var i = 0; i < arguments.length; ++i) { + var x = arguments[i]; + if (typeof(x) == "object") { + for (var j = x[0]; j <= x[1]; ++j) { + result[j] = true; + } + } else { + result[x] = true; + } + } + return result; + + + +} +var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21); + +function nimCopy(dest_24827, src_24828, ti_24829) { + var result_25019 = null; + + switch (ti_24829.kind) { + case 21: + case 22: + case 23: + case 5: + if (!(is_fat_pointer_24801(ti_24829))) { + result_25019 = src_24828; + } + else { + result_25019 = [src_24828[0], src_24828[1]]; + } + + break; + case 19: + if (dest_24827 === null || dest_24827 === undefined) { + dest_24827 = {}; + } + else { + for (var key in dest_24827) { delete dest_24827[key]; } + } + for (var key in src_24828) { dest_24827[key] = src_24828[key]; } + result_25019 = dest_24827; + + break; + case 18: + case 17: + if (!((ti_24829.base == null))) { + result_25019 = nimCopy(dest_24827, src_24828, ti_24829.base); + } + else { + if ((ti_24829.kind == 17)) { + result_25019 = (dest_24827 === null || dest_24827 === undefined) ? {m_type: ti_24829} : dest_24827; + } + else { + result_25019 = (dest_24827 === null || dest_24827 === undefined) ? {} : dest_24827; + } + } + nimCopyAux(result_25019, src_24828, ti_24829.node); + break; + case 24: + case 4: + case 27: + case 16: + if (src_24828 === null) { + result_25019 = null; + } + else { + if (dest_24827 === null || dest_24827 === undefined) { + dest_24827 = new Array(src_24828.length); + } + else { + dest_24827.length = src_24828.length; + } + result_25019 = dest_24827; + for (var i = 0; i < src_24828.length; ++i) { + result_25019[i] = nimCopy(result_25019[i], src_24828[i], ti_24829.base); + } + } + + break; + case 28: + if (src_24828 !== null) { + result_25019 = src_24828.slice(0); + } + + break; + default: + result_25019 = src_24828; + break; + } + + return result_25019; + +} + +function arrayConstr(len_25086, value_25087, typ_25088) { + var result = new Array(len_25086); + for (var i = 0; i < len_25086; ++i) result[i] = nimCopy(null, value_25087, typ_25088); + return result; + + + +} + +function raiseException(e_21618, ename_21619) { + e_21618.name = ename_21619; + if ((excHandler == 0)) { + unhandledException(e_21618); + } + + e_21618.trace = nimCopy(null, raw_write_stack_trace_21468(), NTI138); + throw e_21618; + + +} + +function chckRange(i_25124, a_25125, b_25126) { + var Tmp1; + + var result_25127 = 0; + + BeforeRet: do { + if (!(a_25125 <= i_25124)) Tmp1 = false; else { Tmp1 = (i_25124 <= b_25126); } if (Tmp1) { + result_25127 = i_25124; + break BeforeRet; + } + else { + raiseRangeError(); + } + + } while (false); + + return result_25127; + +} + +function chckIndx(i_25105, a_25106, b_25107) { + var Tmp1; + + var result_25108 = 0; + + BeforeRet: do { + if (!(a_25106 <= i_25105)) Tmp1 = false; else { Tmp1 = (i_25105 <= b_25107); } if (Tmp1) { + result_25108 = i_25105; + break BeforeRet; + } + else { + raiseIndexError(i_25105, a_25106, b_25107); + } + + } while (false); + + return result_25108; + +} + +function addInt(a_23803, b_23804) { + var result = a_23803 + b_23804; + if (result > 2147483647 || result < -2147483648) raiseOverflow(); + return result; + + + +} + +function mnewString(len_23463) { + return new Array(len_23463); + + + +} +var ConstSet2 = setConstr(60, 62, 94); +var ConstSet3 = setConstr(60, 62, 94); +var ConstSet4 = setConstr(45, 43, 32); +var ConstSet5 = setConstr([48, 57]); +var ConstSet6 = setConstr([48, 57]); +var ConstSet7 = setConstr([48, 57]); + +function subInt(a_23821, b_23822) { + var result = a_23821 - b_23822; + if (result > 2147483647 || result < -2147483648) raiseOverflow(); + return result; + + + +} + +function divInt(a_23857, b_23858) { + if (b_23858 == 0) raiseDivByZero(); + if (b_23858 == -1 && a_23857 == 2147483647) raiseOverflow(); + return Math.trunc(a_23857 / b_23858); + + + +} + +function mulInt(a_23839, b_23840) { + var result = a_23839 * b_23840; + if (result > 2147483647 || result < -2147483648) raiseOverflow(); + return result; + + + +} +var ConstSet8 = setConstr([65, 90], [97, 122]); + +function modInt(a_23875, b_23876) { + if (b_23876 == 0) raiseDivByZero(); + if (b_23876 == -1 && a_23875 == 2147483647) raiseOverflow(); + return Math.trunc(a_23875 % b_23876); + + + +} + +function nimCharToStr(x_21062) { + var result_21063 = null; + + result_21063 = nimCopy(null, mnewString(1), NTI138); + result_21063[0] = x_21062; + + return result_21063; + +} + +function addChar(x_25311, c_25312) { + x_25311.push(c_25312); + + +} +var nim_program_result = 0; +var global_raise_hook_18618 = [null]; +var local_raise_hook_18623 = [null]; +var out_of_mem_hook_18626 = [null]; + if (!Math.trunc) { + Math.trunc = function(v) { + v = +v; + if (!isFinite(v)) return v; + + return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0); + }; + } +var lc_54221 = [{}]; +var object_id_166237 = [0]; +var env_computed_186610 = [false]; +var environment_186612 = [null]; +var render_width_221049 = [0]; +var render_height_221050 = [0]; + +function new_seq_23336(len_23339) { + var result_23341 = null; + + var F={procname:"newSeq.newSeq",prev:framePtr,filename:"system.nim",line:0}; + framePtr = F; + F.line = 996; + result_23341 = new Array(len_23339); for (var i=0;i