locked texture
This commit is contained in:
parent
90eb3247e0
commit
af9e0c481a
@ -34,8 +34,8 @@ body { background-color: black; }
|
|||||||
}
|
}
|
||||||
|
|
||||||
@keyframes spinCube {
|
@keyframes spinCube {
|
||||||
0% { transform: translateZ(20px) rotateX( 0deg) rotateY( 0deg) rotateZ( 0deg); }
|
0% { transform: translateZ(20px) rotateX( 0deg) rotateY( 0deg); }
|
||||||
100% { transform: translateZ(20px) rotateX(360deg) rotateY( 0deg) rotateZ(360deg); }
|
100% { transform: translateZ(20px) rotateX(360deg) rotateY(360deg); }
|
||||||
}
|
}
|
||||||
|
|
||||||
.face {
|
.face {
|
||||||
|
BIN
images/edge.png
BIN
images/edge.png
Binary file not shown.
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 6.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 761 B After Width: | Height: | Size: 11 KiB |
@ -189,7 +189,7 @@ class Mino extends THREE.Object3D {
|
|||||||
super()
|
super()
|
||||||
this.color = color
|
this.color = color
|
||||||
this.offset = offset
|
this.offset = offset
|
||||||
this.velocity = P(50 - 100 * Math.random(), 50 - 100 * Math.random(), 50 - 100 * Math.random())
|
this.velocity = P(50 - 100 * Math.random(), 70 - 100 * Math.random(), 50 - 100 * Math.random())
|
||||||
this.rotationAngle = P(Math.random(), Math.random(), Math.random()).normalize()
|
this.rotationAngle = P(Math.random(), Math.random(), Math.random()).normalize()
|
||||||
this.angularVelocity = 5 - 10 * Math.random()
|
this.angularVelocity = 5 - 10 * Math.random()
|
||||||
this.constructor.meshes.add(this)
|
this.constructor.meshes.add(this)
|
||||||
@ -223,6 +223,7 @@ class Tetromino extends THREE.Group {
|
|||||||
constructor(position) {
|
constructor(position) {
|
||||||
super()
|
super()
|
||||||
if (position) this.position.copy(position)
|
if (position) this.position.copy(position)
|
||||||
|
this.offset = this.offset.clone()
|
||||||
this.minoesPosition[FACING.NORTH].forEach(() => this.add(new Mino(this.freeColor, this.offset)))
|
this.minoesPosition[FACING.NORTH].forEach(() => this.add(new Mino(this.freeColor, this.offset)))
|
||||||
this.facing = FACING.NORTH
|
this.facing = FACING.NORTH
|
||||||
this.rotatedLast = false
|
this.rotatedLast = false
|
||||||
@ -243,8 +244,10 @@ class Tetromino extends THREE.Group {
|
|||||||
set locking(locking) {
|
set locking(locking) {
|
||||||
if (locking) {
|
if (locking) {
|
||||||
this.color = this.lockingColor
|
this.color = this.lockingColor
|
||||||
|
this.offset.y = 2
|
||||||
} else {
|
} else {
|
||||||
this.color = this.freeColor
|
this.color = this.freeColor
|
||||||
|
this.offset.y = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,6 +323,7 @@ Ghost.prototype.freeColor = new THREE.Color(COLORS.GHOST)
|
|||||||
Ghost.prototype.minoesPosition = [
|
Ghost.prototype.minoesPosition = [
|
||||||
[P(0, 0, 0), P(0, 0, 0), P(0, 0, 0), P(0, 0, 0)],
|
[P(0, 0, 0), P(0, 0, 0), P(0, 0, 0), P(0, 0, 0)],
|
||||||
]
|
]
|
||||||
|
Ghost.prototype.offset = P(0, 1)
|
||||||
|
|
||||||
|
|
||||||
class I extends Tetromino { }
|
class I extends Tetromino { }
|
||||||
@ -336,8 +340,8 @@ I.prototype.srs = [
|
|||||||
{ [ROTATION.CW]: [P(0, 0), P(1, 0), P(-2, 0), P(1, -2), P(-2, 1)], [ROTATION.CCW]: [P(0, 0), P(-2, 0), P(1, 0), P(-2, -1), P(1, 2)] },
|
{ [ROTATION.CW]: [P(0, 0), P(1, 0), P(-2, 0), P(1, -2), P(-2, 1)], [ROTATION.CCW]: [P(0, 0), P(-2, 0), P(1, 0), P(-2, -1), P(1, 2)] },
|
||||||
]
|
]
|
||||||
I.prototype.freeColor = new THREE.Color(COLORS.I)
|
I.prototype.freeColor = new THREE.Color(COLORS.I)
|
||||||
I.prototype.offset = P(0, 1)
|
I.prototype.offset = P(0, 0)
|
||||||
I.prototype.ghostOffset = P(0, 0)
|
I.prototype.ghostOffset = P(0, 1)
|
||||||
|
|
||||||
class J extends Tetromino { }
|
class J extends Tetromino { }
|
||||||
J.prototype.minoesPosition = [
|
J.prototype.minoesPosition = [
|
||||||
@ -347,8 +351,8 @@ J.prototype.minoesPosition = [
|
|||||||
[P(0, 1), P(-1, -1), P(0, 0), P(0, -1)],
|
[P(0, 1), P(-1, -1), P(0, 0), P(0, -1)],
|
||||||
]
|
]
|
||||||
J.prototype.freeColor = new THREE.Color(COLORS.J)
|
J.prototype.freeColor = new THREE.Color(COLORS.J)
|
||||||
J.prototype.offset = P(1, 1)
|
J.prototype.offset = P(1, 0)
|
||||||
J.prototype.ghostOffset = P(1, 0)
|
J.prototype.ghostOffset = P(1, 1)
|
||||||
|
|
||||||
class L extends Tetromino {
|
class L extends Tetromino {
|
||||||
}
|
}
|
||||||
@ -359,8 +363,8 @@ L.prototype.minoesPosition = [
|
|||||||
[P(0, 1), P(0, 0), P(0, -1), P(-1, 1)],
|
[P(0, 1), P(0, 0), P(0, -1), P(-1, 1)],
|
||||||
]
|
]
|
||||||
L.prototype.freeColor = new THREE.Color(COLORS.L)
|
L.prototype.freeColor = new THREE.Color(COLORS.L)
|
||||||
L.prototype.offset = P(2, 1)
|
L.prototype.offset = P(2, 0)
|
||||||
L.prototype.ghostOffset = P(2, 0)
|
L.prototype.ghostOffset = P(2, 1)
|
||||||
|
|
||||||
class O extends Tetromino { }
|
class O extends Tetromino { }
|
||||||
O.prototype.minoesPosition = [
|
O.prototype.minoesPosition = [
|
||||||
@ -370,8 +374,8 @@ O.prototype.srs = [
|
|||||||
{ [ROTATION.CW]: [], [ROTATION.CCW]: [] }
|
{ [ROTATION.CW]: [], [ROTATION.CCW]: [] }
|
||||||
]
|
]
|
||||||
O.prototype.freeColor = new THREE.Color(COLORS.O)
|
O.prototype.freeColor = new THREE.Color(COLORS.O)
|
||||||
O.prototype.offset = P(3, 1)
|
O.prototype.offset = P(3, 0)
|
||||||
O.prototype.ghostOffset = P(3, 0)
|
O.prototype.ghostOffset = P(3, 1)
|
||||||
|
|
||||||
class S extends Tetromino { }
|
class S extends Tetromino { }
|
||||||
S.prototype.minoesPosition = [
|
S.prototype.minoesPosition = [
|
||||||
@ -381,8 +385,8 @@ S.prototype.minoesPosition = [
|
|||||||
[P(-1, 1), P(0, 0), P(-1, 0), P(0, -1)],
|
[P(-1, 1), P(0, 0), P(-1, 0), P(0, -1)],
|
||||||
]
|
]
|
||||||
S.prototype.freeColor = new THREE.Color(COLORS.S)
|
S.prototype.freeColor = new THREE.Color(COLORS.S)
|
||||||
S.prototype.offset = P(4, 1)
|
S.prototype.offset = P(4, 0)
|
||||||
S.prototype.ghostOffset = P(4, 0)
|
S.prototype.ghostOffset = P(4, 1)
|
||||||
|
|
||||||
class T extends Tetromino {
|
class T extends Tetromino {
|
||||||
get tSpin() {
|
get tSpin() {
|
||||||
@ -410,8 +414,8 @@ T.prototype.tSlots = [
|
|||||||
[P(-1, -1), P(-1, 1), P(1, 1), P(1, -1)],
|
[P(-1, -1), P(-1, 1), P(1, 1), P(1, -1)],
|
||||||
]
|
]
|
||||||
T.prototype.freeColor = new THREE.Color(COLORS.T)
|
T.prototype.freeColor = new THREE.Color(COLORS.T)
|
||||||
T.prototype.offset = P(5, 1)
|
T.prototype.offset = P(5, 0)
|
||||||
T.prototype.ghostOffset = P(5, 0)
|
T.prototype.ghostOffset = P(5, 1)
|
||||||
|
|
||||||
class Z extends Tetromino { }
|
class Z extends Tetromino { }
|
||||||
Z.prototype.minoesPosition = [
|
Z.prototype.minoesPosition = [
|
||||||
@ -421,8 +425,8 @@ Z.prototype.minoesPosition = [
|
|||||||
[P(0, 1), P(-1, 0), P(0, 0), P(-1, -1)]
|
[P(0, 1), P(-1, 0), P(0, 0), P(-1, -1)]
|
||||||
]
|
]
|
||||||
Z.prototype.freeColor = new THREE.Color(COLORS.Z)
|
Z.prototype.freeColor = new THREE.Color(COLORS.Z)
|
||||||
Z.prototype.offset = P(6, 1)
|
Z.prototype.offset = P(6, 0)
|
||||||
Z.prototype.ghostOffset = P(6, 0)
|
Z.prototype.ghostOffset = P(6, 1)
|
||||||
|
|
||||||
|
|
||||||
class Playfield extends THREE.Group {
|
class Playfield extends THREE.Group {
|
||||||
@ -464,8 +468,8 @@ class Playfield extends THREE.Group {
|
|||||||
.lineTo(COLUMNS, 0)
|
.lineTo(COLUMNS, 0)
|
||||||
.lineTo(COLUMNS, SKYLINE)
|
.lineTo(COLUMNS, SKYLINE)
|
||||||
.lineTo(COLUMNS + 1, SKYLINE)
|
.lineTo(COLUMNS + 1, SKYLINE)
|
||||||
.lineTo(COLUMNS + 1, -.5)
|
.lineTo(COLUMNS + 1, -1/3)
|
||||||
.lineTo(-1, -.5)
|
.lineTo(-1, -1/3)
|
||||||
.moveTo(-1, SKYLINE)
|
.moveTo(-1, SKYLINE)
|
||||||
const retroEdgeTexture = new THREE.TextureLoader(loadingManager).load("images/edge.png", (texture) => {
|
const retroEdgeTexture = new THREE.TextureLoader(loadingManager).load("images/edge.png", (texture) => {
|
||||||
texture.wrapS = THREE.RepeatWrapping
|
texture.wrapS = THREE.RepeatWrapping
|
||||||
@ -494,7 +498,7 @@ class Playfield extends THREE.Group {
|
|||||||
metalness: 0.9,
|
metalness: 0.9,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
back.position.set(COLUMNS/2, SKYLINE/2, 0)
|
back.position.set(COLUMNS/2, SKYLINE/2)
|
||||||
this.retroEdge.add(back)
|
this.retroEdge.add(back)
|
||||||
this.retroEdge.visible = false
|
this.retroEdge.visible = false
|
||||||
this.add(this.retroEdge)
|
this.add(this.retroEdge)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user