added mills module
101
src/games/mills/12-men-morris-model.js
Normal 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],
|
||||
];
|
||||
}
|
48
src/games/mills/12-men-morris-view.js
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
0
src/games/mills/12-men-morris.css
Normal file
57
src/games/mills/3-men-morris-model.js
Normal 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],
|
||||
];
|
||||
}
|
33
src/games/mills/3-men-morris-view.js
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
0
src/games/mills/3-men-morris.css
Normal file
85
src/games/mills/6-men-morris-model.js
Normal 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;
|
||||
}
|
39
src/games/mills/6-men-morris-view.js
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
0
src/games/mills/6-men-morris.css
Normal file
89
src/games/mills/7-men-morris-model.js
Normal 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;
|
||||
}
|
41
src/games/mills/7-men-morris-view.js
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
0
src/games/mills/7-men-morris.css
Normal file
97
src/games/mills/9-men-morris-model.js
Normal 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],
|
||||
];
|
||||
}
|
43
src/games/mills/9-men-morris-view.js
Normal 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",
|
||||
},
|
||||
});
|
||||
}
|
0
src/games/mills/9-men-morris.css
Normal file
8
src/games/mills/credits-fr.html
Normal 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>
|
8
src/games/mills/credits.html
Normal 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>
|
2
src/games/mills/description-fr.html
Normal 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>
|
1
src/games/mills/description.html
Normal 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
|
@ -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];
|
||||
});
|
BIN
src/games/mills/mensmorris12-thumb3d.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
src/games/mills/mensmorris3-thumb3d.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src/games/mills/mensmorris6-thumb3d.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src/games/mills/mensmorris7-thumb3d.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src/games/mills/mensmorris9-thumb3d.png
Normal file
After Width: | Height: | Size: 14 KiB |
418
src/games/mills/mills-model.js
Normal 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;
|
||||
}
|
||||
|
||||
|
502
src/games/mills/mills-view.js
Normal 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");
|
||||
}
|
1165
src/games/mills/mills-xd-view.js
Normal file
78
src/games/mills/mills.css
Normal 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%;
|
||||
}
|
BIN
src/games/mills/res/images/12mensboard-stone.jpg
Normal file
After Width: | Height: | Size: 216 KiB |
BIN
src/games/mills/res/images/12mensboard-suede.jpg
Normal file
After Width: | Height: | Size: 252 KiB |
BIN
src/games/mills/res/images/12mensboard-wood.jpg
Normal file
After Width: | Height: | Size: 159 KiB |
BIN
src/games/mills/res/images/3mensboard-stone.jpg
Normal file
After Width: | Height: | Size: 165 KiB |
BIN
src/games/mills/res/images/3mensboard-suede.jpg
Normal file
After Width: | Height: | Size: 184 KiB |
BIN
src/games/mills/res/images/3mensboard-wood.jpg
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
src/games/mills/res/images/6mensboard-stone.jpg
Normal file
After Width: | Height: | Size: 203 KiB |
BIN
src/games/mills/res/images/6mensboard-suede.jpg
Normal file
After Width: | Height: | Size: 217 KiB |
BIN
src/games/mills/res/images/6mensboard-wood.jpg
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
src/games/mills/res/images/7mensboard-stone.jpg
Normal file
After Width: | Height: | Size: 204 KiB |
BIN
src/games/mills/res/images/7mensboard-suede.jpg
Normal file
After Width: | Height: | Size: 219 KiB |
BIN
src/games/mills/res/images/7mensboard-wood.jpg
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
src/games/mills/res/images/9mensboard-stone.jpg
Normal file
After Width: | Height: | Size: 214 KiB |
BIN
src/games/mills/res/images/9mensboard-suede.jpg
Normal file
After Width: | Height: | Size: 247 KiB |
BIN
src/games/mills/res/images/9mensboard-wood.jpg
Normal file
After Width: | Height: | Size: 179 KiB |
BIN
src/games/mills/res/images/backarrow2.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
src/games/mills/res/images/ballblack.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
src/games/mills/res/images/ballblack2.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
src/games/mills/res/images/ballmetal.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
src/games/mills/res/images/ballshinywood.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
src/games/mills/res/images/ballwhitestone.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
src/games/mills/res/images/basic2.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
src/games/mills/res/images/circle.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
src/games/mills/res/images/coq2.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
src/games/mills/res/images/dot.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
src/games/mills/res/images/oursin.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
src/games/mills/res/images/possible.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
src/games/mills/res/images/ring.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
src/games/mills/res/rules/rulesbuttons-exc.png
Normal file
After Width: | Height: | Size: 948 B |
BIN
src/games/mills/res/rules/rulesbuttons-play.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
src/games/mills/res/rules/rulesbuttons-win.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
src/games/mills/res/sounds/move1.mp3
Normal file
BIN
src/games/mills/res/sounds/move1.ogg
Normal file
BIN
src/games/mills/res/sounds/move2.mp3
Normal file
BIN
src/games/mills/res/sounds/move2.ogg
Normal file
BIN
src/games/mills/res/sounds/move3.mp3
Normal file
BIN
src/games/mills/res/sounds/move3.ogg
Normal file
BIN
src/games/mills/res/sounds/move4.mp3
Normal file
BIN
src/games/mills/res/sounds/move4.ogg
Normal file
BIN
src/games/mills/res/sounds/promo.mp3
Normal file
BIN
src/games/mills/res/sounds/promo.ogg
Normal file
BIN
src/games/mills/res/sounds/tac1.mp3
Normal file
BIN
src/games/mills/res/sounds/tac1.ogg
Normal file
BIN
src/games/mills/res/sounds/tac2.mp3
Normal file
BIN
src/games/mills/res/sounds/tac2.ogg
Normal file
BIN
src/games/mills/res/sounds/tac3.mp3
Normal file
BIN
src/games/mills/res/sounds/tac3.ogg
Normal file
BIN
src/games/mills/res/visuals/ninemen-600x600-2d.jpg
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
src/games/mills/res/visuals/ninemen-600x600-3d.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
src/games/mills/res/visuals/sevenmen-600x600-2d.jpg
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
src/games/mills/res/visuals/sevenmen-600x600-3d.jpg
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
src/games/mills/res/visuals/sixmen-600x600-2d.jpg
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
src/games/mills/res/visuals/sixmen-600x600-3d.jpg
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
src/games/mills/res/visuals/threemen-600x600-2d.jpg
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
src/games/mills/res/visuals/threemen-600x600-3d.jpg
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
src/games/mills/res/visuals/twelvemen-600x600-2d.jpg
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
src/games/mills/res/visuals/twelvemen-600x600-3d.jpg
Normal file
After Width: | Height: | Size: 67 KiB |
91
src/games/mills/res/xd-view/meshes/boardoriented.js
Normal 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" : {}
|
||||
|
||||
|
||||
}
|
74
src/games/mills/res/xd-view/meshes/piece-v2.js
Normal file
BIN
src/games/mills/res/xd-view/meshes/piecediff.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
72
src/games/mills/res/xd-view/meshes/pieces-classic-queen.js
Normal file
72
src/games/mills/res/xd-view/meshes/pieces-classic-select.js
Normal 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" : {}
|
||||
|
||||
|
||||
}
|
56
src/games/mills/res/xd-view/meshes/pieces-classic.js
Normal 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" : {}
|
||||
|
||||
|
||||
}
|
BIN
src/games/mills/res/xd-view/meshes/piecetop-bump.jpg
Normal file
After Width: | Height: | Size: 41 KiB |
72
src/games/mills/res/xd-view/meshes/ring-target.js
Normal 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" : {}
|
||||
|
||||
|
||||
}
|
BIN
src/games/mills/res/xd-view/meshes/square.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
src/games/mills/res/xd-view/meshes/star.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
513
src/games/mills/res/xd-view/meshes/starsdb.js
Normal 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 } ]
|
||||
})
|
||||
})()
|
1
src/games/mills/res/xd-view/meshes/starsdb.json
Normal file
BIN
src/games/mills/res/xd-view/meshes/stonecell1.jpg
Normal file
After Width: | Height: | Size: 181 KiB |