In the beginning there was darkness

This commit is contained in:
Daniel Ziltener 2021-04-30 07:54:07 +02:00
commit b235bda44c
14 changed files with 1138 additions and 0 deletions

7
Makefile Normal file
View File

@ -0,0 +1,7 @@
deps: ~/.cache/chicken-install/awful-sse/awful.sse.so ~/.cache/chicken-install/mini-kanren/mini-kanren.so
~/.cache/chicken-install/awful-sse/awful.sse.so:
chicken-install -s awful-sse
~/.cache/chicken-install/mini-kanren/mini-kanren.so:
chicken-install -s mini-kanren

120
coinage.scm Normal file
View File

@ -0,0 +1,120 @@
(import (scheme base)
(chicken port)
(chicken irregex)
(chicken time posix)
srfi-123
srfi-69
srfi-48
srfi-18
intarweb
spiffy
awful
(awful sse)
sxml-transforms)
;; Game
(define games (make-hash-table))
(define (init-game-table)
(let ((game (make-hash-table)))
game))
;; Webserver stuff
(define (add-sse-resource! sse-path sse-proc vhost-root-path client-path)
(add-resource! sse-path
(or vhost-root-path (root-path))
(lambda (#!optional given-path)
(let ((accept (header-values 'accept
(request-headers (current-request)))))
;; If client's EventSource (JS code) requested SSE page...
(if (memq 'text/event-stream accept)
;;...complete handshake & keep connection alive with 'sse-proc'.
(lambda ()
(with-headers '((content-type text/event-stream)
(cache-control no-cache)
(connection keep-alive))
(lambda ()
(write-logged-response)
(sse-proc))))
(redirect-to client-path))))
'GET
#f))
(define (pagescript sse-path color)
#<#EOF
eventsource ssevent from #{sse-path}
on unlockMessage as string
if it is "#{color}"
set #board.data-locked to 'false'
end
end
end
EOF
)
(define (render-sxml sxml)
(with-output-to-string
(lambda ()
(SXML->HTML sxml))))
(define (board sse-path color)
(let ()
`(div (@ (id "content")
(class "row"))
(div (@ (id "leftbank")
(class "col-2 m-0")))
(div (@ (id "board")
(data-locked ,(if (eqv? color "white") "true" "false"))
(class "col-8 m-0 p-0")))
(div (@ (id "rightbank")
(class "col-2 m-0"))))))
(define (game-proc code)
(print "Returning sse-proc")
(lambda ()
(let loop ()
(send-sse-data (render-positions)
id: (seconds->string) event: "boardChange")
(thread-sleep! 2)
(loop))))
(define (init-game code)
(let ((game (or (and (hash-table-exists? games code)
(~ games code))
#f))
(sse-path (string-append "/sse-" code))
(sse-proc (game-proc code)))
(print "Game:" game)
(if game
(board sse-path "white")
(let ((game (init-game-table)))
(print "Initialized game to " game ", adding SSE resource.")
(set! (~ game 'sse-proc) (add-sse-resource! sse-path sse-proc #f sse-path))
(set! (~ game 'code) code)
(set! (~ games code) game)
(board sse-path "yellow")))))
(define-page "/start-game"
(lambda ()
(let ((gamecode ($ 'gamecode as-string)))
(init-game gamecode))))
(define-page "/"
(lambda ()
(lambda ()
(send-static-file "resources/html/coinage.html")))
no-template: #t)
(define-page "/css/coinage.css"
(lambda ()
(lambda ()
(send-static-file "resources/css/coinage.css"))))
(define-page (irregex "/images/.*")
(lambda (file)
(print "Trying to fetch file " file "...")
(lambda ()
(print "Fetching " file "...")
(send-static-file (string-append "resources" file)))))

View File

@ -0,0 +1,9 @@
html {
scrollbar-width: none;
overflow: hidden;
}
html::-webkit-scrollbar {
width: 0 !important;
display: none;
}

View File

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CoinAge Online</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous"/>
<link rel="stylesheet" href="https://unpkg.com/dialog-polyfill@0.5.6/dist/dialog-polyfill.css"/>
<link rel="stylesheet" href="css/coinage.css"/>
</head>
<body>
<div id="content">
</div>
<div style="display:none;"
hx-trigger="every 2s"
hx-get="/reload"
></div>
<dialog id="selectCoin">
Seems like it works. You clicked coordinates <span id="clickedCoords"></span>
<button _="on click close() the #selectCoin">Close</button>
</dialog>
<script type="text/hyperscript">
def showCoinChooser(x,y)
call #selectCoin.showModal()
end
</script>
<dialog id="joinMatch">
<h3>Welcome to Coin Age!</h3>
<p>Please enter a code to join a match:</p>
<input type="text" name="gamecode">
<button hx-get="/start-game"
hx-include="[name='gamecode']"
hx-target="#content"
hx-swap="outerHTML"
_="on click close() the #joinMatch">
Start
</button>
</dialog>
<script src="https://unpkg.com/@iconfu/svg-inject@1.2.3/dist/svg-inject.min.js"></script>
<script src="https://unpkg.com/dialog-polyfill@0.5.6/dist/dialog-polyfill.js"></script>
<script src="https://unpkg.com/htmx.org@1.3.3"></script>
<script src="https://unpkg.com/hyperscript.org@0.0.9"></script>
<div
_="init registerDialog(#joinMatch) the dialogPolyfill then showModal() the #joinMatch
then registerDialog(#selectCoin) the dialogPolyfill"
></div>
</body>
</html>

955
resources/images/board.svg Normal file
View File

@ -0,0 +1,955 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 401.66428 267.60037"
version="1.1"
id="svg8"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
sodipodi:docname="board.svg">
<defs
id="defs2">
<rect
x="-34.490142"
y="95.84276"
width="286.00325"
height="82.300924"
id="rect1933" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="721.95369"
inkscape:cy="486.02113"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1015"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(99.684448,-9.4499388)">
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/coinage.png"
xlink:href="images/coinage.png"
y="12.466974"
x="-82.434776"
id="image122"
preserveAspectRatio="none"
height="264.58334"
width="370.41666" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="11.82634"
x="-53.799992"
id="yellow-4-00"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="11.239396"
x="62.083733"
id="yellow-4-10"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="9.4499388"
x="176.09018"
id="yellow-4-20"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="105.56947"
x="224.01596"
id="yellow-4-31"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="194.36847"
x="173.97624"
id="yellow-4-22"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="193.52266"
x="62.815853"
id="yellow-4-12"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="196.80606"
x="-46.555561"
id="yellow-4-02"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="98.010193"
x="-99.684448"
id="yellow-4-01"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="105.25869"
x="10.766932"
id="yellow-4-11"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-4.png"
xlink:href="images/yellow-coin-4.png"
inkscape:svg-dpi="1"
y="104.8273"
x="120.63573"
id="yellow-4-21"
preserveAspectRatio="none"
height="78.669449"
width="77.963882" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
y="12.179123"
x="-54.505558"
id="white-4-00"
preserveAspectRatio="none"
height="78.316666"
width="78.669449" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-10"
x="62.083733"
y="11.592179" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-20"
x="176.09018"
y="9.802722" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-31"
x="223.31039"
y="105.56947" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-21"
x="120.63573"
y="104.8273" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-11"
x="10.061365"
y="105.25869" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-01"
x="-99.684448"
y="98.010193" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-02"
x="-47.261127"
y="196.80606" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-12"
x="62.110287"
y="193.52266" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-4.png"
xlink:href="images/white-coin-4.png"
inkscape:svg-dpi="1"
width="78.669449"
height="78.316666"
preserveAspectRatio="none"
id="white-4-22"
x="173.97624"
y="194.36847" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
y="14.511953"
x="-52.095905"
id="yellow-3-00"
preserveAspectRatio="none"
height="72.672218"
width="72.672218" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-10"
x="63.550873"
y="15.337743" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-20"
x="179.10326"
y="12.80133" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-01"
x="-97.943718"
y="101.24776" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-11"
x="12.902061"
y="108.31329" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-21"
x="123.2711"
y="107.2413" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-31"
x="225.70265"
y="108.92081" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-02"
x="-44.55032"
y="199.05754" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-12"
x="65.062775"
y="195.56812" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-3.png"
xlink:href="images/yellow-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="yellow-3-22"
x="176.94373"
y="197.21149" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
y="14.511953"
x="-52.095905"
id="white-3-00"
preserveAspectRatio="none"
height="72.672218"
width="72.672218" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-10"
x="63.550873"
y="15.337743" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-20"
x="179.10326"
y="12.80133" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-01"
x="-97.943718"
y="101.24776" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-11"
x="12.902061"
y="108.31329" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-21"
x="123.2711"
y="107.2413" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-31"
x="225.70265"
y="108.92081" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-22"
x="176.94373"
y="197.21149" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-12"
x="65.062775"
y="195.56812" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-3.png"
xlink:href="images/white-coin-3.png"
inkscape:svg-dpi="1"
width="72.672218"
height="72.672218"
preserveAspectRatio="none"
id="white-3-02"
x="-44.55032"
y="199.05754" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
y="15.814594"
x="-49.970116"
id="yellow-2-00"
preserveAspectRatio="none"
height="67.380554"
width="67.027779" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-10"
x="66.131454"
y="16.597919" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-20"
x="181.58549"
y="14.290232" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-01"
x="-95.298943"
y="102.50322" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-11"
x="14.388746"
y="110.0448" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-21"
x="125.92378"
y="109.1128" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-31"
x="228.298"
y="110.33983" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-22"
x="179.08781"
y="198.86299" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-12"
x="67.543098"
y="197.69934" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-2.png"
xlink:href="images/yellow-coin-2.png"
inkscape:svg-dpi="1"
width="67.027779"
height="67.380554"
preserveAspectRatio="none"
id="yellow-2-02"
x="-42.111069"
y="201.35095" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
y="15.814594"
x="-50.322891"
id="white-2-00"
preserveAspectRatio="none"
height="67.380554"
width="67.380554" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-10"
x="66.131454"
y="16.597919" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-20"
x="181.23273"
y="14.290232" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-01"
x="-95.298943"
y="102.50322" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-11"
x="14.388746"
y="110.0448" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-21"
x="125.57101"
y="109.1128" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-31"
x="228.298"
y="110.33983" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-22"
x="179.08781"
y="198.86299" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-12"
x="67.190323"
y="197.69934" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-2.png"
xlink:href="images/white-coin-2.png"
inkscape:svg-dpi="1"
width="67.380554"
height="67.380554"
preserveAspectRatio="none"
id="white-2-02"
x="-42.463844"
y="201.35095" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
y="19.854616"
x="-47.179165"
id="yellow-1-00"
preserveAspectRatio="none"
height="61.736111"
width="61.736111" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-10"
x="69.535141"
y="19.461723" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-20"
x="184.52682"
y="17.623568" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-01"
x="-92.376907"
y="105.95986" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-11"
x="17.637558"
y="112.779" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-21"
x="128.21626"
y="112.14484" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-31"
x="230.9072"
y="112.674" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-02"
x="-38.861473"
y="204.59891" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-12"
x="70.114586"
y="201.48988" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/yellow-coin-1.png"
xlink:href="images/yellow-coin-1.png"
inkscape:svg-dpi="1"
width="61.736111"
height="61.736111"
preserveAspectRatio="none"
id="yellow-1-22"
x="181.25578"
y="202.09535" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
y="19.854616"
x="-47.179165"
id="white-1-00"
preserveAspectRatio="none"
height="62.441666"
width="62.08889" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-10"
x="69.182365"
y="18.756168" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-20"
x="184.17404"
y="16.918013" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-01"
x="-92.729691"
y="105.2543" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-11"
x="17.637558"
y="112.07345" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-21"
x="127.86348"
y="111.43929" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-31"
x="230.9072"
y="111.96844" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-02"
x="-38.861473"
y="204.59891" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-12"
x="69.761803"
y="200.78433" />
<image
sodipodi:absref="/home/zilti/projects/coinage/resources/images/white-coin-1.png"
xlink:href="images/white-coin-1.png"
inkscape:svg-dpi="1"
width="62.08889"
height="62.441666"
preserveAspectRatio="none"
id="white-1-22"
x="181.25578"
y="202.09535" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014"
cx="-12.564754"
cy="52.446472"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(0,0);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-4"
cx="99.509003"
cy="49.515415"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(1,0);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-9"
cx="209.50008"
cy="55.94101"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(2,0);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-2"
cx="257.50305"
cy="145.89934"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(3,1);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-0"
cx="210.25603"
cy="235.85767"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(2,2);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-6"
cx="103.28876"
cy="237.74756"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(1,2);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-8"
cx="-15.773734"
cy="240.01541"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(0,2);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-92"
cx="-62.055061"
cy="140.25592"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(0,1);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-66"
cx="49.616146"
cy="142.11958"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(1,1);" />
<ellipse
style="fill:#ffaaaa;stroke-width:0.264583;fill-opacity:0"
id="path1014-49"
cx="159.22925"
cy="143.25351"
rx="47.668419"
ry="47.923161"
onclick="javascript:mapTap(2,1);" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB