game: add: goal work
This commit is contained in:
@ -43,26 +43,6 @@ class Player
|
||||
* @type {Segment}
|
||||
*/
|
||||
this.rail = rail === undefined ? new Segment() : rail;
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.rail_size = Math.abs(this.rail.stop.x - this.rail.start.x) + Math.abs(this.rail.stop.y - this.rail.start.y);
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.paddle_size = this.rail_size * this.game.config.paddle_ratio;
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.diff_x = this.rail.stop.x - this.rail.start.x;
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.diff_y = this.rail.stop.y - this.rail.start.y;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -85,17 +65,29 @@ class Player
|
||||
ctx.lineTo(this.rail.stop.x, this.rail.stop.y);
|
||||
return;
|
||||
}
|
||||
let paddle_pos = new Point(this.rail.start.x + this.diff_x * this.position,
|
||||
this.rail.start.y + this.diff_y * this.position);
|
||||
|
||||
let diff_x = this.rail.stop.x - this.rail.start.x,
|
||||
diff_y = this.rail.stop.y - this.rail.start.y;
|
||||
|
||||
let rail_length = this.rail.len(),
|
||||
paddle_length = rail_length * this.game.config.paddle_ratio;
|
||||
|
||||
let paddle_center = new Point(this.rail.start.x + diff_x * this.position,
|
||||
this.rail.start.y + diff_y * this.position);
|
||||
|
||||
let paddle_start_x = paddle_center.x - (diff_x * (paddle_length / 2 / rail_length)),
|
||||
paddle_start_y = paddle_center.y - (diff_y * (paddle_length / 2 / rail_length)),
|
||||
paddle_stop_x = paddle_center.x + (diff_x * (paddle_length / 2 / rail_length)),
|
||||
paddle_stop_y = paddle_center.y + (diff_y * (paddle_length / 2 / rail_length));
|
||||
|
||||
let start_x = paddle_pos.x - (this.diff_x * (this.paddle_size / 2 / this.rail_size)),
|
||||
start_y = paddle_pos.y - (this.diff_y * (this.paddle_size / 2 / this.rail_size)),
|
||||
stop_x = paddle_pos.x + (this.diff_x * (this.paddle_size / 2 / this.rail_size)),
|
||||
stop_y = paddle_pos.y + (this.diff_y * (this.paddle_size / 2 / this.rail_size));
|
||||
let paddle_start = new Point(paddle_start_x, paddle_start_y),
|
||||
paddle_stop = new Point (paddle_stop_x, paddle_stop_y);
|
||||
|
||||
let paddle = new Segment(paddle_start, paddle_stop);
|
||||
|
||||
console.log(paddle)
|
||||
|
||||
ctx.moveTo(start_x, start_y);
|
||||
ctx.lineTo(stop_x, stop_y);
|
||||
paddle.draw(ctx);
|
||||
}
|
||||
|
||||
from_json(data)
|
||||
@ -125,26 +117,6 @@ class Player
|
||||
*/
|
||||
this.rail = this.rail.from_json(data.rail);
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.rail_size = Math.abs(this.rail.stop.x - this.rail.start.x) + Math.abs(this.rail.stop.y - this.rail.start.y);
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.paddle_size = this.rail_size * this.game.config.paddle_ratio;
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.diff_x = this.rail.stop.x - this.rail.start.x;
|
||||
|
||||
/**
|
||||
* @type {Number}
|
||||
*/
|
||||
this.diff_y = this.rail.stop.y - this.rail.start.y;
|
||||
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
@ -8,8 +8,32 @@ class Segment
|
||||
*/
|
||||
constructor(start, stop)
|
||||
{
|
||||
/**
|
||||
* @type {Point}
|
||||
*/
|
||||
this.start = start === undefined ? new Point() : start;
|
||||
|
||||
/**
|
||||
* @type {Point}
|
||||
*/
|
||||
this.stop = stop === undefined ? new Point() : stop;
|
||||
|
||||
}
|
||||
|
||||
angle()
|
||||
{
|
||||
let x = this.start.x - this.stop.x,
|
||||
y = this.start.y - this.stop.y;
|
||||
|
||||
return Math.atan2(y, x);
|
||||
}
|
||||
|
||||
len()
|
||||
{
|
||||
let x = this.start.x - this.stop.x,
|
||||
y = this.start.y - this.stop.y;
|
||||
|
||||
return (x ** 2 + y ** 2) ** (1 / 2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user