added mills module

This commit is contained in:
mig 2017-04-09 00:33:09 +02:00
parent 967f7629ec
commit ca43ac9254
112 changed files with 21354 additions and 0 deletions

View file

@ -0,0 +1,101 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
Model.Game.InitGameExtra = function() {
}
Model.Game.BuildGraphCoord = function() {
/*
* Each of the 24 positions on the board
* Directions: none specified
* this.g.Graph[position][direction] = new position to the direction or null if no position toward that direction
*/
this.g.Graph=[
[1,9,null,3], // 0
[2,4,0,null], // 1
[null,14,1,5], // 2
[4,10,0,6], // 3
[5,7,3,1], // 4
[2,13,4,8], // 5
[7,11,null,3], // 6
[8,null,6,4], // 7
[null,12,7,5], // 8
[10,21,null,0], // 9
[11,18,9,3], // 10
[null,15,10,6], // 11
[13,17,null,8], //12
[14,20,12,5], // 13
[null,23,13,2], // 14
[16,null,18,11], // 15
[17,19,15,null], // 16
[20,null,16,12], // 17
[19,21,15,10], // 18
[20,22,18,16], // 19
[23,17,19,13], // 20
[22,null,18,9], //21
[23,null,21,19], // 22
[20,null,22,14], // 23
];
/*
* Each of the 24 positions on the board
* this.g.Coord[position]=[row,column]
*/
this.g.Coord=[
[0,0], // 0
[0,3], // 1
[0,6], // 2
[1,1], // 3
[1,3], // 4
[1,5], // 5
[2,2], // 6
[2,3], // 7
[2,4], // 8
[3,0], // 9
[3,1], // 10
[3,2], // 11
[3,4], //12
[3,5], // 13
[3,6], // 14
[4,2], // 15
[4,3], // 16
[4,4], // 17
[5,1], // 18
[5,3], // 19
[5,5], // 20
[6,0], //21
[6,3], // 22
[6,6], // 23
];
/*
* All groups of 3 aligned positions
*/
this.g.Triplets=[
[0,1,2],
[3,4,5],
[6,7,8],
[9,10,11],
[12,13,14],
[15,16,17],
[18,19,20],
[21,22,23],
[0,9,21],
[3,10,18],
[6,11,15],
[1,4,7],
[16,19,22],
[8,12,17],
[5,13,20],
[2,14,23],
[0,3,6],
[17,20,23],
[2,5,8],
[15,18,21],
];
}

View file

@ -0,0 +1,48 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
View.Game.MillsGetLines=function() {
var lines=[
[0,0,0,6],
[1,1,1,5],
[2,2,2,4],
[3,0,3,2],
[3,4,3,6],
[4,2,4,4],
[5,1,5,5],
[6,0,6,6],
[0,0,6,0],
[1,1,5,1],
[2,2,4,2],
[0,3,2,3],
[4,3,6,3],
[2,4,4,4],
[1,5,5,5],
[0,6,6,6],
[0,0,2,2],
[0,6,2,4],
[6,0,4,2],
[6,6,4,4],
];
return lines;
}
View.Game.xdInitExtra = function(xdv) {
xdv.updateGadget("board", {
"stone" : {
file : this.mViewOptions.fullPath + "/res/images/12mensboard-stone.jpg",
},
"suede" : {
file : this.mViewOptions.fullPath + "/res/images/12mensboard-suede.jpg",
},
"wood" : {
file : this.mViewOptions.fullPath + "/res/images/12mensboard-wood.jpg",
},
});
}

View file

View file

@ -0,0 +1,57 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
Model.Game.InitGameExtra = function() {
}
Model.Game.BuildGraphCoord = function() {
/*
* Each of the 9 positions on the board
* Directions: 0=right, 1=top, 2=left, 3=bottom
* this.g.Graph[position][direction] = new position to the direction or null if no position toward that direction
*/
this.g.Graph=[
[1,3,null,null], // 0
[2,4,0,null], // 1
[null,5,1,null], // 2
[4,6,null,0], // 3
[5,7,3,1], // 4
[null,8,4,2], // 5
[7,null,null,3], // 6
[8,null,6,4], // 7
[null,null,7,5], // 8
];
/*
* Each of the 9 positions on the board
* this.g.Coord[position]=[row,column]
*/
this.g.Coord=[
[0,0], // 0
[0,1], // 1
[0,2], // 2
[1,0], // 3
[1,1], // 4
[1,2], // 5
[2,0], // 6
[2,1], // 7
[2,2], // 8
];
/*
* All groups of 3 aligned positions
*/
this.g.Triplets=[
[0,1,2],
[3,4,5],
[6,7,8],
[0,3,6],
[1,4,7],
[2,5,8],
];
}

View file

@ -0,0 +1,33 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
View.Game.MillsGetLines=function() {
var lines=[
[0,0,0,2],
[1,0,1,2],
[2,0,2,2],
[0,0,2,0],
[0,1,2,1],
[0,2,2,2],
];
return lines;
}
View.Game.xdInitExtra = function(xdv) {
xdv.updateGadget("board", {
"stone" : {
file : this.mViewOptions.fullPath + "/res/images/3mensboard-stone.jpg",
},
"suede" : {
file : this.mViewOptions.fullPath + "/res/images/3mensboard-suede.jpg",
},
"wood" : {
file : this.mViewOptions.fullPath + "/res/images/3mensboard-wood.jpg",
},
});
}

View file

View file

@ -0,0 +1,85 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
Model.Game.InitGameExtra = function() {
}
Model.Game.BuildGraphCoord = function() {
/*
* Each of the 16 positions on the board
* Directions: 0=right, 1=top, 2=left, 3=bottom
* this.g.Graph[position][direction] = new position to the direction or null if no position toward that direction
*/
this.g.Graph=[
[1,6,null,null], // 0
[2,4,0,null], // 1
[null,9,1,null], // 2
[4,7,null,null], // 3
[5,null,3,1], // 4
[null,8,4,null], // 5
[7,13,null,0], // 6
[null,10,6,3], // 7
[9,12,null,5], // 8
[null,15,8,2], // 9
[11,null,null,7], // 10
[12,14,10,null], // 11
[null,null,11,8], // 12
[14,null,null,6], // 13
[15,null,13,11], // 14
[null,null,14,9], // 15
];
/*
* Each of the 16 positions on the board
* this.g.Coord[position]=[row,column]
*/
this.g.Coord=[
[0,0], // 0
[0,2], // 1
[0,4], // 2
[1,1], // 3
[1,2], // 4
[1,3], // 5
[2,0], // 6
[2,1], // 7
[2,3], // 8
[2,4], // 9
[3,1], // 10
[3,2], // 11
[3,3], //12
[4,0], // 13
[4,2], // 14
[4,4], // 15
];
/*
* All groups of 3 aligned positions
*/
this.g.Triplets=[
[0,1,2],
[3,4,5],
[10,11,12],
[13,14,15],
[0,6,13],
[3,7,10],
[5,8,12],
[2,9,15],
];
}
Model.Board.StaticGenerateMoves = function(aGame) {
if(aGame.mFullPlayedMoves.length==0) { // very first move: pick position with 2 triplets
var poss=[0,2,3,5,10,12,13,15];
var moves=[];
for(var i in poss)
poss.push({f:-1,t:poss[i],c:-1});
return moves;
}
return null;
}

View file

@ -0,0 +1,39 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
View.Game.MillsGetLines=function() {
var lines=[
[0,0,0,4],
[1,1,1,3],
[2,0,2,1],
[2,3,2,4],
[3,1,3,3],
[4,0,4,4],
[0,0,4,0],
[1,1,3,1],
[0,2,1,2],
[3,2,4,2],
[1,3,3,3],
[0,4,4,4],
];
return lines;
}
View.Game.xdInitExtra = function(xdv) {
xdv.updateGadget("board", {
"stone" : {
file : this.mViewOptions.fullPath + "/res/images/6mensboard-stone.jpg",
},
"suede" : {
file : this.mViewOptions.fullPath + "/res/images/6mensboard-suede.jpg",
},
"wood" : {
file : this.mViewOptions.fullPath + "/res/images/6mensboard-wood.jpg",
},
});
}

View file

View file

@ -0,0 +1,89 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
Model.Game.InitGameExtra = function() {
}
Model.Game.BuildGraphCoord = function() {
/*
* Each of the 17 positions on the board
* Directions: 0=right, 1=top, 2=left, 3=bottom
* this.g.Graph[position][direction] = new position to the direction or null if no position toward that direction
*/
this.g.Graph=[
[1,6,null,null], // 0
[2,4,0,null], // 1
[null,9,1,null], // 2
[4,7,null,null], // 3
[5,16,3,1], // 4
[null,8,4,null], // 5
[7,13,null,0], // 6
[16,10,6,3], // 7
[9,12,16,5], // 8
[null,15,8,2], // 9
[11,null,null,7], // 10
[12,14,10,16], // 11
[null,null,11,8], // 12
[14,null,null,6], // 13
[15,null,13,11], // 14
[null,null,14,9], // 15
[8,11,7,4], // 16
];
/*
* Each of the 17 positions on the board
* this.g.Coord[position]=[row,column]
*/
this.g.Coord=[
[0,0], // 0
[0,2], // 1
[0,4], // 2
[1,1], // 3
[1,2], // 4
[1,3], // 5
[2,0], // 6
[2,1], // 7
[2,3], // 8
[2,4], // 9
[3,1], // 10
[3,2], // 11
[3,3], //12
[4,0], // 13
[4,2], // 14
[4,4], // 15
[2,2], // 16
];
/*
* All groups of 3 aligned positions
*/
this.g.Triplets=[
[0,1,2],
[3,4,5],
[10,11,12],
[13,14,15],
[0,6,13],
[3,7,10],
[5,8,12],
[2,9,15],
[6,7,16],
[7,16,8],
[16,8,9],
[1,4,16],
[4,16,11],
[16,11,14],
];
}
Model.Board.StaticGenerateMoves = function(aGame) {
if(aGame.mFullPlayedMoves.length==0) { // very first move: pick center
return [{f:-1,t:16,c:-1}];
}
return null;
}

View file

@ -0,0 +1,41 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
View.Game.MillsGetLines=function() {
var lines=[
[0,0,0,4],
[1,1,1,3],
[2,0,2,1],
[2,3,2,4],
[3,1,3,3],
[4,0,4,4],
[0,0,4,0],
[1,1,3,1],
[0,2,1,2],
[3,2,4,2],
[1,3,3,3],
[0,4,4,4],
[1,2,3,2],
[2,1,2,3],
];
return lines;
}
View.Game.xdInitExtra = function(xdv) {
xdv.updateGadget("board", {
"stone" : {
file : this.mViewOptions.fullPath + "/res/images/7mensboard-stone.jpg",
},
"suede" : {
file : this.mViewOptions.fullPath + "/res/images/7mensboard-suede.jpg",
},
"wood" : {
file : this.mViewOptions.fullPath + "/res/images/7mensboard-wood.jpg",
},
});
}

View file

View file

@ -0,0 +1,97 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
Model.Game.InitGameExtra = function() {
}
Model.Game.BuildGraphCoord = function() {
/*
* Each of the 24 positions on the board
* Directions: 0=right, 1=top, 2=left, 3=bottom
* this.g.Graph[position][direction] = new position to the direction or null if no position toward that direction
*/
this.g.Graph=[
[1,9,null,null], // 0
[2,4,0,null], // 1
[null,14,1,null], // 2
[4,10,null,null], // 3
[5,7,3,1], // 4
[null,13,4,null], // 5
[7,11,null,null], // 6
[8,null,6,4], // 7
[null,12,7,null], // 8
[10,21,null,0], // 9
[11,18,9,3], // 10
[null,15,10,6], // 11
[13,17,null,8], //12
[14,20,12,5], // 13
[null,23,13,2], // 14
[16,null,null,11], // 15
[17,19,15,null], // 16
[null,null,16,12], // 17
[19,null,null,10], // 18
[20,22,18,16], // 19
[null,null,19,13], // 20
[22,null,null,9], //21
[23,null,21,19], // 22
[null,null,22,14], // 23
];
/*
* Each of the 24 positions on the board
* this.g.Coord[position]=[row,column]
*/
this.g.Coord=[
[0,0], // 0
[0,3], // 1
[0,6], // 2
[1,1], // 3
[1,3], // 4
[1,5], // 5
[2,2], // 6
[2,3], // 7
[2,4], // 8
[3,0], // 9
[3,1], // 10
[3,2], // 11
[3,4], //12
[3,5], // 13
[3,6], // 14
[4,2], // 15
[4,3], // 16
[4,4], // 17
[5,1], // 18
[5,3], // 19
[5,5], // 20
[6,0], //21
[6,3], // 22
[6,6], // 23
];
/*
* All groups of 3 aligned positions
*/
this.g.Triplets=[
[0,1,2],
[3,4,5],
[6,7,8],
[9,10,11],
[12,13,14],
[15,16,17],
[18,19,20],
[21,22,23],
[0,9,21],
[3,10,18],
[6,11,15],
[1,4,7],
[16,19,22],
[8,12,17],
[5,13,20],
[2,14,23],
];
}

View file

@ -0,0 +1,43 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
View.Game.MillsGetLines=function() {
var lines=[
[0,0,0,6],
[1,1,1,5],
[2,2,2,4],
[3,0,3,2],
[3,4,3,6],
[4,2,4,4],
[5,1,5,5],
[6,0,6,6],
[0,0,6,0],
[1,1,5,1],
[2,2,4,2],
[0,3,2,3],
[4,3,6,3],
[2,4,4,4],
[1,5,5,5],
[0,6,6,6],
];
return lines;
}
View.Game.xdInitExtra = function(xdv) {
xdv.updateGadget("board", {
"stone" : {
file : this.mViewOptions.fullPath + "/res/images/9mensboard-stone.jpg",
},
"suede" : {
file : this.mViewOptions.fullPath + "/res/images/9mensboard-suede.jpg",
},
"wood" : {
file : this.mViewOptions.fullPath + "/res/images/9mensboard-wood.jpg",
},
});
}

View file

View file

@ -0,0 +1,8 @@
<p>Inventé par un subtil inconnu.</p>
<h3>Implémentation Jocly</h3>
<ul>
<li>Développement: Michel gutierrez (@<a target="_blank" href="http://twitter.com/_mig_">_mig_</a>)</li>
<li>Graphismes: Jérôme Choain (@<a target="_blank" href="http://twitter.com/jcfrog">jcfrog</a>)</li>
</ul>

View file

@ -0,0 +1,8 @@
<p>Invented by unknown smart people</p>
<h3>Jocly implementation</h3>
<ul>
<li>Development: Michel gutierrez (@<a target="_blank" href="http://twitter.com/_mig_">_mig_</a>)</li>
<li>Graphic design: Jérôme Choain (@<a target="_blank" href="http://twitter.com/jcfrog">jcfrog</a>)</li>
</ul>

View file

@ -0,0 +1,2 @@
<p>Un grand classique des jeux de stratégie, très ancien, connu sous l'Empire Romain, des dessins de ce type de plateaux auraient été découverts sur des dalles de toit de temples égyptiens datant de 1400 ans avant Jésus Christ.</p>
<p>Connu sous le nom de Marelle, Jeu du Moulin, Jeu du Charret, Jeu des Mérellles, ... </p>

View file

@ -0,0 +1 @@
<p>A very old and traditional strategic game. Played in the Roman Empire, some similar board would have been found in an egyptian temple (1400 BCE).</p>

941
src/games/mills/index.js Normal file
View file

@ -0,0 +1,941 @@
var mvs = {
"models": {
"9-men-morris": {
"plazza": "true",
"title-en": "9 Men´s Morris",
"module": "mills",
"maxLevel": 7,
"summary": "An old board game",
"thumbnail": "mensmorris9-thumb3d.png",
"rules": "rules.html",
"description": "description.html",
"credits": "credits.html",
"js": [
"mills-model.js",
"9-men-morris-model.js"
],
"gameOptions": {
"preventRepeat": true,
"width": 7,
"height": 7,
"mencount": 9,
"poundInMill": false
},
"levels": [
{
"label": "Easy",
"maxDepth": 2,
"potential": 100,
"placingRace": 1,
"isDefault": true
},
{
"label": "Medium",
"maxDepth": 4,
"potential": 300,
"placingRace": 1
},
{
"label": "Hard",
"maxDepth": 8,
"potential": 1000,
"placingRace": 2
}
]
},
"9-men-morris-fly": {
"plazza": "true",
"title-en": "9 Men´s Morris Fly",
"module": "mills",
"maxLevel": 7,
"summary": "An old board game",
"thumbnail": "mensmorris9-thumb3d.png",
"rules": "rules.html",
"description": "description.html",
"credits": "credits.html",
"js": [
"mills-model.js",
"9-men-morris-model.js"
],
"gameOptions": {
"preventRepeat": true,
"width": 7,
"height": 7,
"mencount": 9,
"canFly": true
},
"levels": [
{
"label": "Easy",
"maxDepth": 2,
"potential": 100,
"placingRace": 1,
"isDefault": true
},
{
"label": "Medium",
"maxDepth": 4,
"potential": 300,
"placingRace": 1
},
{
"label": "Hard",
"maxDepth": 8,
"potential": 1000,
"placingRace": 2
}
]
},
"12-men-morris": {
"plazza": "true",
"title-en": "12 Men´s Morris",
"module": "mills",
"maxLevel": 7,
"summary": "An old board game",
"thumbnail": "mensmorris12-thumb3d.png",
"rules": "rules.html",
"description": "description.html",
"credits": "credits.html",
"js": [
"mills-model.js",
"12-men-morris-model.js"
],
"gameOptions": {
"preventRepeat": true,
"width": 7,
"height": 7,
"mencount": 12,
"poundInMill": false
},
"levels": [
{
"label": "Easy",
"maxDepth": 2,
"potential": 100,
"placingRace": 1,
"isDefault": true
},
{
"label": "Medium",
"maxDepth": 4,
"potential": 300,
"placingRace": 1
},
{
"label": "Hard",
"maxDepth": 8,
"potential": 1000,
"placingRace": 2
}
]
},
"12-men-morris-fly": {
"plazza": "true",
"title-en": "12 Men´s Morris Fly",
"module": "mills",
"maxLevel": 7,
"summary": "An old board game",
"thumbnail": "mensmorris12-thumb3d.png",
"rules": "rules.html",
"description": "description.html",
"credits": "credits.html",
"js": [
"mills-model.js",
"12-men-morris-model.js"
],
"gameOptions": {
"preventRepeat": true,
"width": 7,
"height": 7,
"mencount": 12,
"canFly": true
},
"levels": [
{
"label": "Easy",
"maxDepth": 2,
"potential": 100,
"placingRace": 1,
"isDefault": true
},
{
"label": "Medium",
"maxDepth": 4,
"potential": 300,
"placingRace": 1
},
{
"label": "Hard",
"maxDepth": 8,
"potential": 1000,
"placingRace": 2
}
]
},
"6-men-morris": {
"plazza": "true",
"title-en": "6 Men´s Morris",
"module": "mills",
"maxLevel": 7,
"summary": "An old board game",
"thumbnail": "mensmorris6-thumb3d.png",
"rules": "rules.html",
"description": "description.html",
"credits": "credits.html",
"js": [
"mills-model.js",
"6-men-morris-model.js"
],
"gameOptions": {
"preventRepeat": true,
"width": 5,
"height": 5,
"mencount": 6,
"poundInMill": false
},
"levels": [
{
"label": "Easy",
"maxDepth": 2,
"potential": 100,
"placingRace": 1,
"isDefault": true
},
{
"label": "Medium",
"maxDepth": 4,
"potential": 300,
"placingRace": 1
},
{
"label": "Hard",
"maxDepth": 8,
"potential": 1000,
"placingRace": 2
}
]
},
"3-men-morris": {
"plazza": "true",
"title-en": "6 Men´s Morris",
"module": "mills",
"maxLevel": 7,
"summary": "An old board game",
"thumbnail": "mensmorris3-thumb3d.png",
"rules": "rules.html",
"description": "description.html",
"credits": "credits.html",
"js": [
"mills-model.js",
"3-men-morris-model.js"
],
"gameOptions": {
"preventRepeat": true,
"width": 3,
"height": 3,
"mencount": 3,
"poundInMill": false
},
"levels": [
{
"label": "Easy",
"maxDepth": 2,
"potential": 100,
"placingRace": 1,
"isDefault": true
},
{
"label": "Medium",
"maxDepth": 4,
"potential": 300,
"placingRace": 1
},
{
"label": "Hard",
"maxDepth": 8,
"potential": 1000,
"placingRace": 2
}
]
},
"7-men-morris": {
"plazza": "true",
"title-en": "7 Men´s Morris",
"module": "mills",
"maxLevel": 7,
"summary": "An old board game",
"thumbnail": "mensmorris7-thumb3d.png",
"rules": "rules.html",
"description": "description.html",
"credits": "credits.html",
"js": [
"mills-model.js",
"7-men-morris-model.js"
],
"gameOptions": {
"preventRepeat": true,
"width": 5,
"height": 5,
"mencount": 7,
"poundInMill": false
},
"levels": [
{
"label": "Easy",
"maxDepth": 2,
"potential": 100,
"placingRace": 1,
"isDefault": true
},
{
"label": "Medium",
"maxDepth": 4,
"potential": 300,
"placingRace": 1
},
{
"label": "Hard",
"maxDepth": 8,
"potential": 1000,
"placingRace": 2
}
]
}
},
"views": {
"9-men-morris": {
"js": [
"mills-xd-view.js",
"9-men-morris-view.js"
],
"visuals": {
"600x600": [
"res/visuals/ninemen-600x600-3d.jpg",
"res/visuals/ninemen-600x600-2d.jpg"
]
},
"xdView": true,
"css": [
"mills.css",
"9-men-morris.css"
],
"title-en": "7 Men´s Morris View",
"module": "mills",
"preferredRatio": 1.2857142857143,
"switchable": true,
"animateSelfMoves": false,
"useNotation": true,
"useShowMoves": true,
"defaultOptions": {
"sounds": true,
"notation": false,
"moves": true
},
"sounds": {
"move1": "move1",
"move2": "move2",
"move3": "move3",
"move4": "move4",
"tac1": "tac1",
"tac2": "tac2",
"tac3": "tac3",
"capture": "promo",
"usermove": null
},
"skins": [
{
"name": "classic3d",
"title": "3D Classic",
"3d": true,
"camera": {
"radius": 14,
"elevationAngle": 45,
"distMax": 39.5,
"distMin": 10.1,
"elevationMin": -89.9,
"elevationMax": 89.9,
"limitCamMoves": true
},
"world": {
"lightIntensity": 0.6,
"skyLightIntensity": 0.3,
"lightPosition": {
"x": 0,
"y": 18,
"z": 0
},
"color": 0,
"fog": false
},
"preload": [
"image|/res/xd-view/meshes/woodcell1x512.jpg",
"image|/res/xd-view/meshes/piecetop-bump.jpg",
"image|/res/xd-view/meshes/piecediff.jpg",
"smoothedfilegeo|0|/res/xd-view/meshes/piece-v2.js",
"smoothedfilegeo|0|/res/xd-view/meshes/boardoriented.js",
"smoothedfilegeo|0|/res/xd-view/meshes/ring-target.js"
]
},
{
"name": "stone",
"title": "Stone"
},
{
"name": "suede",
"title": "Suede"
},
{
"name": "wood",
"title": "Wood"
}
]
},
"9-men-morris-fly": {
"js": [
"mills-xd-view.js",
"9-men-morris-view.js"
],
"visuals": {
"600x600": [
"res/visuals/ninemen-600x600-3d.jpg",
"res/visuals/ninemen-600x600-2d.jpg"
]
},
"xdView": true,
"css": [
"mills.css",
"9-men-morris.css"
],
"title-en": "9 Men´s Morris View",
"module": "mills",
"preferredRatio": 1.2857142857143,
"switchable": true,
"animateSelfMoves": false,
"useNotation": true,
"useShowMoves": true,
"defaultOptions": {
"sounds": true,
"notation": false,
"moves": true
},
"sounds": {
"move1": "move1",
"move2": "move2",
"move3": "move3",
"move4": "move4",
"tac1": "tac1",
"tac2": "tac2",
"tac3": "tac3",
"capture": "promo",
"usermove": null
},
"skins": [
{
"name": "classic3d",
"title": "3D Classic",
"3d": true,
"camera": {
"radius": 14,
"elevationAngle": 45,
"distMax": 39.5,
"distMin": 10.1,
"elevationMin": -89.9,
"elevationMax": 89.9,
"limitCamMoves": true
},
"world": {
"lightIntensity": 0.6,
"skyLightIntensity": 0.3,
"lightPosition": {
"x": 0,
"y": 18,
"z": 0
},
"color": 0,
"fog": false
},
"preload": [
"image|/res/xd-view/meshes/woodcell1x512.jpg",
"image|/res/xd-view/meshes/piecetop-bump.jpg",
"image|/res/xd-view/meshes/piecediff.jpg",
"smoothedfilegeo|0|/res/xd-view/meshes/piece-v2.js",
"smoothedfilegeo|0|/res/xd-view/meshes/boardoriented.js",
"smoothedfilegeo|0|/res/xd-view/meshes/ring-target.js"
]
},
{
"name": "stone",
"title": "Stone"
},
{
"name": "suede",
"title": "Suede"
},
{
"name": "wood",
"title": "Wood"
}
]
},
"12-men-morris": {
"js": [
"mills-xd-view.js",
"12-men-morris-view.js"
],
"visuals": {
"600x600": [
"res/visuals/twelvemen-600x600-3d.jpg",
"res/visuals/twelvemen-600x600-2d.jpg"
]
},
"xdView": true,
"css": [
"mills.css",
"12-men-morris.css"
],
"title-en": "12 Men´s Morris View",
"module": "mills",
"preferredRatio": 1.2857142857143,
"switchable": true,
"animateSelfMoves": false,
"useNotation": true,
"useShowMoves": true,
"defaultOptions": {
"sounds": true,
"notation": false,
"moves": true
},
"sounds": {
"move1": "move1",
"move2": "move2",
"move3": "move3",
"move4": "move4",
"tac1": "tac1",
"tac2": "tac2",
"tac3": "tac3",
"capture": "promo",
"usermove": null
},
"skins": [
{
"name": "classic3d",
"title": "3D Classic",
"3d": true,
"camera": {
"radius": 14,
"elevationAngle": 45,
"distMax": 39.5,
"distMin": 10.1,
"elevationMin": -89.9,
"elevationMax": 89.9,
"limitCamMoves": true
},
"world": {
"lightIntensity": 0.6,
"skyLightIntensity": 0.3,
"lightPosition": {
"x": 0,
"y": 18,
"z": 0
},
"color": 0,
"fog": false
},
"preload": [
"image|/res/xd-view/meshes/woodcell1x512.jpg",
"image|/res/xd-view/meshes/piecetop-bump.jpg",
"image|/res/xd-view/meshes/piecediff.jpg",
"smoothedfilegeo|0|/res/xd-view/meshes/piece-v2.js",
"smoothedfilegeo|0|/res/xd-view/meshes/boardoriented.js",
"smoothedfilegeo|0|/res/xd-view/meshes/ring-target.js"
]
},
{
"name": "stone",
"title": "Stone"
},
{
"name": "suede",
"title": "Suede"
},
{
"name": "wood",
"title": "Wood"
}
]
},
"12-men-morris-fly": {
"js": [
"mills-xd-view.js",
"12-men-morris-view.js"
],
"visuals": {
"600x600": [
"res/visuals/twelvemen-600x600-3d.jpg",
"res/visuals/twelvemen-600x600-2d.jpg"
]
},
"xdView": true,
"css": [
"mills.css",
"12-men-morris.css"
],
"title-en": "12 Men´s Morris View",
"module": "mills",
"preferredRatio": 1.2857142857143,
"switchable": true,
"animateSelfMoves": false,
"useNotation": true,
"useShowMoves": true,
"defaultOptions": {
"sounds": true,
"notation": false,
"moves": true
},
"sounds": {
"move1": "move1",
"move2": "move2",
"move3": "move3",
"move4": "move4",
"tac1": "tac1",
"tac2": "tac2",
"tac3": "tac3",
"capture": "promo",
"usermove": null
},
"skins": [
{
"name": "classic3d",
"title": "3D Classic",
"3d": true,
"camera": {
"radius": 14,
"elevationAngle": 45,
"distMax": 39.5,
"distMin": 10.1,
"elevationMin": -89.9,
"elevationMax": 89.9,
"limitCamMoves": true
},
"world": {
"lightIntensity": 0.6,
"skyLightIntensity": 0.3,
"lightPosition": {
"x": 0,
"y": 18,
"z": 0
},
"color": 0,
"fog": false
},
"preload": [
"image|/res/xd-view/meshes/woodcell1x512.jpg",
"image|/res/xd-view/meshes/piecetop-bump.jpg",
"image|/res/xd-view/meshes/piecediff.jpg",
"smoothedfilegeo|0|/res/xd-view/meshes/piece-v2.js",
"smoothedfilegeo|0|/res/xd-view/meshes/boardoriented.js",
"smoothedfilegeo|0|/res/xd-view/meshes/ring-target.js"
]
},
{
"name": "stone",
"title": "Stone"
},
{
"name": "suede",
"title": "Suede"
},
{
"name": "wood",
"title": "Wood"
}
]
},
"6-men-morris": {
"js": [
"mills-xd-view.js",
"6-men-morris-view.js"
],
"visuals": {
"600x600": [
"res/visuals/sixmen-600x600-3d.jpg",
"res/visuals/sixmen-600x600-2d.jpg"
]
},
"xdView": true,
"css": [
"mills.css",
"6-men-morris.css"
],
"title-en": "6 Men´s Morris View",
"module": "mills",
"preferredRatio": 1.4,
"switchable": true,
"animateSelfMoves": false,
"useNotation": true,
"useShowMoves": true,
"defaultOptions": {
"sounds": true,
"notation": false,
"moves": true
},
"sounds": {
"move1": "move1",
"move2": "move2",
"move3": "move3",
"move4": "move4",
"tac1": "tac1",
"tac2": "tac2",
"tac3": "tac3",
"capture": "promo",
"usermove": null
},
"skins": [
{
"name": "classic3d",
"title": "3D Classic",
"3d": true,
"camera": {
"radius": 14,
"elevationAngle": 45,
"distMax": 39.5,
"distMin": 10.1,
"elevationMin": -89.9,
"elevationMax": 89.9,
"limitCamMoves": true
},
"world": {
"lightIntensity": 0.6,
"skyLightIntensity": 0.3,
"lightPosition": {
"x": 0,
"y": 18,
"z": 0
},
"color": 0,
"fog": false
},
"preload": [
"image|/res/xd-view/meshes/woodcell1x512.jpg",
"image|/res/xd-view/meshes/piecetop-bump.jpg",
"image|/res/xd-view/meshes/piecediff.jpg",
"smoothedfilegeo|0|/res/xd-view/meshes/piece-v2.js",
"smoothedfilegeo|0|/res/xd-view/meshes/boardoriented.js",
"smoothedfilegeo|0|/res/xd-view/meshes/ring-target.js"
]
},
{
"name": "stone",
"title": "Stone"
},
{
"name": "suede",
"title": "Suede"
},
{
"name": "wood",
"title": "Wood"
}
]
},
"3-men-morris": {
"js": [
"mills-xd-view.js",
"3-men-morris-view.js"
],
"visuals": {
"600x600": [
"res/visuals/threemen-600x600-3d.jpg",
"res/visuals/threemen-600x600-2d.jpg"
]
},
"xdView": true,
"css": [
"mills.css",
"3-men-morris.css"
],
"title-en": "3 Men´s Morris View",
"module": "mills",
"preferredRatio": 1.6666666666667,
"switchable": true,
"animateSelfMoves": false,
"useNotation": true,
"useShowMoves": true,
"defaultOptions": {
"sounds": true,
"notation": false,
"moves": true
},
"sounds": {
"move1": "move1",
"move2": "move2",
"move3": "move3",
"move4": "move4",
"tac1": "tac1",
"tac2": "tac2",
"tac3": "tac3",
"capture": "promo",
"usermove": null
},
"skins": [
{
"name": "classic3d",
"title": "3D Classic",
"3d": true,
"camera": {
"radius": 14,
"elevationAngle": 45,
"distMax": 39.5,
"distMin": 10.1,
"elevationMin": -89.9,
"elevationMax": 89.9,
"limitCamMoves": true
},
"world": {
"lightIntensity": 0.6,
"skyLightIntensity": 0.3,
"lightPosition": {
"x": 0,
"y": 18,
"z": 0
},
"color": 0,
"fog": false
},
"preload": [
"image|/res/xd-view/meshes/woodcell1x512.jpg",
"image|/res/xd-view/meshes/piecetop-bump.jpg",
"image|/res/xd-view/meshes/piecediff.jpg",
"smoothedfilegeo|0|/res/xd-view/meshes/piece-v2.js",
"smoothedfilegeo|0|/res/xd-view/meshes/boardoriented.js",
"smoothedfilegeo|0|/res/xd-view/meshes/ring-target.js"
]
},
{
"name": "stone",
"title": "Stone"
},
{
"name": "suede",
"title": "Suede"
},
{
"name": "wood",
"title": "Wood"
}
]
},
"7-men-morris": {
"js": [
"mills-xd-view.js",
"7-men-morris-view.js"
],
"visuals": {
"600x600": [
"res/visuals/sevenmen-600x600-3d.jpg",
"res/visuals/sevenmen-600x600-2d.jpg"
]
},
"xdView": true,
"css": [
"mills.css",
"7-men-morris.css"
],
"title-en": "7 Men´s Morris View",
"module": "mills",
"preferredRatio": 1.4,
"switchable": true,
"animateSelfMoves": false,
"useNotation": true,
"useShowMoves": true,
"defaultOptions": {
"sounds": true,
"notation": false,
"moves": true
},
"sounds": {
"move1": "move1",
"move2": "move2",
"move3": "move3",
"move4": "move4",
"tac1": "tac1",
"tac2": "tac2",
"tac3": "tac3",
"capture": "promo",
"usermove": null
},
"skins": [
{
"name": "classic3d",
"title": "3D Classic",
"3d": true,
"camera": {
"radius": 14,
"elevationAngle": 45,
"distMax": 39.5,
"distMin": 10.1,
"elevationMin": -89.9,
"elevationMax": 89.9,
"limitCamMoves": true
},
"world": {
"lightIntensity": 0.6,
"skyLightIntensity": 0.3,
"lightPosition": {
"x": 0,
"y": 18,
"z": 0
},
"color": 0,
"fog": false
},
"preload": [
"image|/res/xd-view/meshes/woodcell1x512.jpg",
"image|/res/xd-view/meshes/piecetop-bump.jpg",
"image|/res/xd-view/meshes/piecediff.jpg",
"smoothedfilegeo|0|/res/xd-view/meshes/piece-v2.js",
"smoothedfilegeo|0|/res/xd-view/meshes/boardoriented.js",
"smoothedfilegeo|0|/res/xd-view/meshes/ring-target.js"
]
},
{
"name": "stone",
"title": "Stone"
},
{
"name": "suede",
"title": "Suede"
},
{
"name": "wood",
"title": "Wood"
}
]
}
}
};
var games = {};
for(var name in mvs.models) {
games[name] = {
name: name,
modelScripts: mvs.models[name].js,
config: {
status: true,
model: mvs.models[name]
}
}
}
for(var name in mvs.views) {
if(games[name]) {
games[name].viewScripts = mvs.views[name].js;
games[name].config.view = mvs.views[name];
}
}
exports.games = Object.keys(games).map((name)=>{
return games[name];
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,418 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
Model.Game.InitGameInfo = function() {
// overload to set game feature options
}
Model.Game.BuildGraphCoord = function() {
var g=[];
var coord=[];
this.g.Graph=g;
this.g.Coord=coord;
}
/* Optional method.
* Called when the game is created.
*/
Model.Game.InitGame = function() {
this.BuildGraphCoord();
/*
* Access possible triplets from each position
*/
this.g.TripletsByPos=[];
for(var i=0;i<this.g.Coord.length;i++)
this.g.TripletsByPos[i]=[];
for(var i in this.g.Triplets) {
var triplet=this.g.Triplets[i];
for(var j in triplet) {
var pos1=triplet[j];
this.g.TripletsByPos[pos1].push(triplet);
}
}
this.InitGameExtra();
}
/* Optional method.
* Called when the game is over.
*/
Model.Game.DestroyGame = function() {
}
Model.Game.MillsDirections = 4;
// walk through neighbor positions
Model.Game.MillsEachDirection = function(pos,fnt) {
for(var i=0;i<this.MillsDirections;i++) {
var npos=this.g.Graph[pos][i];
if(npos!=null)
fnt(npos);
}
}
/* Constructs an instance of the Move object for the game.
* args is either an empty object ({}), or contains the data passed to the InitUI parameter.
*/
Model.Move.Init = function(args) {
this.f=args.f; // from position, -1 if placing
this.t=args.t; // to position
this.c=args.c; // opponent catch position, -1 if none, -2 any capture => end of game
}
/* Optional method.
* Copy the given board data to self.
* Even if optional, it is better to implement the method for performance reasons.
*/
Model.Move.CopyFrom = function(aMove) {
this.f=aMove.f;
this.t=aMove.t;
this.c=aMove.c;
}
/* Optional method.
* Verify move equality. If not defined, comparison is performed from JSON stringification of move objects.
*/
Model.Move.Equals = function(move) {
return this.t==move.t && this.c==move.c && this.f==move.f;
}
/* Optional method.
* Returns a string to represent the move for display to human. If not defined JSON is used.
*/
Model.Move.ToString = function() {
var str="";
if(this.f>-1)
str+=this.f+">";
str+=this.t;
if(this.c>-1)
str+="x"+this.c;
return str;
}
/* Board object constructor.
*/
Model.Board.Init = function(aGame) {
}
Model.Board.InitialPosition = function(aGame) {
var posCount=aGame.g.Coord.length; // how many board positions
var menCount=aGame.mOptions.mencount; // how many men per side
this.board=[]; // access pieces by position
for(var p=0;p<posCount;p++) {
this.board[p]=-1; // index in this.pieces. -1 => no piece at this position
}
this.pieces=[];
this.dock={
"1": [],
"-1": [],
}
this.menCount={
"1": 0,
"-1": 0,
}
var index=0;
for(var i=0;i<2;i++) {
var side=(i==0)?1:-1;
for(var m=0;m<menCount;m++) {
this.dock[side].unshift(index);
this.pieces.push({
s: side, // which side is that piece: 1=A, -1=B
a: true, // piece is active (not yet placed or on the board)
d: m, // dock rank, -1 => piece on the board
p: -1, // position on the piece on the board, -1=piece has not yet been placed
i: index++, // piece index in Board.pieces
});
}
}
this.placing=true; // placing stage
}
Model.Board.StaticGenerateMoves = function(aGame) {
//JocLog("StaticGenerateMoves",aGame);
if(aGame.mFullPlayedMoves.length==0) { // very first move: pick randomly
var moves=[];
for(var i=0;i<aGame.g.Coord.length;i++) {
moves.push({f:-1,t:i,c:-1});
}
return moves;
}
return null;
}
/* Push into the mMoves array, every possible move
*/
Model.Board.GenerateMoves = function(aGame) {
/*
JocLog("Level",aGame.mCurrentLevel,aGame.mLevelInfo);
if(aGame.mCurrentLevel>=0) { // computing generation
if(aGame.mLevelInfo.maxDepth-aGame.mCurrentLevel>=2)
// only "meaningful" moves
}
*/
if(this.placing)
this.GeneratePlacingMoves(aGame);
else if(aGame.mOptions.canFly)
this.GenerateFlyingMoves(aGame);
else
this.GenerateMovingMoves(aGame);
if(this.mMoves.length==0) {
this.mFinished=true;
if(this.menCount[JocGame.PLAYER_A]+this.menCount[JocGame.PLAYER_B]==aGame.g.Coord.length)
this.mWinner=JocGame.DRAW;
else
this.mWinner=-this.mWho;
}
}
Model.Board.GeneratePlacingMoves = function(aGame) {
for(var p=0;p<aGame.g.Coord.length;p++)
if(this.board[p]==-1) {
var considerPos=true;
if(typeof aGame.mLevelInfo != "undefined" && aGame.mCurrentLevel>=0) { // computing generation
var vDepth=aGame.mLevelInfo.maxDepth-aGame.mCurrentLevel;
if(vDepth>=aGame.mLevelInfo.placingRace) { // if deep in calculation, only consider meaningful moves
considerPos=false;
for(var i in aGame.g.TripletsByPos[p]) { // for each triplet the position belongs to
var triplet=aGame.g.TripletsByPos[p][i];
var self=0, other=0, empty=0;
for(var j=0;j<3;j++) {
if(this.board[triplet[j]]==-1)
empty++;
else {
if(this.pieces[this.board[triplet[j]]].s==this.mWho)
self++;
else
other++;
}
}
if(self==2 || (self==1 && other==0) || other==2) {
considerPos=true;
break;
}
}
}
}
if(considerPos)
this.GenerateCapturingMoves(aGame,{
f: -1,
t: p,
c: -1,
});
}
}
Model.Board.GenerateMovingMoves = function(aGame) {
$this=this;
for(var i in this.pieces) {
var piece=this.pieces[i];
if(piece.a && piece.s==this.mWho) {
aGame.MillsEachDirection(piece.p,function(pos) {
if($this.board[pos]==-1) {
$this.GenerateCapturingMoves(aGame,{
f: piece.p,
t: pos,
c: -1,
});
}
});
}
}
}
Model.Board.GenerateFlyingMoves = function(aGame) {
if(this.menCount[this.mWho]!=3)
this.GenerateMovingMoves(aGame);
else {
for(var i in this.pieces) {
var piece=this.pieces[i];
if(piece.a && piece.s==this.mWho) {
for(var pos in this.board) {
if(this.board[pos]==-1) {
this.GenerateCapturingMoves(aGame,{
f: piece.p,
t: pos,
c: -1,
});
}
}
}
}
}
}
Model.Board.GenerateCapturingMoves = function(aGame,move) {
for(var i in aGame.g.TripletsByPos[move.t]) {
var triplet=aGame.g.TripletsByPos[move.t][i];
var capture=true;
for(var j=0;j<3;j++) {
var pos=triplet[j];
if(pos!=move.t) {
if(this.board[pos]==-1 || move.f==pos) {
capture=false;
break;
}
var piece=this.pieces[this.board[pos]];
if(piece.a==false || piece.d>-1 || piece.s!=this.mWho) {
capture=false;
break;
}
}
}
if(capture) {
if(this.menCount[-this.mWho]==3 && this.placing==false) {
this.mMoves.push({
f: move.f,
t: move.t,
c: -2,
});
return;
}
var moves=[]
for(var j in this.pieces) {
var piece=this.pieces[j];
if(piece.a==true && piece.d==-1 && piece.s==-this.mWho) {
var cMove={
f: move.f,
t: move.t,
c: piece.p,
}
moves.push(cMove);
}
}
if(aGame.mOptions.poundInMill==false) {
var inMill={};
for(var k in aGame.g.Triplets) {
var t=aGame.g.Triplets[k];
if((this.board[t[0]]!=-1 && this.pieces[this.board[t[0]]].s==-this.mWho) &&
(this.board[t[1]]!=-1 && this.pieces[this.board[t[1]]].s==-this.mWho) &&
(this.board[t[2]]!=-1 && this.pieces[this.board[t[2]]].s==-this.mWho)) {
inMill[t[0]]=true;
inMill[t[1]]=true;
inMill[t[2]]=true;
}
}
var moves0=[];
for(var k in moves) {
if(!inMill[moves[k].c])
moves0.push(moves[k]);
}
if(moves0.length>0)
moves=moves0;
}
this.mMoves=this.mMoves.concat(moves);
return;
}
}
// no capture
this.mMoves.push({
f: move.f,
t: move.t,
c: -1,
});
}
/* The Evaluate method must:
* - detects whether the game is finished by setting mFinished to true, and determine the winner by assigning
* mWinner (to JocGame.PLAYER_A, JocGame.PLAYER_B, JocGame.DRAW).
* - calculate mEvaluation to indicate apparent advantage to PLAYER_A (higher positive evaluation) or to
* PLAYER_B (lower negative evaluation)
* Parameters:
* - aFinishOnly: it is safe to ignore this parameter value, but for better performance, the mEvaluation setting
* can be skipped if aFinishOnly is true (function caller is only interested if the game is finished).
* - aTopLevel: it is safe to ignore this parameter value. For convenience, if true, there is no performance involved
* so it is safe to make additional calculation and storing data, for instance to simplify the display of the last move.
*/
Model.Board.Evaluate = function(aGame,aFinishOnly,aTopLevel) {
if(aGame.GetRepeatOccurence(this)>2) {
this.mFinished=true;
this.mWinner=JocGame.DRAW;
return;
}
if(this.placing==false) {
if(this.menCount[JocGame.PLAYER_A]<3) {
this.mFinished=true;
this.mWinner=JocGame.PLAYER_B;
return;
}
if(this.menCount[JocGame.PLAYER_B]<3) {
this.mFinished=true;
this.mWinner=JocGame.PLAYER_A;
return;
}
}
var menCountDiff=this.menCount[JocGame.PLAYER_A]-this.menCount[JocGame.PLAYER_B];
var linesDiff1=0;
var linesDiff2=0;
for(var i in aGame.g.Triplets) {
var count={
"-1": 0,
"0": 0,
"1": 0,
}
var triplet=aGame.g.Triplets[i];
for(var j=0;j<3;j++) {
var pos=triplet[j];
var index=this.board[pos];
if(index>-1) {
var piece=this.pieces[index];
count[piece.s]++;
}
}
if(count[1]==1 && count[-1]==0)
linesDiff1++;
else if(count[1]==2 && count[-1]==0)
linesDiff2++;
if(count[-1]==1 && count[1]==0)
linesDiff1--;
else if(count[-1]==2 && count[1]==0)
linesDiff2--;
}
this.mEvaluation=menCountDiff*10;
this.mEvaluation+=linesDiff1*1;
this.mEvaluation+=linesDiff2*3;
}
/* Modify the current board instance to apply the move.
*/
Model.Board.ApplyMove = function(aGame,move) {
if(this.placing) {
var index=this.dock[this.mWho].shift();
var piece=this.pieces[index];
piece.d=-1;
piece.p=move.t;
this.board[move.t]=index;
this.lastMoveIndex=index;
this.menCount[this.mWho]++;
if(this.dock[JocGame.PLAYER_B].length==0)
this.placing=false;
} else {
var piece=this.pieces[this.board[move.f]];
this.board[piece.p]=-1;
this.board[move.t]=piece.i;
piece.p=move.t;
this.lastMoveIndex=piece.i;
}
if(move.c>-1) {
var index=this.board[move.c];
this.board[move.c]=-1;
var piece=this.pieces[index];
piece.a=false;
this.menCount[-this.mWho]--;
} else if(move.c==-2)
this.menCount[-this.mWho]--;
}
Model.Board.IsValidMove = function(aGame,move) {
return true;
}

View file

@ -0,0 +1,502 @@
/*
*
* Copyright (c) 2012 - Jocly - www.jocly.com
*
* This file is part of the Jocly game platform and cannot be used outside of this context without the written permission of Jocly.
*
*/
View.Game.MillsDrawPiece=function(canvas,color) {
var ctx=canvas[0].getContext("2d");
var l=ctx.canvas.width;
var m=l/5;
ctx.clearRect(0,0,l,l);
var path="";
// token
switch(this.mSkin){
default:
break;
case 'wood':
path=this.mViewOptions.fullPath+"/res/images/";
switch(color){
default:
path=path+"ballblack2.png";
break;
case "white":
path=path+"ballshinywood.png";
break;
}
break;
case 'suede':
path=this.mViewOptions.fullPath+"/res/images/";
switch(color){
default:
path=path+"oursin.png";
break;
case "white":
path=path+"coq2.png";
break;
}
break;
case 'stone':
path=this.mViewOptions.fullPath+"/res/images/";
switch(color){
default:
path=path+"ballblack.png";
break;
case "white":
path=path+"ballwhitestone.png";
break;
}
break;
}
if(path.length>0){
var imageObj = new Image();
imageObj.onload = function(){
ctx.drawImage(imageObj, m/2, m/2, l-m, l-m);
}
imageObj.src = path;
}else{
// shadow
ctx.save();
ctx.beginPath();
ctx.fillStyle="rgba(0,0,0,0.5)";
ctx.arc(l/2,l/2+m/2,(l-m)/2,0,Math.PI*2,true);
ctx.fill();
ctx.restore();
// token
var grad=ctx.createLinearGradient(0,0,0,l);
if (color=="white"){
grad.addColorStop(1, 'rgb(204,204,204)');
grad.addColorStop(0, 'rgb(255,255,255)');
}else{
grad.addColorStop(0, 'rgb(102,102,102)');
grad.addColorStop(1, 'rgb(0,0,0)');
}
ctx.fillStyle=grad;
ctx.beginPath();
ctx.strokeStyle="rgba(128,128,128,0.8)";
ctx.arc(l/2,l/2,(l-m)/2,0,Math.PI*2,true);
ctx.fill();
ctx.stroke();
ctx.closePath();
ctx.beginPath();
ctx.strokeStyle="rgba(128,128,128,0.3)";
ctx.arc(l/2,l/2,(l-m)/2.5,0,Math.PI*2,true);
ctx.stroke();
ctx.closePath();
ctx.beginPath();
ctx.arc(l/2,l/2,(l-m)/8,0,Math.PI*2,true);
ctx.stroke();
ctx.closePath();
}
}
View.Game.MillsDrawBoard=function() {
var path="";
// token
switch(this.mSkin){
default:
path=this.mViewOptions.fullPath+"/res/images/"+this.mOptions.mencount+"mensboard-"+this.mSkin+".jpg";
break;
case 'basic':
break;
}
if (path.length>0){
var ctx=this.g.ctxField;
ctx.save();
ctx.clearRect(0,0,this.g.boardW,this.g.boardH);
var GAME=this;
var imageObj = new Image();
imageObj.onload = function(){
if(GAME.g.boardW>0 && GAME.g.boardH>0)
ctx.drawImage(imageObj, 0, 0, GAME.g.boardW, GAME.g.boardH);
};
imageObj.src = path;
ctx.restore();
}else{
var aGame=this;
var ctx=this.g.ctxField;
ctx.save();
/*
var boardGradient = ctx.createRadialGradient(
-this.g.boardW/2,-this.g.boardW/2,0,
this.g.boardW/6*4,this.g.boardW/6*4,this.g.boardW*2);
boardGradient.addColorStop(0,"#BAF445");
boardGradient.addColorStop(1,"#008000");
*/
var boardGradient = ctx.createRadialGradient(
this.g.boardW/2,-this.g.boardH/2,0,
this.g.boardW/2,-this.g.boardW/2,2*this.g.boardH);
boardGradient.addColorStop(0,"#BAF445");
boardGradient.addColorStop(1,"#008000");
ctx.fillStyle = boardGradient ;
ctx.beginPath();
ctx.rect(0,0,this.g.boardW,this.g.boardH);
ctx.closePath();
ctx.fill();
function DrawLine(fr,fc,tr,tc) {
aGame.g.ctxField.beginPath();
aGame.g.ctxField.moveTo(aGame.g.cellSide/2+(fc+1)*aGame.g.cellSide,aGame.g.cellSide/2+fr*aGame.g.cellSide);
aGame.g.ctxField.lineTo(aGame.g.cellSide/2+(tc+1)*aGame.g.cellSide,aGame.g.cellSide/2+tr*aGame.g.cellSide);
aGame.g.ctxField.closePath();
aGame.g.ctxField.strokeStyle="rgb(50,50,50)";
aGame.g.ctxField.lineWidth=aGame.g.cellSide/10;
aGame.g.ctxField.stroke();
}
var lines=this.MillsGetLines();
for(var i in lines) {
var segment=lines[i];
DrawLine(segment[0],segment[1],segment[2],segment[3]);
}
function DrawDisk(r,c) {
aGame.g.ctxField.beginPath();
aGame.g.ctxField.fillStyle="rgb(50,50,50)";
aGame.g.ctxField.arc(aGame.g.cellSide/2+(c+1)*aGame.g.cellSide,aGame.g.cellSide/2+r*aGame.g.cellSide,aGame.g.cellSide/5,0,Math.PI*2,true);
aGame.g.ctxField.closePath();
aGame.g.ctxField.fill();
aGame.g.ctxField.beginPath();
aGame.g.ctxField.fillStyle="rgb(255,255,255)";
aGame.g.ctxField.arc(aGame.g.cellSide/2+(c+1)*aGame.g.cellSide,aGame.g.cellSide/2+r*aGame.g.cellSide,aGame.g.cellSide/10,0,Math.PI*2,true);
aGame.g.ctxField.closePath();
aGame.g.ctxField.fill();
}
for(var i in this.g.Coord) {
var coord=this.g.Coord[i];
DrawDisk(coord[0],coord[1]);
}
}
}
View.Game.MillsDrawCell=function(row,col,top,left,width,height) {
}
View.Game.MillsSetCellSide=function() {
var WIDTH=this.mOptions.width;
var HEIGHT=this.mOptions.height;
var smallDimension=Math.min(this.mGeometry.width/(WIDTH+2), this.mGeometry.height/(HEIGHT))-1;
this.g.cellSide = smallDimension;
}
View.Game.MillsSetBoardSize=function() {
var WIDTH=this.mOptions.width;
var HEIGHT=this.mOptions.height;
this.g.boardW=this.g.cellSide*(WIDTH+2);
this.g.boardH=this.g.cellSide*HEIGHT;
}
View.Game.MillsGetCellPosition=function(row,col) {
var col0=col;
var row0=row;
if(this.mViewAs==JocGame.PLAYER_B)
col0=this.mOptions.width-1-col;
if(this.mViewAs==JocGame.PLAYER_A)
row0=this.mOptions.height-1-row;
return {
"top": this.g.top+row0*this.g.cellSide,
"left": this.g.left+(col0+1)*this.g.cellSide,
}
}
View.Game.MillsMarginFactor = 16;
View.Game.MillsPossibleMarginFactor = 0;
View.Game.InitView=function() {
var $this=this;
var WIDTH=this.mOptions.width;
var HEIGHT=this.mOptions.height;
this.MillsSetCellSide();
this.g.cellMargin=Math.floor(this.g.cellSide/this.MillsMarginFactor);
this.g.tokenSide=this.g.cellSide-2*this.g.cellMargin;
this.MillsSetBoardSize();
this.g.top=Math.floor((this.mGeometry.height-this.g.boardH)/2);
this.g.left=Math.floor((this.mGeometry.width-this.g.boardW)/2);
var board=$("<div/>").addClass("mills-board").css({
top: this.g.top,
left: this.g.left,
width: this.g.boardW,
height: this.g.boardH,
}).appendTo(this.mWidget);
var canvas=$("<canvas/>").attr("width",this.g.boardW).attr("height",this.g.boardH).appendTo(board);
this.g.ctxField = canvas[0].getContext("2d");
this.g.ctxField.clearRect(0,0,this.g.boardW,this.g.boardH);
this.g.ctxField.save();
this.MillsDrawBoard();
this.g.ctxField.restore();
var aGame=this;
function CreatePiece(side,index,sideIndex) {
var pieceClass;
switch(side) {
case JocGame.PLAYER_A: pieceClass="piece-white"; break;
case JocGame.PLAYER_B: pieceClass="piece-black"; break;
}
var piece = $("<div/>").addClass("piece").addClass(pieceClass)
.css({
"width": aGame.g.cellSide-2*aGame.g.cellMargin,
"height": aGame.g.cellSide-2*aGame.g.cellMargin,
"border-radius": Math.floor((aGame.g.cellSide-2*aGame.g.cellMargin)/2),
}).hide();
var color=side==JocGame.PLAYER_A?"white":"black";
piece.attr("jocindex",index);
piece.appendTo(aGame.mWidget);
var canvas=$("<canvas/>").addClass("piece-canvas").attr("width",aGame.g.cellSide-2*aGame.g.cellMargin).attr("height",aGame.g.cellSide-2*aGame.g.cellMargin);
canvas.appendTo(piece);
$this.MillsDrawPiece(canvas,color);
}
var index=0;
for(var i=0;i<this.mOptions.mencount;i++)
CreatePiece(JocGame.PLAYER_A,index++,i);
for(var i=0;i<this.mOptions.mencount;i++)
CreatePiece(JocGame.PLAYER_B,index++,i);
for(var i in this.g.Coord) {
var cCoord=this.g.Coord[i];
var r=cCoord[0];
var c=cCoord[1];
/*
if(aGame.mViewAs==JocGame.PLAYER_A)
r=HEIGHT-r-1;
else
c=WIDTH-c-1;
*/
var position=this.MillsGetCellPosition(r,c);
if(this.mShowMoves) {
var highlight = $("<div/>").addClass("possible")
.css({
"width": this.g.cellSide-this.MillsPossibleMarginFactor*aGame.g.cellMargin,
"height": this.g.cellSide-this.MillsPossibleMarginFactor*aGame.g.cellMargin,
"border-radius": Math.floor((aGame.g.cellSide-this.MillsPossibleMarginFactor*aGame.g.cellMargin)/2),
"top": position.top+(this.MillsPossibleMarginFactor*this.g.cellMargin)/2,
"left": position.left+(this.MillsPossibleMarginFactor*this.g.cellMargin)/2,
}).hide();
highlight.attr("jocpos",i);
highlight.appendTo(aGame.mWidget);
}
var front = $("<div/>").addClass("front")
.css({
"width": this.g.cellSide,
"height": this.g.cellSide,
"top": position.top,
"left": position.left,
});
front.attr("jocpos",i);
front.appendTo(aGame.mWidget);
this.MillsDrawCell(r,c,position.top,position.left,this.g.cellSide,this.g.cellSide);
if(this.mNotation) {
$("<div/>").text(parseInt(i)).addClass("notation").css({
"line-height": this.g.cellSide/6+"px",
"font-size": this.g.cellSide/8+"pt",
"top": position.top+3*this.g.cellSide/8,
"left": position.left+3*this.g.cellSide/8,
"width": this.g.cellSide/5+"px",
}).appendTo(this.mWidget);
}
}
}
View.Board.MillsDisplayPiece=function(aGame,piece) {
var pWidget=aGame.mWidget.find(".piece[jocindex="+piece.i+"]");
if(piece.a) {
var top, left;
if(piece.d>-1) {
var h=aGame.g.boardH/aGame.mOptions.mencount;
if(piece.s==aGame.mViewAs) {
top=aGame.g.top+h*(piece.d+0.5)-aGame.g.cellSide/2;
left=aGame.g.left;
} else {
top=aGame.g.top+aGame.g.boardH-h*piece.d-h/2-aGame.g.cellSide/2;
left=aGame.g.left+(aGame.mOptions.width+1)*aGame.g.cellSide;
}
} else {
var coord=aGame.g.Coord[piece.p];
var position=aGame.MillsGetCellPosition(coord[0],coord[1]);
top=position.top;
left=position.left;
}
pWidget.css({
top: top+aGame.g.cellMargin,
left: left+aGame.g.cellMargin,
opacity: 1,
}).show();
} else
pWidget.hide();
}
View.Board.UpdateZIndex=function(aGame){
$(".piece-white").css("z-index",this.mWho==JocGame.PLAYER_A?101:100);
$(".piece-black").css("z-index",this.mWho==JocGame.PLAYER_A?100:101);
}
View.Board.Display=function(aGame) {
for(var i=0;i<this.pieces.length;i++) {
var piece=this.pieces[i];
this.MillsDisplayPiece(aGame,piece);
}
}
View.Board.MillsMovePiece=function(aGame,index,pos,fnt) {
var coord=aGame.g.Coord[pos];
var position=aGame.MillsGetCellPosition(coord[0],coord[1]);
var pWidget=aGame.mWidget.find(".piece[jocindex="+index+"]");
pWidget.animate({
"top": position.top+aGame.g.cellMargin,
"left": position.left+aGame.g.cellMargin,
},700,function() {
if(fnt)
fnt();
else
aGame.MoveShown();
});
}
View.Board.PlayedMove=function(aGame,aMove) {
this.UpdateZIndex(aGame);
var fromIndex=aMove.f==-1?this.lastMoveIndex:aGame.mOldBoard.board[aMove.f];
this.MillsMovePiece(aGame,fromIndex,aMove.t,function() {
if(aMove.c>-1) {
var catchIndex=aGame.mOldBoard.board[aMove.c];
var pWidget=aGame.mWidget.find(".piece[jocindex="+catchIndex+"]");
pWidget.animate({
"opacity": 0,
},500,function() {
aGame.MoveShown();
});
} else
aGame.MoveShown();
});
return false;
}
View.Board.HumanTurn=function(aGame) {
this.UpdateZIndex(aGame);
var $this=this;
var moves=this.mMoves;
var backMoves=[];
var move={
f: -1,
t: -1,
c: -1,
}
function CheckMove() {
for(var i in $this.mMoves) {
var m=$this.mMoves[i];
if(m.f==move.f && m.t==move.t && (m.c==move.c || (m.c==-2 && move.c==-1))) {
aGame.MakeMove(m);
return;
}
}
UpdateChoice();
}
function MakeBack() {
aGame.mWidget.find(".possible").hide().removeClass("possible-back");
aGame.mWidget.find(".front").removeClass("choice back").unbind(JocGame.CLICK);
if(backMoves.length>0) {
var back=backMoves[backMoves.length-1];
aGame.mWidget.find(".possible[jocpos="+back.pos+"]").show().addClass("possible-back");
aGame.mWidget.find(".front[jocpos="+back.pos+"]").removeClass("choice").addClass("back").bind(JocGame.CLICK,function() {
backMoves.pop();
move=back.move;
$(this).removeClass("back").unbind(JocGame.CLICK);
MakeBack();
UpdateChoice();
});
}
}
function UpdateChoice() {
aGame.mWidget.find(".front.choice").unbind(JocGame.CLICK).removeClass("choice");
for(var p=0;p<aGame.g.Coord.length;p++) {
var index=$this.board[p];
var field=null;
if($this.placing) {
if(move.t==-1)
field="t";
else
field="c";
} else {
if(move.f==-1)
field="f";
else if(move.t==-1)
field="t";
else
field="c";
}
var valid=false;
for(var i=0;i<$this.mMoves.length;i++) {
var m=$this.mMoves[i];
if((field=="f" && m.f==p) ||
(field=="t" && m.t==p && m.f==move.f) ||
(field=="c" && m.c==p && m.f==move.f && m.t==move.t)
) {
valid=true;
break;
}
}
if(valid) {
aGame.mWidget.find(".possible[jocpos="+p+"]").show();
if(field=='f' || field=='c')
aGame.mWidget.find(".possible[jocpos="+p+"]").addClass("possible-piece");
else
aGame.mWidget.find(".possible[jocpos="+p+"]").removeClass("possible-piece");
aGame.mWidget.find(".front[jocpos="+p+"]").addClass("choice")
.bind(JocGame.CLICK,function() {
var pos=parseInt($(this).attr("jocpos"));
backMoves.push({
pos: pos,
move: JSON.parse(JSON.stringify(move)),
});
MakeBack();
move[field]=pos;
CheckMove();
});
}
}
}
UpdateChoice();
}
/* Optional method.
* Board based member: 'this' is a board instance.
* If implemented, it is called after a human player made the move.
*/
View.Board.HumanTurnEnd=function(aGame) {
aGame.mWidget.find(".possible").hide().removeClass("possible-back");
aGame.mWidget.find(".front").unbind(JocGame.CLICK).removeClass("choice back");
}

File diff suppressed because it is too large Load diff

78
src/games/mills/mills.css Normal file
View file

@ -0,0 +1,78 @@
#jocly-board {
}
.mills-board {
position: absolute;
}
.piece {
position: absolute;
z-index: 100;
font-size: 0;
}
.piece-white {
Xbackground-color: White;
}
.piece-black {
Xbackground-color: Black;
}
.possible {
position: absolute;
z-index: 50;
/*background-color: rgba(244,238,61,0.4);*/
background-image: url(res/images/dot.png);
background-size: contain;
background-position: center;
background-repeat: no-repeat;
/* opacity: 0.5; */
}
.possible-piece {
background-image: url(res/images/circle.png);
}
.possible-back {
background-color: rgba(244,188,61,0.4);
}
.front {
position: absolute;
z-index: 200;
background-color: rgba(255,255,255,0.0);
}
.choice {
cursor: pointer;
}
.back {
background-image: url(res/images/backarrow2.png);
background-repeat: no-repeat;
background-size: 70% 70%;
background-position: center center;
}
.notation {
position: absolute;
z-index: 150;
color: Black;
padding: 2px 0px 0px 2px;
font-weight: bold;
font-family: Arial, sans-serif;
text-align: center;
text-shadow: 2px 2px #ffffff;
}
.xd-choice-view {
background-color: Lime;
border-radius: 50%;
}
.xd-cancel {
background-color: #ffcc00;
border-radius: 50%;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,91 @@
{
"metadata" :
{
"formatVersion" : 3.1,
"generatedBy" : "Blender 2.63 Exporter",
"vertices" : 28,
"faces" : 22,
"normals" : 16,
"colors" : 0,
"uvs" : [8],
"materials" : 1,
"morphTargets" : 0,
"bones" : 0
},
"scale" : 1.000000,
"materials" : [ {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "playerb",
"blending" : "NormalBlending",
"colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Lambert",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
},
{
"DbgColor" : 15597568,
"DbgIndex" : 1,
"DbgName" : "playera",
"blending" : "NormalBlending",
"colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Lambert",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
},
{
"DbgColor" : 15597568,
"DbgIndex" : 1,
"DbgName" : "mainframe",
"blending" : "NormalBlending",
"colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"mapDiffuse" : "woodcell1x512.jpg",
"mapDiffuseRepeat" : [2, 2],
"mapDiffuseWrap" : ["mirror", "mirror"],
"shading" : "Phong",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
}],
"vertices" : [-0.674983,-0.0495328,-3.86132,-0.674983,-0.0495328,-3.88274,0.674983,-0.0495328,-3.88274,0.674983,-0.0495328,-3.86132,-0.674983,0.0495324,-3.86132,-0.674983,0.0495324,-3.88274,0.674983,0.0495324,-3.88274,0.674983,0.0495324,-3.86132,-0.674983,-0.0495324,3.8823,-0.674983,-0.0495324,3.86088,0.674983,-0.0495324,3.86088,0.674983,-0.0495324,3.8823,-0.674983,0.0495328,3.8823,-0.674983,0.0495328,3.86088,0.674983,0.0495328,3.86088,0.674983,0.0495328,3.8823,-3.85946,-0.151178,3.85946,-3.85946,-0.151178,-3.85946,3.85946,-0.151178,-3.85946,3.85946,-0.151178,3.85946,-3.85946,0.151179,3.85946,-3.85946,0.151179,-3.85946,3.85946,0.151179,-3.85946,3.85946,0.151179,3.85946,-3.85406,0.162348,3.85406,-3.85406,0.162348,-3.85406,3.85406,0.162348,-3.85406,3.85406,0.162348,3.85406],
"morphTargets" : [],
"normals" : [-0.577349,-0.577349,-0.577349,-0.577349,-0.577349,0.577349,-0.577349,0.577349,0.577349,-0.577349,0.577349,-0.577349,0.577349,0.577349,-0.577349,0.577349,-0.577349,-0.577349,0.577349,0.577349,0.577349,0.577349,-0.577349,0.577349,-0.682119,0.263375,0.682119,-0.682119,0.263375,-0.682119,0.682119,0.263375,-0.682119,0.682119,0.263375,0.682119,0.429823,0.794031,0.429823,-0.429823,0.794031,0.429823,0.429823,0.794031,-0.429823,-0.429823,0.794031,-0.429823],
"colors" : [],
"uvs" : [[1,0.514204,0,0.514204,0,0.485796,1,0.485796,0,0,1,0,1,1,0,1]],
"faces" : [35,1,0,4,5,0,0,1,2,3,35,5,6,2,1,0,3,4,5,0,35,6,7,3,2,0,4,6,7,5,35,0,3,7,4,0,1,7,6,2,35,0,1,2,3,0,1,0,5,7,35,7,6,5,4,0,6,4,3,2,35,9,8,12,13,1,0,1,2,3,35,13,14,10,9,1,3,4,5,0,35,14,15,11,10,1,4,6,7,5,35,8,11,15,12,1,1,7,6,2,35,8,9,10,11,1,1,0,5,7,35,15,14,13,12,1,6,4,3,2,43,17,16,20,21,2,0,1,2,3,0,1,8,9,43,21,22,18,17,2,2,3,0,1,9,10,5,0,43,22,23,19,18,2,2,3,0,1,10,11,7,5,43,16,19,23,20,2,0,1,2,3,1,7,11,8,43,16,17,18,19,2,4,5,6,7,1,0,5,7,43,20,23,27,24,2,4,5,6,7,8,11,12,13,43,27,26,25,24,2,4,5,6,7,12,14,15,13,43,23,22,26,27,2,4,5,6,7,11,10,14,12,43,21,20,24,25,2,4,5,6,7,9,8,13,15,43,22,21,25,26,2,4,5,6,7,10,9,15,14],
"bones" : [],
"skinIndices" : [],
"skinWeights" : [],
"animation" : {}
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,72 @@
{
"metadata" :
{
"formatVersion" : 3.1,
"generatedBy" : "Blender 2.63 Exporter",
"vertices" : 48,
"faces" : 50,
"normals" : 48,
"colors" : 0,
"uvs" : [],
"materials" : 1,
"morphTargets" : 0,
"bones" : 0
},
"scale" : 1.000000,
"materials" : [ {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "ring",
"blending" : "NormalBlending",
"colorDiffuse" : [0.24284644488761487, 0.38950949295624326, 0.0],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Phong",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
},
{
"DbgColor" : 15597568,
"DbgIndex" : 1,
"DbgName" : "square",
"blending" : "NormalBlending",
"colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Lambert",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
}],
"vertices" : [0,-0.0346694,-0.704704,0,0.257504,-0.704704,0.498301,-0.0346693,-0.498301,0.498301,0.257504,-0.498301,0.704704,-0.0346693,3.2319e-08,0.704704,0.257504,1.95477e-08,0.498301,-0.0346693,0.498301,0.498301,0.257504,0.498301,-6.16072e-08,-0.0346693,0.704704,-6.16072e-08,0.257504,0.704704,-0.498301,-0.0346693,0.498301,-0.498301,0.257504,0.498301,-0.704704,-0.0346693,-6.88807e-09,-0.704704,0.257504,-1.96594e-08,-0.498301,-0.0346693,-0.498301,-0.498301,0.257504,-0.498301,-1.47814e-10,0.27595,-0.684865,0.484272,0.27595,-0.484272,0.684865,0.27595,1.78742e-08,0.484272,0.27595,0.484272,-6.00206e-08,0.27595,0.684865,-0.484273,0.27595,0.484272,-0.684865,0.27595,-2.02291e-08,-0.484273,0.27595,-0.484272,2.40199e-10,-0.0621611,-0.704704,0.498301,-0.0621611,-0.498301,0.704704,-0.0621611,3.35207e-08,0.498301,-0.0621611,0.498301,-6.1367e-08,-0.062161,0.704704,-0.498301,-0.0621611,0.498301,-0.704704,-0.0621611,-5.68636e-09,-0.498301,-0.0621611,-0.498301,-1.22885e-08,0.368041,-0.366347,0.259047,0.368041,-0.259047,0.366347,0.368041,2.36783e-09,0.259047,0.368041,0.259047,-4.43156e-08,0.368041,0.366347,-0.259047,0.368041,0.259047,-0.366347,0.368041,-1.80144e-08,-0.259047,0.368041,-0.259047,-0.850384,-0.101447,0.850384,-0.850384,-0.101447,-0.850384,0.850384,-0.101447,-0.850384,0.850384,-0.101447,0.850384,-0.850384,-0.0489159,0.850384,-0.850384,-0.048916,-0.850384,0.850384,-0.048916,-0.850384,0.850384,-0.0489159,0.850384],
"morphTargets" : [],
"normals" : [0,0,-1,0,0.367595,-0.92996,0.657582,0.367595,-0.657582,0.707083,0,-0.707083,0.92996,0.367595,0,1,0,0,0.657582,0.367595,0.657582,0.707083,0,0.707083,0,0.367595,0.92996,0,0,1,-0.657582,0.367595,0.657582,-0.707083,0,0.707083,-0.92996,0.367595,0,-1,0,0,0.377483,0.845546,-0.377483,0.53386,0.845546,0,-0.707083,0,-0.707083,-0.657582,0.367595,-0.657582,-0.77636,-0.630238,0,-0.548967,-0.630238,0.548967,0.377483,0.845546,0.377483,0.17423,0.98468,0,0.123203,0.98468,0.123203,0,0.845546,-0.53386,0,0.845546,0.53386,-0.377483,0.845546,0.377483,-0.53386,0.845546,0,-0.377483,0.845546,-0.377483,0.548967,-0.630238,0.548967,0,-0.630238,0.77636,0.77636,-0.630238,0,0.548967,-0.630238,-0.548967,-0.548967,-0.630238,-0.548967,0,-0.630238,-0.77636,-0.123203,0.98468,0.123203,0,0.98468,0.17423,-0.17423,0.98468,0,0.123203,0.98468,-0.123203,-0.123203,0.98468,-0.123203,0,0.98468,-0.17423,-0.577349,-0.577349,-0.577349,-0.577349,-0.577349,0.577349,-0.577349,0.577349,0.577349,-0.577349,0.577349,-0.577349,0.577349,0.577349,-0.577349,0.577349,-0.577349,-0.577349,0.577349,0.577349,0.577349,0.577349,-0.577349,0.577349],
"colors" : [],
"uvs" : [],
"faces" : [35,0,1,3,2,0,0,1,2,3,35,2,3,5,4,0,3,2,4,5,35,4,5,7,6,0,5,4,6,7,35,6,7,9,8,0,7,6,8,9,35,8,9,11,10,0,9,8,10,11,35,10,11,13,12,0,11,10,12,13,35,5,3,17,18,0,4,2,14,15,35,1,0,14,15,0,1,0,16,17,35,12,13,15,14,0,13,12,17,16,35,10,12,30,29,0,11,13,18,19,35,19,18,34,35,0,20,15,21,22,35,7,5,18,19,0,6,4,15,20,35,3,1,16,17,0,2,1,23,14,35,9,7,19,20,0,8,6,20,24,35,11,9,20,21,0,10,8,24,25,35,13,11,21,22,0,12,10,25,26,35,15,13,22,23,0,17,12,26,27,35,1,15,23,16,0,1,17,27,23,34,27,28,29,0,28,29,19,34,26,27,29,0,30,28,19,34,26,29,30,0,30,19,18,34,25,26,30,0,31,30,18,34,25,30,31,0,31,18,32,34,24,25,31,0,33,31,32,35,12,14,31,30,0,13,16,32,18,35,14,0,24,31,0,16,0,33,32,35,2,4,26,25,0,3,5,30,31,35,4,6,27,26,0,5,7,28,30,35,0,2,25,24,0,0,3,31,33,35,6,8,28,27,0,7,9,29,28,35,8,10,29,28,0,9,11,19,29,34,37,36,35,0,34,35,22,34,37,35,34,0,34,22,21,34,38,37,34,0,36,34,21,34,33,38,34,0,37,36,21,34,33,39,38,0,37,38,36,34,33,32,39,0,37,39,38,35,22,21,37,38,0,26,25,34,36,35,18,17,33,34,0,15,14,37,21,35,21,20,36,37,0,25,24,35,34,35,16,23,39,32,0,23,27,38,39,35,17,16,32,33,0,14,23,39,37,35,20,19,35,36,0,24,20,22,35,35,23,22,38,39,0,27,26,36,38,35,41,40,44,45,1,40,41,42,43,35,45,46,42,41,1,43,44,45,40,35,46,47,43,42,1,44,46,47,45,35,40,43,47,44,1,41,47,46,42,35,40,41,42,43,1,41,40,45,47,35,47,46,45,44,1,46,44,43,42],
"bones" : [],
"skinIndices" : [],
"skinWeights" : [],
"animation" : {}
}

View file

@ -0,0 +1,56 @@
{
"metadata" :
{
"formatVersion" : 3.1,
"generatedBy" : "Blender 2.63 Exporter",
"vertices" : 88,
"faces" : 92,
"normals" : 88,
"colors" : 0,
"uvs" : [],
"materials" : 1,
"morphTargets" : 0,
"bones" : 0
},
"scale" : 1.000000,
"materials" : [ {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "base",
"blending" : "NormalBlending",
"colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Phong",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
}],
"vertices" : [0,0.0468438,-0.689164,0,0.249285,-0.689164,0.487313,0.0468438,-0.487313,0.487313,0.249285,-0.487313,0.689164,0.0468438,2.80767e-08,0.689164,0.249285,1.92277e-08,0.487313,0.0468438,0.487313,0.487313,0.249285,0.487313,-6.02486e-08,0.0468438,0.689164,-6.02486e-08,0.249285,0.689164,-0.487313,0.0468438,0.487313,-0.487313,0.249285,0.487313,-0.689164,0.0468438,-1.02658e-08,-0.689164,0.249285,-1.91148e-08,-0.487313,0.0468438,-0.487313,-0.487313,0.249285,-0.487313,6.11807e-10,0.23957,-0.664953,0.470193,0.23957,-0.470193,0.664953,0.23957,1.85941e-08,0.470193,0.23957,0.470193,-5.75202e-08,0.23957,0.664953,-0.470193,0.23957,0.470193,-0.664953,0.23957,-1.84014e-08,-0.470193,0.23957,-0.470193,-3.70073e-09,0.205027,-0.528773,0.373899,0.205027,-0.373899,0.528773,0.205027,1.41514e-08,0.373899,0.205027,0.373899,-4.99276e-08,0.205027,0.528773,-0.373899,0.205027,0.373899,-0.528773,0.205027,-1.52676e-08,-0.373899,0.205027,-0.373899,-5.14317e-09,0.253039,-0.412657,0.291793,0.253039,-0.291793,0.412657,0.253039,5.84956e-09,0.291793,0.253039,0.291793,-4.12188e-08,0.253039,0.412657,-0.291793,0.253039,0.291793,-0.412657,0.253039,-1.71091e-08,-0.291793,0.253039,-0.291793,-7.32639e-09,0.20135,-0.398779,0.28198,0.20135,-0.281979,0.398779,0.20135,7.54028e-09,0.28198,0.20135,0.281979,-4.21888e-08,0.20135,0.398779,-0.28198,0.20135,0.281979,-0.398779,0.20135,-1.46463e-08,-0.28198,0.20135,-0.281979,-1.08341e-08,0.161637,-0.298655,0.211181,0.161637,-0.211181,0.298655,0.161637,5.17322e-09,0.211181,0.161637,0.211181,-3.69434e-08,0.161637,0.298655,-0.211181,0.161637,0.211181,-0.298655,0.161637,-1.14428e-08,-0.211181,0.161637,-0.211181,0.00103128,0.24301,-0.157276,0.111889,0.24301,-0.111357,0.157808,0.24301,-0.000499792,0.111889,0.24301,0.110358,0.00103126,0.24301,0.156276,-0.109826,0.24301,0.110358,-0.155745,0.24301,-0.000499801,-0.109826,0.24301,-0.111357,5.75791e-11,0.00308216,-0.680415,0.481126,0.00308217,-0.481126,0.680415,0.00308219,2.96072e-08,0.481126,0.0030822,0.481126,-5.94262e-08,0.00308222,0.680415,-0.481126,0.0030822,0.481126,-0.680415,0.00308219,-8.24859e-09,-0.481126,0.00308217,-0.481126,0.00103128,0.208122,-0.157276,0.111889,0.208122,-0.111357,0.157808,0.208122,-0.000499791,0.111889,0.208122,0.110358,0.00103126,0.208122,0.156276,-0.109826,0.208122,0.110358,-0.155745,0.208122,-0.000499799,-0.109826,0.208122,-0.111357,0.00103128,0.287281,-0.0860443,0.0615204,0.287281,-0.0609889,0.0865758,0.287281,-0.000499797,0.0615204,0.287281,0.0599893,0.00103127,0.287281,0.0850447,-0.0594578,0.287281,0.0599893,-0.0845132,0.287281,-0.000499802,-0.0594578,0.287281,-0.0609889],
"morphTargets" : [],
"normals" : [0,-0.096225,-0.995331,0,0.740013,-0.672536,0.47557,0.740013,-0.47557,0.703818,-0.096225,-0.703818,0.672536,0.740013,0,0.995331,-0.096225,0,0.47557,0.740013,0.47557,0.703818,-0.096225,0.703818,0,0.740013,0.672536,0,-0.096225,0.995331,-0.47557,0.740013,0.47557,-0.703818,-0.096225,0.703818,-0.672536,0.740013,0,-0.995331,-0.096225,0,0,0.94583,0.324656,-0.22956,0.94583,0.22956,-0.703818,-0.096225,-0.703818,-0.47557,0.740013,-0.47557,0.503037,-0.702719,0.503037,0.711417,-0.702719,0,0.22956,0.94583,-0.22956,0,0.94583,-0.324656,0,0.999969,-0.006928,0.004913,0.999969,-0.004913,-0.22956,0.94583,-0.22956,0.324656,0.94583,0,0.22956,0.94583,0.22956,-0.324656,0.94583,0,0.006928,0.999969,0,0.189795,0.963286,-0.189795,0.26841,0.963286,0,0.004913,0.999969,0.004913,0,0.999969,0.006928,-0.004913,0.999969,0.004913,-0.004913,0.999969,-0.004913,-0.006928,0.999969,0,0.189795,0.963286,0.189795,0.788507,0.615009,0,0.557543,0.615009,0.557543,-0.189795,0.963286,0.189795,-0.26841,0.963286,0,0,0.963286,-0.26841,0,0.963286,0.26841,-0.189795,0.963286,-0.189795,0,0.615009,0.788507,0.026246,0.999298,0.026643,-0.000244,0.999329,0.036378,-0.788507,0.615009,0,-0.557543,0.615009,-0.557543,0.557543,0.615009,-0.557543,-0.557543,0.615009,0.557543,0,0.615009,-0.788507,-0.035768,0.999359,0.000122,-0.0253,0.999359,0.025178,-0.214545,0.952696,0.215186,-0.303964,0.952666,-0.00058,-0.026002,0.999329,-0.025636,-0.000244,0.999268,-0.037538,0.038148,0.999268,9.2e-05,0.026948,0.999268,-0.0271,-0.372173,0.850246,0.372173,-0.526322,0.850246,0,0.00119,0.951811,-0.306619,0.217811,0.951476,-0.2172,0.217566,0.951872,0.215735,0.001221,0.952361,0.30488,-0.21482,0.9523,-0.216651,0.307535,0.951506,-0.00058,0,-0.702719,0.711417,-0.503037,-0.702719,0.503037,-0.711417,-0.702719,0,0.503037,-0.702719,-0.503037,-0.503037,-0.702719,-0.503037,0,-0.702719,-0.711417,0,0.850246,0.526322,0,0.874844,-0.484359,0.342479,0.874844,-0.342479,0,0.850246,-0.526322,0.372173,0.850246,-0.372173,0.372173,0.850246,0.372173,-0.372173,0.850246,-0.372173,0.526322,0.850246,0,-0.342479,0.874844,0.342479,0,0.874844,0.484359,0.342479,0.874844,0.342479,0.484359,0.874844,0,-0.484359,0.874844,0,-0.342479,0.874844,-0.342479],
"colors" : [],
"uvs" : [],
"faces" : [35,0,1,3,2,0,0,1,2,3,35,2,3,5,4,0,3,2,4,5,35,4,5,7,6,0,5,4,6,7,35,6,7,9,8,0,7,6,8,9,35,8,9,11,10,0,9,8,10,11,35,10,11,13,12,0,11,10,12,13,35,3,1,16,17,0,2,1,14,15,35,1,0,14,15,0,1,0,16,17,35,12,13,15,14,0,13,12,17,16,35,4,6,67,66,0,5,7,18,19,35,21,20,28,29,0,20,21,22,23,35,9,7,19,20,0,8,6,24,21,35,11,9,20,21,0,10,8,21,20,35,13,11,21,22,0,12,10,20,25,35,15,13,22,23,0,17,12,25,26,35,1,15,23,16,0,1,17,26,14,35,5,3,17,18,0,4,2,15,27,35,7,5,18,19,0,6,4,27,24,35,30,29,37,38,0,28,23,29,30,35,16,23,31,24,0,14,26,31,32,35,17,16,24,25,0,15,14,32,33,35,20,19,27,28,0,21,24,34,22,35,23,22,30,31,0,26,25,28,31,35,19,18,26,27,0,24,27,35,34,35,22,21,29,30,0,25,20,23,28,35,18,17,25,26,0,27,15,33,35,35,39,38,46,47,0,36,30,37,38,35,26,25,33,34,0,35,33,39,40,35,29,28,36,37,0,23,22,41,29,35,24,31,39,32,0,32,31,36,42,35,25,24,32,33,0,33,32,42,39,35,28,27,35,36,0,22,34,43,41,35,31,30,38,39,0,31,28,30,36,35,27,26,34,35,0,34,35,40,43,35,40,47,55,48,0,44,38,45,46,35,35,34,42,43,0,43,40,47,48,35,38,37,45,46,0,30,29,49,37,35,34,33,41,42,0,40,39,50,47,35,37,36,44,45,0,29,41,51,49,35,32,39,47,40,0,42,36,38,44,35,33,32,40,41,0,39,42,44,50,35,36,35,43,44,0,41,43,48,51,35,50,49,57,58,0,52,53,54,55,35,41,40,48,49,0,50,44,46,53,35,44,43,51,52,0,51,48,56,57,35,47,46,54,55,0,38,37,58,45,35,43,42,50,51,0,48,47,52,56,35,46,45,53,54,0,37,49,59,58,35,42,41,49,50,0,47,50,53,52,35,45,44,52,53,0,49,51,57,59,35,58,57,73,74,0,55,54,60,61,35,53,52,60,61,0,59,57,62,63,35,48,55,63,56,0,46,45,64,65,35,49,48,56,57,0,53,46,65,54,35,52,51,59,60,0,57,56,66,62,35,55,54,62,63,0,45,58,67,64,35,51,50,58,59,0,56,52,55,66,35,54,53,61,62,0,58,59,63,67,34,67,68,69,0,18,68,69,34,66,67,69,0,19,18,69,34,66,69,70,0,19,69,70,34,65,66,70,0,71,19,70,34,65,70,71,0,71,70,72,34,64,65,71,0,73,71,72,35,0,2,65,64,0,0,3,71,73,35,6,8,68,67,0,7,9,68,18,35,8,10,69,68,0,9,11,69,68,35,10,12,70,69,0,11,13,70,69,35,12,14,71,70,0,13,16,72,70,35,14,0,64,71,0,16,0,73,72,35,2,4,66,65,0,3,5,19,71,35,73,72,80,81,0,60,74,75,76,35,61,60,76,77,0,63,62,77,78,35,56,63,79,72,0,65,64,79,74,35,57,56,72,73,0,54,65,74,60,35,60,59,75,76,0,62,66,80,77,35,63,62,78,79,0,64,67,81,79,35,59,58,74,75,0,66,55,61,80,35,62,61,77,78,0,67,63,78,81,34,85,84,83,0,82,83,84,34,85,83,82,0,82,84,85,34,86,85,82,0,86,82,85,34,81,86,82,0,76,86,85,34,81,87,86,0,76,87,86,34,81,80,87,0,76,75,87,35,76,75,83,84,0,77,80,84,83,35,79,78,86,87,0,79,81,86,87,35,75,74,82,83,0,80,61,85,84,35,78,77,85,86,0,81,78,82,86,35,74,73,81,82,0,61,60,76,85,35,77,76,84,85,0,78,77,83,82,35,72,79,87,80,0,74,79,87,75],
"bones" : [],
"skinIndices" : [],
"skinWeights" : [],
"animation" : {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View file

@ -0,0 +1,72 @@
{
"metadata" :
{
"formatVersion" : 3.1,
"generatedBy" : "Blender 2.63 Exporter",
"vertices" : 72,
"faces" : 62,
"normals" : 24,
"colors" : 0,
"uvs" : [],
"materials" : 1,
"morphTargets" : 0,
"bones" : 0
},
"scale" : 1.000000,
"materials" : [ {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "ring",
"blending" : "NormalBlending",
"colorDiffuse" : [0.24284644488761487, 0.38950949295624326, 0.0],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Phong",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
},
{
"DbgColor" : 15597568,
"DbgIndex" : 1,
"DbgName" : "square",
"blending" : "NormalBlending",
"colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Lambert",
"specularCoef" : 50,
"opacity" : 1.0,
"transparent" : false,
"vertexColors" : false
}],
"vertices" : [-0.600834,0.0792329,0.66495,-0.665212,0.0792329,0.66495,-0.665212,0.0792329,0.600834,-0.600834,0.0792329,0.600834,-0.600834,0.120851,0.66495,-0.665212,0.120851,0.66495,-0.665212,0.120851,0.600834,-0.600834,0.120851,0.600834,-0.665212,0.0792329,0.27917,-0.600834,0.0792329,0.27917,-0.665212,0.120851,0.27917,-0.600834,0.120851,0.27917,-0.27917,0.0792329,0.66495,-0.27917,0.0792329,0.600834,-0.27917,0.120851,0.66495,-0.27917,0.120851,0.600834,0.66495,0.0792328,0.600834,0.66495,0.0792328,0.665212,0.600834,0.0792328,0.665213,0.600834,0.0792328,0.600834,0.66495,0.120851,0.600834,0.66495,0.120851,0.665212,0.600834,0.120851,0.665213,0.600834,0.120851,0.600834,0.27917,0.0792328,0.665213,0.27917,0.0792328,0.600834,0.27917,0.120851,0.665213,0.27917,0.120851,0.600834,0.66495,0.0792328,0.279171,0.600834,0.0792328,0.279171,0.66495,0.120851,0.279171,0.600834,0.120851,0.279171,0.600834,0.0792328,-0.66495,0.665212,0.0792328,-0.66495,0.665212,0.0792328,-0.600834,0.600834,0.0792328,-0.600834,0.600834,0.120851,-0.66495,0.665212,0.120851,-0.66495,0.665212,0.120851,-0.600834,0.600834,0.120851,-0.600834,0.665212,0.0792328,-0.27917,0.600834,0.0792328,-0.27917,0.665212,0.120851,-0.27917,0.600834,0.120851,-0.27917,0.27917,0.0792328,-0.66495,0.27917,0.0792328,-0.600834,0.27917,0.120851,-0.66495,0.27917,0.120851,-0.600834,-0.66495,0.0792328,-0.600834,-0.66495,0.0792328,-0.665212,-0.600834,0.0792328,-0.665212,-0.600834,0.0792328,-0.600834,-0.66495,0.120851,-0.600834,-0.66495,0.120851,-0.665212,-0.600834,0.120851,-0.665212,-0.600834,0.120851,-0.600834,-0.27917,0.0792328,-0.665212,-0.27917,0.0792328,-0.600834,-0.27917,0.120851,-0.665212,-0.27917,0.120851,-0.600834,-0.66495,0.0792328,-0.27917,-0.600834,0.0792328,-0.27917,-0.66495,0.120851,-0.27917,-0.600834,0.120851,-0.27917,-0.850384,-0.101447,0.850384,-0.850384,-0.101447,-0.850384,0.850384,-0.101447,-0.850384,0.850384,-0.101447,0.850384,-0.850384,-0.0489159,0.850384,-0.850384,-0.048916,-0.850384,0.850384,-0.048916,-0.850384,0.850384,-0.0489159,0.850384],
"morphTargets" : [],
"normals" : [-0.577349,-0.577349,0.577349,0,-0.707083,0.707083,0,0.707083,0.707083,-0.577349,0.577349,0.577349,-0.707083,0.707083,0,-0.707083,-0.707083,0,0.301492,0.904508,-0.301492,0.301492,-0.904508,-0.301492,0.577349,-0.577349,-0.577349,0.577349,0.577349,-0.577349,-0.577349,0.577349,-0.577349,-0.577349,-0.577349,-0.577349,0.577349,0.577349,0.577349,0.577349,-0.577349,0.577349,0.707083,0.707083,0,0.707083,-0.707083,0,-0.301492,0.904508,-0.301492,-0.301492,-0.904508,-0.301492,0,0.707083,-0.707083,0,-0.707083,-0.707083,-0.301492,0.904508,0.301492,-0.301492,-0.904508,0.301492,0.301492,0.904508,0.301492,0.301492,-0.904508,0.301492],
"colors" : [],
"uvs" : [],
"faces" : [35,1,0,4,5,0,0,1,2,3,35,5,6,2,1,0,3,4,5,0,35,7,3,9,11,0,6,7,8,9,35,3,7,15,13,0,7,6,9,8,35,0,1,2,3,0,1,0,5,7,35,7,6,5,4,0,6,4,3,2,35,10,11,9,8,0,10,9,8,11,35,2,6,10,8,0,5,4,10,11,35,3,2,8,9,0,7,5,11,8,35,6,7,11,10,0,4,6,9,10,35,15,14,12,13,0,9,12,13,8,35,7,4,14,15,0,6,2,12,9,35,4,0,12,14,0,2,1,13,12,35,0,3,13,12,0,1,7,8,13,35,20,21,17,16,0,14,12,13,15,35,21,22,18,17,0,12,2,1,13,35,23,19,25,27,0,16,17,11,10,35,19,23,31,29,0,17,16,10,11,35,16,17,18,19,0,15,13,1,17,35,23,22,21,20,0,16,2,12,14,35,26,27,25,24,0,3,10,11,0,35,18,22,26,24,0,1,2,3,0,35,19,18,24,25,0,17,1,0,11,35,22,23,27,26,0,2,16,10,3,35,31,30,28,29,0,10,9,8,11,35,23,20,30,31,0,16,14,9,10,35,20,16,28,30,0,14,15,8,9,35,16,19,29,28,0,15,17,11,8,35,36,37,33,32,0,18,9,8,19,35,37,38,34,33,0,9,14,15,8,35,39,35,41,43,0,20,21,0,3,35,35,39,47,45,0,21,20,3,0,35,32,33,34,35,0,19,8,15,21,35,39,38,37,36,0,20,14,9,18,35,42,43,41,40,0,12,3,0,13,35,34,38,42,40,0,15,14,12,13,35,35,34,40,41,0,21,15,13,0,35,38,39,43,42,0,14,20,3,12,35,47,46,44,45,0,3,10,11,0,35,39,36,46,47,0,20,18,10,3,35,36,32,44,46,0,18,19,11,10,35,32,35,45,44,0,19,21,0,11,35,52,53,49,48,0,4,10,11,5,35,53,54,50,49,0,10,18,19,11,35,55,51,57,59,0,22,23,13,12,35,51,55,63,61,0,23,22,12,13,35,48,49,50,51,0,5,11,19,23,35,55,54,53,52,0,22,18,10,4,35,58,59,57,56,0,9,12,13,8,35,50,54,58,56,0,19,18,9,8,35,51,50,56,57,0,23,19,8,13,35,54,55,59,58,0,18,22,12,9,35,63,62,60,61,0,12,3,0,13,35,55,52,62,63,0,22,4,3,12,35,52,48,60,62,0,4,5,0,3,35,48,51,61,60,0,5,23,13,0,35,65,64,68,69,1,11,0,3,10,35,69,70,66,65,1,10,9,8,11,35,70,71,67,66,1,9,12,13,8,35,64,67,71,68,1,0,13,12,3,35,64,65,66,67,1,0,11,8,13,35,71,70,69,68,1,12,9,10,3],
"bones" : [],
"skinIndices" : [],
"skinWeights" : [],
"animation" : {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,513 @@
(function() {
var url=document.currentScript;
if(!url) {
var scripts=document.getElementsByTagName('script');
for(var i=0;i<scripts.length;i++) {
script=scripts[i];
if(script.getAttribute("jocly-type")=="json-resource")
url=script.src;
}
}
$(document).trigger('jocly.json-resource',{ url: url,data:
[ { az: 67.1494987214751, al: -44.84981459320649 },
{ az: 123.29994922408447, al: -57.21558728318101 },
{ az: 297.70009223220893, al: -0.641768567807456 },
{ az: 220.73155920315045, al: -43.666133464501264 },
{ az: 277.5509623698719, al: 56.175910526831935 },
{ az: 41.112069925045446, al: 16.565907844233106 },
{ az: 78.81445759562801, al: -23.177696087593382 },
{ az: 36.40971217506287, al: -34.362043241845484 },
{ az: 149.43058179394103, al: -22.672513436737926 },
{ az: 59.525558857376645, al: -18.502592621791926 },
{ az: 222.59240671624136, al: -47.88195974802736 },
{ az: 221.6032947303848, al: 48.2124180762385 },
{ az: 68.07333662718915, al: 1.1656205833372384 },
{ az: 242.11009332211114, al: -9.26149114184158 },
{ az: 285.53931456463545, al: -31.348144629292065 },
{ az: 25.242170595291718, al: -13.871145597458229 },
{ az: 162.01886489085592, al: 14.442968983526114 },
{ az: 223.72590509080743, al: -57.35269637044926 },
{ az: 284.1404114012206, al: 79.9320222736303 },
{ az: 216.33336327658145, al: -59.03955741191515 },
{ az: 220.73104803324088, al: -43.665808847191336 },
{ az: 350.7994449307865, al: -33.92722701706243 },
{ az: 78.40140978570335, al: -55.26462365339767 },
{ az: 228.0691793844818, al: -59.845577749139764 },
{ az: 224.6971158562264, al: -7.802177944493718 },
{ az: 66.1626758948927, al: -14.474189560614938 },
{ az: 51.345182789106914, al: 2.259764520122946 },
{ az: 175.30056321426838, al: -63.757055466133835 },
{ az: 69.33752692484173, al: -21.93055255311753 },
{ az: 216.33355483707223, al: -59.038396911897756 },
{ az: 174.7121203956955, al: -0.8730109240423589 },
{ az: 333.5532693805432, al: 17.9026215669245 },
{ az: 111.18976292107968, al: -74.25957559881363 },
{ az: 50.62802171894824, al: 33.634592906525384 },
{ az: 349.4954981848583, al: 16.84234416421051 },
{ az: 72.48841192604799, al: -55.395667138904116 },
{ az: 218.00772984337686, al: 0.4424196337921642 },
{ az: 150.88686300805034, al: -70.49767662853498 },
{ az: 322.56018372854567, al: 17.834207926389443 },
{ az: 220.3203110327253, al: -11.883016555246838 },
{ az: 35.89047202506308, al: 10.934250488752017 },
{ az: 204.38724544063408, al: -34.40943137043852 },
{ az: 45.137033007186396, al: -17.27887274839378 },
{ az: 189.89960076071537, al: -11.50724133224372 },
{ az: 147.02482423173333, al: -76.05454099585853 },
{ az: 73.53283124406285, al: -41.895119033908756 },
{ az: 26.02530746187685, al: -9.43144973040644 },
{ az: 4.136529941207166, al: -54.94307174126631 },
{ az: 86.91326976006654, al: 31.93024054661698 },
{ az: 285.9559573949212, al: 21.406494210108743 },
{ az: 0.9792255020725975, al: 43.855717350913274 },
{ az: 216.3378124605486, al: 10.810616874010174 },
{ az: 134.30732644025016, al: 15.051638746907123 },
{ az: 68.97425971405598, al: -23.24448586489921 },
{ az: 103.12335145728598, al: 56.6375375233495 },
{ az: 82.57505138603013, al: 49.01600491484635 },
{ az: 73.52492013878786, al: -30.043198258970023 },
{ az: 253.85120041644058, al: -39.307902312976196 },
{ az: 339.98146458241604, al: 38.62809005856092 },
{ az: 258.44668318870555, al: 29.813230713903373 },
{ az: 168.8899795633521, al: -1.6861338765625749 },
{ az: 61.402991043611934, al: 31.431934777140516 },
{ az: 324.6544928356279, al: -24.446275089408005 },
{ az: 243.934758529568, al: -58.230768327578566 },
{ az: 262.72398600075434, al: 75.68852457134084 },
{ az: 90.13512609494207, al: -84.70600508414934 },
{ az: 49.44945046972206, al: 58.63431092242798 },
{ az: 69.51125409770452, al: -20.554114957375685 },
{ az: 290.3903305559164, al: 17.652890278667726 },
{ az: 302.09964029915676, al: 52.90167148315549 },
{ az: 86.20997466457365, al: -72.24698264052692 },
{ az: 170.60927599008966, al: -74.07789864754773 },
{ az: 67.21371096308532, al: 42.57971044930955 },
{ az: 42.69074493519236, al: 62.252428859061915 },
{ az: 329.33986115851474, al: 19.667238201572516 },
{ az: 233.2377300265744, al: -11.642767205896423 },
{ az: 233.78215582601644, al: -49.96154324160689 },
{ az: 237.37281673855753, al: -38.68242046342985 },
{ az: 243.93496355788284, al: -37.29608498263048 },
{ az: 249.54581775056621, al: -11.431722111721006 },
{ az: 348.22652141620864, al: 11.611130221147166 },
{ az: 150.08965298887705, al: -3.9379536108958866 },
{ az: 176.90426097629359, al: 56.18803104308847 },
{ az: 222.10058667528503, al: -8.192408855116048 },
{ az: 124.71585944341366, al: 66.67744693774782 },
{ az: 242.56969754002716, al: 5.069072609360571 },
{ az: 340.1576442455437, al: 11.641797972483541 },
{ az: 353.45334450370126, al: 70.87425664874692 },
{ az: 72.6862183336003, al: -59.92320637667079 },
{ az: 229.89873592840968, al: 76.16032336733002 },
{ az: 42.130671273018066, al: 56.11257825536332 },
{ az: 139.96870830784835, al: 55.986522007027176 },
{ az: 169.2070112630318, al: -78.38361943126944 },
{ az: 93.07055170038505, al: 9.134405629794761 },
{ az: 241.64148444836178, al: -45.87522701371164 },
{ az: 335.4965382872849, al: -22.080901817717674 },
{ az: 252.01771627258194, al: 3.2899672718707293 },
{ az: 83.43158590489992, al: -32.955939400118574 },
{ az: 295.38135779944383, al: -47.66473289360314 },
{ az: 241.03391868256662, al: -63.67865185019755 },
{ az: 213.186019412519, al: 8.400107782124744 },
{ az: 348.8254877773171, al: -25.751158114835317 },
{ az: 266.6198435204672, al: -10.098451361296503 },
{ az: 40.50164633763281, al: 4.6905714565425995 },
{ az: 250.80924580675304, al: -8.639367503618049 },
{ az: 91.50719471684417, al: 32.538508574015665 },
{ az: 99.10142709564865, al: -43.783915219669026 },
{ az: 284.5293524861062, al: -48.53648265835242 },
{ az: 273.4456655406367, al: 5.706896178049041 },
{ az: 43.324212662823975, al: 52.563691984458195 },
{ az: 300.88156653717823, al: -4.535904307089942 },
{ az: 240.3138406510297, al: -34.09764607073823 },
{ az: 52.99826624044157, al: 9.845078276992068 },
{ az: 238.10463871971746, al: -76.75917742653583 },
{ az: 206.62980881235993, al: -55.81698594064934 },
{ az: 225.01223985861446, al: -8.3125194257639 },
{ az: 88.18268733978034, al: -62.75044886979348 },
{ az: 298.35456752426853, al: 9.711387387213254 },
{ az: 221.05205680859416, al: 3.9012395667057036 },
{ az: 224.38829095243182, al: 49.165166113812106 },
{ az: 260.89718677012246, al: 4.131736367918593 },
{ az: 320.62997894056184, al: 42.58563960554083 },
{ az: 259.58904674061165, al: -47.5823842076348 },
{ az: 265.9428465717713, al: -19.288470330482532 },
{ az: 198.46256318514494, al: -67.279823834367 },
{ az: 73.017852209319, al: -25.221631134955047 },
{ az: 277.408889128558, al: 24.032495069243797 },
{ az: 250.3876782122756, al: 25.630151467487813 },
{ az: 237.93233018363637, al: -27.339609367924893 },
{ az: 77.67722081395632, al: -19.809688469402328 },
{ az: 304.6655776846213, al: 49.11338460411289 },
{ az: 169.75051394112361, al: -33.70435464531347 },
{ az: 223.9541276550767, al: -61.62046328976878 },
{ az: 50.761369904361096, al: -63.343032904973406 },
{ az: 284.8386231037923, al: 32.12898472725845 },
{ az: 222.1512480294184, al: 8.440775829132283 },
{ az: 239.79888771616248, al: -9.490287944379398 },
{ az: 118.37648642085104, al: 46.33414837768894 },
{ az: 306.26986624021026, al: -18.26620973524688 },
{ az: 86.94142447970327, al: -34.043166588606724 },
{ az: 63.32446297461873, al: 18.617239232563133 },
{ az: 213.5949576181574, al: -36.30408765807543 },
{ az: 213.07855405698416, al: -22.520233121397116 },
{ az: 150.75610521928706, al: -27.620117410411776 },
{ az: 174.73561157988541, al: -14.255968059365227 },
{ az: 70.45154713230914, al: 14.612233032431128 },
{ az: 284.0468532156606, al: 69.99927768701596 },
{ az: 177.26462757856552, al: 30.17746770626582 },
{ az: 44.728646555986934, al: -10.257132462715616 },
{ az: 26.025202178864337, al: -9.431192097227248 },
{ az: 56.09069884872702, al: 23.198400610578428 },
{ az: 208.99344331110495, al: -41.6063943574145 },
{ az: 247.13520519218525, al: -14.03629080445782 },
{ az: 244.02506965595995, al: -10.00244096773224 },
{ az: 215.84215897858445, al: 17.022126725185363 },
{ az: 38.016021531379664, al: -30.28174348067992 },
{ az: 323.1615906268362, al: 3.4913987561263595 },
{ az: 181.85162009745994, al: 40.75961512048831 },
{ az: 48.342138235238174, al: 37.992980958157105 },
{ az: 118.81980189934431, al: -61.127436105955255 },
{ az: 130.34441745469297, al: 71.27176135756886 },
{ az: 96.36859564756946, al: -13.009640474107123 },
{ az: 292.8957225711949, al: -44.60173720633633 },
{ az: 216.4133168910119, al: -17.70915171515387 },
{ az: 169.7633546502067, al: 45.56547483530251 },
{ az: 39.18304145427544, al: -10.57030291644376 },
{ az: 357.85553957415084, al: -22.543729019716178 },
{ az: 44.64586321957849, al: 16.81378998632017 },
{ az: 223.43464425349643, al: 1.5614495378033602 },
{ az: 239.25362741324363, al: 46.0007696058551 },
{ az: 74.98948133789708, al: 38.09944571972506 },
{ az: 54.102688817931856, al: -5.139748438988019 },
{ az: 291.25744950871695, al: -52.196391834137955 },
{ az: 275.685121886063, al: -40.4682968824598 },
{ az: 50.81611442610068, al: 29.94130834324635 },
{ az: 182.85316590567535, al: -68.536203921701 },
{ az: 343.73682465785913, al: 0.5260087349899033 },
{ az: 176.63566990280032, al: 8.893334198658575 },
{ az: 87.57551850519077, al: -49.00858901560289 },
{ az: 70.52972119446679, al: -52.80500535411073 },
{ az: 308.5562039601607, al: 15.59018450423358 },
{ az: 220.6344415026235, al: -8.443504176692102 },
{ az: 105.8465099202648, al: 11.823187646505836 },
{ az: 248.56474489190612, al: -45.033791320649456 },
{ az: 351.54995411180954, al: -4.245728072760597 },
{ az: 208.87234178826594, al: -55.44254885495495 },
{ az: 336.13567316395813, al: 39.76848251903943 },
{ az: 333.88240620847876, al: 59.373958136882024 },
{ az: 230.27564784720573, al: -14.066435336914918 },
{ az: 248.76050422926545, al: 60.2107868505824 },
{ az: 201.1518020151619, al: 29.024318503967216 },
{ az: 13.5228676729472, al: -39.5093916990892 },
{ az: 325.127491435665, al: -58.531550612621146 },
{ az: 217.82228181282122, al: -2.2753092383914084 },
{ az: 190.054246837358, al: -1.890811230109831 },
{ az: 99.57870806730291, al: -46.635647187629594 },
{ az: 3.4014677193114644, al: -11.868043546375258 },
{ az: 176.4959190781627, al: -76.58529649348411 },
{ az: 211.05920654705994, al: -64.21647425599254 },
{ az: 241.30581447562255, al: -33.46992943488378 },
{ az: 215.54079324048277, al: -25.558388179999454 },
{ az: 6.337617963055173, al: 2.074551484746147 },
{ az: 273.0882504564002, al: 34.18272601201262 },
{ az: 285.6853731005468, al: 40.803975311056504 },
{ az: 45.89845917996428, al: 14.374888802254361 },
{ az: 105.07889110844803, al: -57.822020340931 },
{ az: 0.6753827961733854, al: 5.334646925802292 },
{ az: 325.39226449043554, al: 48.157971730237435 },
{ az: 217.89567098348985, al: 9.156081018738515 },
{ az: 72.2857524363088, al: -8.059200256238542 },
{ az: 92.3765262915443, al: -30.936708705316377 },
{ az: 215.01858781674628, al: -44.253008778993355 },
{ az: 262.83876345702043, al: 20.976757074106835 },
{ az: 201.74616146419922, al: 75.73642155562136 },
{ az: 222.1835584888028, al: -5.733683834170721 },
{ az: 10.637698846272759, al: 53.87574614512247 },
{ az: 240.10383999496668, al: -29.178115551040328 },
{ az: 209.28310642082164, al: 41.55613588158001 },
{ az: 358.43224642682014, al: 63.07083842540891 },
{ az: 126.54117302888147, al: -20.684955875584045 },
{ az: 158.4777175868053, al: -42.2946660899512 },
{ az: 259.48672280106456, al: 4.142618282987651 },
{ az: 263.9196427885614, al: 57.379350605443804 },
{ az: 100.31334108563279, al: -66.92795288231105 },
{ az: 237.00694180153383, al: 26.068102233772557 },
{ az: 94.10234112777276, al: 52.106913341770564 },
{ az: 131.7646791876473, al: -41.87080355360511 },
{ az: 141.53856059553542, al: -59.437053954040486 },
{ az: 263.98674888325473, al: -34.022123888890725 },
{ az: 234.40691222484492, al: -0.12404671886323279 },
{ az: 158.83238001126185, al: 27.940624847042017 },
{ az: 46.30345399243006, al: -9.219725506517996 },
{ az: 256.24095994354127, al: -22.894312157338064 },
{ az: 321.1438029833488, al: 34.85688188007146 },
{ az: 146.43398270113428, al: -11.45795979729717 },
{ az: 85.63558213217904, al: -28.327789166181116 },
{ az: 338.8681335579641, al: 15.996854586915251 },
{ az: 186.90792974095402, al: -63.213616925730356 },
{ az: 199.41562699193807, al: -70.2383250572933 },
{ az: 213.34331536341836, al: 10.799728755049134 },
{ az: 223.68867713976567, al: -15.110305925381066 },
{ az: 58.318142114032305, al: -61.076378527667195 },
{ az: 333.63482176627497, al: -26.88543899837391 },
{ az: 212.4255461140629, al: -23.11701352851816 },
{ az: 237.19319321702167, al: 17.2448565794423 },
{ az: 142.29776459939927, al: -41.77659355245486 },
{ az: 16.818782630204016, al: 74.543155954703 },
{ az: 72.51235422787333, al: -20.795964128112068 },
{ az: 45.46608841747551, al: -21.220633749432167 },
{ az: 8.392920231379478, al: 15.258884246463335 },
{ az: 225.18391371128897, al: 40.08623690128427 },
{ az: 291.7965728354786, al: -22.070268759258827 },
{ az: 236.04361478896948, al: -31.198520270224147 },
{ az: 37.775512343963136, al: 49.274205531762455 },
{ az: 16.12002090910729, al: -38.64553339004737 },
{ az: 302.7749541405797, al: -25.289025195123696 },
{ az: 63.83792897727596, al: 30.756490935985916 },
{ az: 69.76207543605186, al: 1.9366155910362128 },
{ az: 195.06241849893505, al: -71.35660837521785 },
{ az: 152.19884724478106, al: 54.351350803871526 },
{ az: 141.14168958883607, al: -11.128054238858798 },
{ az: 83.16123050182284, al: 38.08725242038455 },
{ az: 249.58705886214685, al: -44.72772940507256 },
{ az: 229.31802143638822, al: -36.363169797187254 },
{ az: 237.15483558758197, al: -21.845722901459286 },
{ az: 270.7577626109723, al: 41.56682916700999 },
{ az: 185.57913284759505, al: -20.316477586096557 },
{ az: 341.6992163153785, al: 70.27575589581332 },
{ az: 47.21442116188789, al: 57.37414780450244 },
{ az: 167.54073515899972, al: -74.16517602827778 },
{ az: 350.2064083760616, al: -22.31952137737909 },
{ az: 225.20312380473064, al: 30.7549815889193 },
{ az: 124.45294863636313, al: 17.941603487415684 },
{ az: 352.7015581452929, al: -2.973037184889755 },
{ az: 266.7053610981923, al: 56.125150419260756 },
{ az: 97.03044180639687, al: 11.962867514366677 },
{ az: 76.93269843454483, al: 4.417788627739797 },
{ az: 76.23003710618269, al: -55.19195539203504 },
{ az: 128.25011404277845, al: -71.01854417101609 },
{ az: 298.5111256299457, al: 18.78333918391345 },
{ az: 228.26534540359233, al: 58.26040574124917 },
{ az: 338.674647252813, al: -9.846894131277654 },
{ az: 263.79024192883753, al: 27.429999694459276 },
{ az: 136.08739852008352, al: 65.82636327515512 },
{ az: 168.89462436798544, al: -6.221621196394254 },
{ az: 121.21664055994133, al: 8.053225839296896 },
{ az: 306.1269969676256, al: 21.277220654035844 },
{ az: 211.28755618398046, al: -9.026470743956624 },
{ az: 218.3870643219315, al: 15.635263075848227 },
{ az: 24.263598113871804, al: -34.07401328714385 },
{ az: 358.7889560953583, al: -36.44741650697427 },
{ az: 351.7310657178673, al: -29.191074476094496 },
{ az: 17.533244674748897, al: 65.37829682128631 },
{ az: 67.42801718974582, al: 4.286409361596694 },
{ az: 33.13663491466674, al: -17.222502150698215 },
{ az: 265.3751439670177, al: -0.12403450461623183 },
{ az: 292.0798034925132, al: 36.35995994520436 },
{ az: 166.64597738800197, al: 51.84893063249728 },
{ az: 96.06805876962886, al: -7.810128205386215 },
{ az: 61.813178731639766, al: -13.397535719733398 },
{ az: 194.59621910367414, al: -78.62736799375324 },
{ az: 287.6903620928431, al: -64.43339250677614 },
{ az: 237.77081412491958, al: 9.58556891497035 },
{ az: 78.03695448154608, al: -33.4898572743574 },
{ az: 241.08166795352818, al: -41.62116099368764 },
{ az: 134.40059818527774, al: 25.932194995926878 },
{ az: 140.72960535462644, al: -22.646451769007985 },
{ az: 110.21276697121112, al: -29.35394223526946 },
{ az: 315.058691520312, al: -53.83659768704264 },
{ az: 244.10245810411163, al: -26.578645945712267 },
{ az: 189.3824793805562, al: -21.1498561896394 },
{ az: 61.129330308234444, al: 49.08480492452504 },
{ az: 26.76277306739207, al: -17.196058518783918 },
{ az: 230.23067370082003, al: -13.980526315671925 },
{ az: 338.0657463122543, al: 53.12796608798532 },
{ az: 202.66603832171026, al: 30.97345081455484 },
{ az: 36.10998114532194, al: -21.91304615098963 },
{ az: 302.79175853986, al: 9.984197792307024 },
{ az: 248.87398370498127, al: -19.02479668206638 },
{ az: 221.0851607878393, al: -60.42966378855147 },
{ az: 120.01880287558566, al: 17.149257447458577 },
{ az: 85.55073717893018, al: 8.448087799590759 },
{ az: 77.18368557639964, al: -22.770118926690103 },
{ az: 85.62624102635344, al: -38.034568548387426 },
{ az: 33.12507414445746, al: -3.8185841491599786 },
{ az: 5.696870150600027, al: 1.111372708689035 },
{ az: 21.27200152990391, al: -86.59363970510391 },
{ az: 84.53152695500606, al: -68.18475665259311 },
{ az: 344.5267726240679, al: -57.88489044923421 },
{ az: 317.423511374633, al: -35.63865584089476 },
{ az: 100.70910592530083, al: 33.12712861367687 },
{ az: 139.55974092399185, al: -76.79693007738982 },
{ az: 204.18890036285654, al: -52.946847465295455 },
{ az: 226.72138417454548, al: -16.738299630514724 },
{ az: 208.52005479975142, al: -25.65642865535674 },
{ az: 204.0276504322064, al: -27.378878339416463 },
{ az: 87.5721473436431, al: 74.49167384859071 },
{ az: 76.68736216838927, al: 26.5984580882831 },
{ az: 70.22831781621461, al: 14.292240801022754 },
{ az: 208.26292728998158, al: 58.27202280261957 },
{ az: 205.8355107463921, al: -61.196518909213204 },
{ az: 71.44105720853884, al: 3.2780586976544113 },
{ az: 302.55813610548887, al: -31.25532544871825 },
{ az: 332.6958312344532, al: 29.94198436166111 },
{ az: 185.6548466160532, al: -12.485494072477527 },
{ az: 54.519355229858384, al: 59.25837000127485 },
{ az: 247.29495664179723, al: -19.804749154148354 },
{ az: 211.75998714151197, al: -14.348683676858895 },
{ az: 156.83063719488288, al: 21.805342169900612 },
{ az: 0.6700245331831973, al: 16.720737415762756 },
{ az: 279.7952450086824, al: 12.176780465444423 },
{ az: 49.453334023546695, al: -75.21156329479034 },
{ az: 302.55813610548887, al: -31.25532544871825 },
{ az: 293.33413864607905, al: 18.055842359778982 },
{ az: 179.2013584787207, al: 29.681325585676035 },
{ az: 108.93132926269679, al: -11.77655452546687 },
{ az: 72.99192840483434, al: -9.27071870996324 },
{ az: 182.87068123380183, al: -71.10851270207401 },
{ az: 144.12301421393548, al: 43.9660481324295 },
{ az: 143.19642689748844, al: -20.423014513802094 },
{ az: 70.8540796826306, al: 15.063210459625846 },
{ az: 270.54823649459513, al: 44.478994510850185 },
{ az: 75.56707280370216, al: -34.70518097791472 },
{ az: 338.8984669670463, al: 5.729913669847445 },
{ az: 270.898564592531, al: 5.551529465354613 },
{ az: 218.4322198826104, al: 46.5654493149988 },
{ az: 74.68134705762122, al: -12.069742665787206 },
{ az: 30.011009959660417, al: 18.3423209107783 },
{ az: 280.2339351546996, al: -7.8529154459056 },
{ az: 275.4926739946642, al: 84.17335727666462 },
{ az: 218.9407306731018, al: 82.9759500775793 },
{ az: 116.12876712518174, al: 11.129365276697266 },
{ az: 97.59866269876612, al: -5.748113517712416 },
{ az: 90.06318020979884, al: -70.3743563212275 },
{ az: 249.3597208291908, al: 33.326665419055544 },
{ az: 84.62950592136411, al: 8.503955732491905 },
{ az: 182.66124832105965, al: 23.89158572783508 },
{ az: 156.67553687826288, al: 35.992183669027995 },
{ az: 46.577449586833474, al: 14.788035253092161 },
{ az: 123.59475774165418, al: -83.25736760060764 },
{ az: 276.8265544201704, al: 21.039778017471875 },
{ az: 248.0958823847288, al: 25.010359652736014 },
{ az: 311.07679306953463, al: 53.09914727435435 },
{ az: 24.035680143054638, al: 73.19342606493574 },
{ az: 46.503423484157175, al: 40.79192283870368 },
{ az: 69.54556462514833, al: 4.087855806281903 },
{ az: 140.32980172743444, al: -50.78779534215494 },
{ az: 213.76901001555112, al: -28.42578333013906 },
{ az: 179.72734282102678, al: -31.044642269569003 },
{ az: 159.21193602559265, al: 70.70963259827407 },
{ az: 55.42019381957336, al: 26.644799891071536 },
{ az: 162.59499005534033, al: -65.48772415272957 },
{ az: 216.59375004669414, al: 15.841278365860715 },
{ az: 305.39897553628646, al: 65.16003789833809 },
{ az: 208.25649064557427, al: 59.68173579781032 },
{ az: 195.08708935932884, al: 35.67232330921416 },
{ az: 49.48816956499907, al: 78.66441660362983 },
{ az: 157.989449280864, al: -57.490563464004694 },
{ az: 210.95627514176235, al: -70.81563877526537 },
{ az: 37.286457336554626, al: -16.815044343237552 },
{ az: 29.44791645476525, al: -12.454768878495686 },
{ az: 302.0759859181049, al: 67.29625032462232 },
{ az: 289.17485087807756, al: 75.00587478958553 },
{ az: 57.32406465016633, al: 33.279460936086174 },
{ az: 358.18178008037165, al: 12.731007162985764 },
{ az: 348.82401306356587, al: -25.75208152939655 },
{ az: 278.07098287373833, al: 6.823536782934715 },
{ az: 278.07220597227825, al: 6.8246782468486265 },
{ az: 294.82800044140384, al: 48.77951364314167 },
{ az: 69.86168708180966, al: -23.38700710001228 },
{ az: 82.7987839210497, al: -38.27614776394756 },
{ az: 335.0783893334699, al: -61.25344585403384 },
{ az: 104.67217350849451, al: -30.525357221244544 },
{ az: 3.7221921939878393, al: -9.436887712657523 },
{ az: 202.93552715257653, al: -73.01656408456236 },
{ az: 262.08321784611303, al: 11.060093418860056 },
{ az: 231.25010248694474, al: 55.912915433333445 },
{ az: 71.8792189193281, al: 68.6889131082232 },
{ az: 64.41124665975384, al: 20.47070237176775 },
{ az: 344.09926957162816, al: -10.222508905541215 },
{ az: 248.10695837481126, al: -43.42330786497586 },
{ az: 195.22126603955644, al: -44.997657481841216 },
{ az: 268.2723243614361, al: 45.97485592860999 },
{ az: 341.92912520730954, al: 60.10215192492345 },
{ az: 69.71230189592055, al: 2.01606123243069 },
{ az: 111.66589917658794, al: -79.60277660820374 },
{ az: 163.25412866083, al: -71.87218048591416 },
{ az: 241.07311919037494, al: -78.61818619224223 },
{ az: 349.27822463698124, al: 24.931340390338864 },
{ az: 288.8249158102708, al: 18.75374003935321 },
{ az: 257.21783859093097, al: 44.61617309920552 },
{ az: 164.49339453946922, al: 43.87151312382281 },
{ az: 146.61924599012525, al: -39.34869365898099 },
{ az: 121.88330584538191, al: -51.389787102946144 },
{ az: 91.73571450296531, al: -51.10522432546616 },
{ az: 71.36783968591965, al: -56.74214698523993 },
{ az: 279.32487793327124, al: -82.95916471838102 },
{ az: 343.0537164926475, al: -35.5531783691993 },
{ az: 278.27450715042295, al: 14.17126458000616 },
{ az: 212.00678594211288, al: -34.435731884669444 },
{ az: 230.46372769422308, al: 23.761960564063955 },
{ az: 119.03010755173885, al: -33.37429725720971 },
{ az: 244.8998032132581, al: -58.79314414605832 },
{ az: 280.79223273623285, al: 48.26504362128635 },
{ az: 227.35399487298164, al: 10.264164736789573 },
{ az: 80.29566912385171, al: 52.610039849051674 },
{ az: 115.60565413733147, al: -15.383636734321485 },
{ az: 70.50786412540353, al: 15.069402296366702 },
{ az: 90.17547892722949, al: -20.78823653783277 },
{ az: 101.95758909866649, al: -42.98216169342282 },
{ az: 73.14010324957742, al: -51.50739257371248 },
{ az: 201.6253830156836, al: -54.80227242031969 },
{ az: 344.2192354154176, al: 27.916434187583114 },
{ az: 244.63663754924414, al: -44.4566190500976 },
{ az: 233.00840557229375, al: -34.846085372405405 },
{ az: 154.39435215807416, al: -5.558453031952496 },
{ az: 7.906336351881862, al: -43.748103141961906 },
{ az: 356.2717559156282, al: -20.248634918174037 },
{ az: 254.68390715747114, al: -46.93879558832625 },
{ az: 275.28013552796676, al: -13.683239750753957 },
{ az: 245.0353855706941, al: -16.42277632531326 },
{ az: 103.45189203241499, al: 1.1293932963916866 },
{ az: 228.0501773336304, al: -70.01477796316887 },
{ az: 308.3169742788053, al: -33.829017444460106 },
{ az: 302.6637513833301, al: 36.25698636398093 },
{ az: 194.12508698729215, al: -40.053969001823916 },
{ az: 254.73668021046757, al: 68.81032732445738 },
{ az: 26.81513118357759, al: -47.22306497726251 },
{ az: 216.0218164430887, al: 41.40081484566245 },
{ az: 163.83181733284917, al: -1.2782051538870987 },
{ az: 81.19315723247166, al: -0.533793707189459 },
{ az: 109.21807054369796, al: -80.63316148809876 },
{ az: 359.01535478393276, al: -47.48584023110049 },
{ az: 214.41151281183076, al: -69.25935677737353 },
{ az: 241.9021676547996, al: -60.535596840968516 },
{ az: 259.46311232111714, al: -10.445438362810055 },
{ az: 151.38826067308952, al: -18.527432427139576 },
{ az: 281.40721707844693, al: 35.09281427787637 },
{ az: 188.5298564634761, al: 51.30717481366534 },
{ az: 82.1258755855039, al: -12.981860384871133 },
{ az: 45.150474252327434, al: -47.6176227356288 },
{ az: 214.66791569454958, al: 21.11351164934921 },
{ az: 150.7752170197222, al: -5.129901902507655 },
{ az: 14.021058250128593, al: -27.031285823038477 },
{ az: 329.13204325850523, al: -30.62782681702386 },
{ az: 254.8284775371647, al: 82.21172449246741 },
{ az: 144.48773768155237, al: -15.901421926597136 },
{ az: 50.03610869503801, al: 39.13178480968357 },
{ az: 71.70808195723815, al: -45.19942806906432 },
{ az: 164.20158401999538, al: -58.01437360814748 },
{ az: 329.33564444401645, al: 19.665853497770325 },
{ az: 242.3640578958146, al: -20.249734251422495 },
{ az: 139.04970275602588, al: 65.37443287089602 },
{ az: 109.57740547304911, al: -30.523764213503615 },
{ az: 108.32176428843734, al: -51.01050173921718 },
{ az: 85.44090180962397, al: -55.6463791384057 },
{ az: 66.4239794592228, al: -63.04500028457206 },
{ az: 237.40073143586793, al: -63.108480513224784 },
{ az: 249.9509282050218, al: -8.99951092140695 },
{ az: 187.8089981530103, al: -27.76184081196608 } ]
})
})()

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Some files were not shown because too many files have changed in this diff Show more