2021-05-31 19:42:33 +00:00
function Sprite ( x , y ) {
2021-06-01 11:24:52 +00:00
this . sprite = PIXI . Sprite . from ( '/img/sprite.jpg' ) ;
this . coord _x = x ;
this . coord _y = y ;
this . getSprite = function ( ) {
this . setSize ( this . sprite , sprite _size ) ;
return this . sprite ;
}
this . resize = function ( sprite _size ) {
this . setSize ( this . sprite , sprite _size ) ;
}
this . setSize = function ( sprite , size ) {
sprite . x = this . coord _x * size - size * 0.2 ;
sprite . y = this . coord _y * size - size * 0.2 ;
sprite . width = size * 1.5 ;
sprite . height = size * 1.5 ;
}
2021-05-31 19:42:33 +00:00
}
2021-05-26 17:34:31 +00:00
2021-06-01 11:24:52 +00:00
2021-06-05 15:46:31 +00:00
let game = document . getElementById ( 'game' ) ;
let game _board _size = calculate _size ( ) ;
let sprite _size = Math . floor ( game _board _size / 11 ) ;
const app = new PIXI . Application ( {
autoResize : true ,
resolution : devicePixelRatio ,
backgroundAlpha : 0 ,
width : game _board _size ,
height : game _board _size
} ) ;
document . getElementById ( 'game' ) . appendChild ( app . view ) ;
// fields
2021-05-31 19:42:33 +00:00
let sprites = {
2021-06-01 11:24:52 +00:00
0 : new Sprite ( 1 , 1 ) ,
1 : new Sprite ( 3 , 1 ) ,
2 : new Sprite ( 5 , 1 ) ,
3 : new Sprite ( 7 , 1 ) ,
4 : new Sprite ( 9 , 1 ) ,
5 : new Sprite ( 1 , 3 ) ,
6 : new Sprite ( 9 , 3 ) ,
7 : new Sprite ( 1 , 5 ) ,
8 : new Sprite ( 9 , 5 ) ,
9 : new Sprite ( 1 , 7 ) ,
10 : new Sprite ( 9 , 7 ) ,
11 : new Sprite ( 1 , 9 ) ,
12 : new Sprite ( 3 , 9 ) ,
13 : new Sprite ( 5 , 9 ) ,
14 : new Sprite ( 7 , 9 ) ,
15 : new Sprite ( 9 , 9 ) ,
2021-05-31 19:42:33 +00:00
}
2021-05-26 17:34:31 +00:00
2021-06-05 15:46:31 +00:00
for ( let i = 0 ; i < 16 ; i ++ ) app . stage . addChild ( sprites [ i ] . getSprite ( ) ) ;
2021-05-26 17:34:31 +00:00
2021-06-05 15:46:31 +00:00
// Red border
let red _border = generate _red _border ( new PIXI . Graphics ( ) ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( red _border ) ;
2021-06-05 15:46:31 +00:00
// White circles
let first _circle = generate _circle ( new PIXI . Graphics ( ) , 3 , 9 ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( first _circle ) ;
2021-06-05 15:46:31 +00:00
let second _circle = generate _circle ( new PIXI . Graphics ( ) , 5 , 9 ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( second _circle ) ;
2021-06-05 15:46:31 +00:00
let third _circle = generate _circle ( new PIXI . Graphics ( ) , 7 , 9 ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( third _circle ) ;
2021-05-31 19:42:33 +00:00
2021-06-05 15:46:31 +00:00
// Card stacks
let cards _1 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 3 , 3 , function ( ) {
console . log ( "1" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _1 ) ;
let cards _2 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 5 , 3 , function ( ) {
console . log ( "2" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _2 ) ;
let cards _3 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 7 , 3 , function ( ) {
console . log ( "3" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _3 ) ;
2021-05-31 19:42:33 +00:00
2021-06-05 15:46:31 +00:00
function generate _card _stack ( sprite , x , y , onclick ) {
sprite . x = sprite _size * x - sprite _size * 0.2 ;
sprite . y = sprite _size * y - sprite _size * 0.2 ;
sprite . width = sprite _size * 1.5 ;
sprite . height = sprite _size * 3 * 0.72 ;
sprite . interactive = true ;
sprite . on ( 'click' , onclick ) ;
return sprite
}
function generate _red _border ( graphics ) {
graphics . lineStyle ( sprite _size * 0.10 , 0x862323 , 1 ) ;
graphics . drawRect ( sprite _size * 9 - sprite _size * 0.2 , sprite _size * 9 - sprite _size * 0.2 , sprite _size * 1.5 , sprite _size * 1.5 ) ;
return graphics ;
}
function generate _circle ( graphics , x , y ) {
graphics . lineStyle ( 0 ) ;
graphics . beginFill ( 0xffffff , 1 ) ;
graphics . drawCircle ( sprite _size * x - sprite _size * 0.2 + sprite _size * 0.75 , sprite _size * y - sprite _size * 0.2 + sprite _size * 0.75 , sprite _size / 4 ) ;
graphics . endFill ( ) ;
return graphics ;
}
2021-05-31 19:42:33 +00:00
function generate _card ( s ) {
2021-06-01 11:24:52 +00:00
const card = new PIXI . Graphics ( ) ;
2021-06-05 15:46:31 +00:00
let start _x = game _board _size * 0.25 + 2.5 ;
let start _y = game _board _size / 2 - game _board _size * 0.72 / 2 + 2.5 ;
2021-06-01 11:24:52 +00:00
card . lineStyle ( 5 , 0x000000 , 1 ) ;
2021-06-05 15:46:31 +00:00
card . beginFill ( 0xffffff ) ;
card . drawRoundedRect ( start _x , start _y , game _board _size * 0.5 , game _board _size * 0.72 , 10 ) ;
2021-06-01 11:24:52 +00:00
card . endFill ( ) ;
2021-05-31 19:42:33 +00:00
const style = new PIXI . TextStyle ( {
fontFamily : 'Arial' ,
fontSize : 15 ,
wordWrap : true ,
2021-06-05 15:46:31 +00:00
wordWrapWidth : game _board _size * 0.5 - 10 ,
2021-05-31 19:42:33 +00:00
} ) ;
const basicText = new PIXI . Text ( s , style ) ;
basicText . x = start _x + 10 ;
basicText . y = start _y + 10 ;
2021-06-01 11:24:52 +00:00
card . addChild ( basicText ) ;
2021-06-05 15:46:31 +00:00
// const answer_1 = new PIXI.Text(s, style);
// answer_1.x = start_x + 10;
// answer_1.y = start_y + 100;
// card.addChild(answer_1);
// OK-Button
const ok = new PIXI . Graphics ( ) ;
ok . lineStyle ( 2 , 0x000000 , 1 ) ;
ok . beginFill ( 0xffffff ) ;
ok . drawRect ( start _x , start _y , game _board _size * 0.5 - 20 , 50 ) ;
ok . endFill ( ) ;
ok . x = 10 ;
ok . y = game _board _size * 0.72 - 60 ;
card . addChild ( ok ) ;
const ok _text = new PIXI . Text ( 'OK' , style ) ;
ok _text . x = start _x + ok . x + ok . width / 2 - ok _text . width / 2 ;
ok _text . y = start _y + ok . y + ok . height / 2 - ok _text . height / 2 ;
card . addChild ( ok _text ) ;
ok . interactive = true ;
ok . on ( 'click' , function ( ) {
console . log ( "OK" ) ;
} ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( card ) ;
}
2021-06-05 15:46:31 +00:00
2021-06-01 11:24:52 +00:00
function calculate _size ( ) {
if ( game . offsetWidth > game . offsetHeight ) {
return game . offsetHeight ;
} else {
return game . offsetWidth ;
}
2021-05-31 19:42:33 +00:00
}
// Resize
2021-06-01 11:24:52 +00:00
window . addEventListener ( 'resize' , resize ) ;
function resize ( ) {
game _board _size = calculate _size ( ) ;
2021-06-05 15:46:31 +00:00
sprite _size = Math . floor ( game _board _size / 11 ) ;
2021-06-01 11:24:52 +00:00
// Resize container
app . renderer . resize ( game _board _size , game _board _size ) ;
// Resize fields
for ( let i = 0 ; i < 16 ; i ++ ) {
sprites [ i ] . resize ( Math . floor ( game _board _size / 11 ) ) ;
}
// Resize red border
2021-06-05 15:46:31 +00:00
red _border . clear ( ) ;
red _border = generate _red _border ( new PIXI . Graphics ( ) ) ;
app . stage . addChild ( red _border ) ;
// Resize circles
first _circle . clear ( ) ;
first _circle = generate _circle ( new PIXI . Graphics ( ) , 3 , 9 ) ;
app . stage . addChild ( first _circle ) ;
second _circle . clear ( ) ;
second _circle = generate _circle ( new PIXI . Graphics ( ) , 5 , 9 ) ;
app . stage . addChild ( second _circle ) ;
third _circle . clear ( ) ;
third _circle = generate _circle ( new PIXI . Graphics ( ) , 7 , 9 ) ;
app . stage . addChild ( third _circle ) ;
2021-06-01 11:24:52 +00:00
2021-06-05 15:46:31 +00:00
// TODO card and card stacks
2021-06-01 11:24:52 +00:00
}
resize ( ) ;