Skip to content

Commit 0c762ac

Browse files
committed
Fix the init speed and increase/decrease speed
1 parent a8d62d3 commit 0c762ac

File tree

5 files changed

+33
-16
lines changed

5 files changed

+33
-16
lines changed
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
<p>Level</p>
2-
<t-number [num]="speed$ | async"
2+
<t-number *ngIf="hasCurrent$ | async; else initSpeedTmpl"
3+
[num]="speed$ | async"
34
[length]="1">
4-
</t-number>
5+
</t-number>
6+
<ng-template #initSpeedTmpl>
7+
<t-number [num]="initSpeed$ | async"
8+
[length]="1">
9+
</t-number>
10+
</ng-template>

src/app/components/level/level.component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ import { TetrisQuery } from '@trungk18/state/tetris/tetris.query';
1010
})
1111
export class LevelComponent implements OnInit {
1212
speed$: Observable<Speed>;
13+
initSpeed$: Observable<Speed>;
14+
hasCurrent$: Observable<boolean>;
15+
1316
constructor(private _query: TetrisQuery) {}
1417

1518
ngOnInit(): void {
1619
this.speed$ = this._query.speed$;
20+
this.hasCurrent$ = this._query.hasCurrent$;
21+
this.initSpeed$ = this._query.initSpeed$;
1722
}
1823
}

src/app/state/tetris/tetris.query.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export class TetrisQuery extends Query<TetrisState> {
5252
clearedLines$ = this.select('clearedLines');
5353
initLine$ = this.select('initLine');
5454
speed$ = this.select('speed');
55+
initSpeed$ = this.select('initSpeed');
5556
max$ = this.select('max');
5657

5758
isShowLogo$ = combineLatest(this.gameState$, this.select('current')).pipe(

src/app/state/tetris/tetris.service.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,15 @@ export class TetrisService {
4646
this._setCurrentPiece(this._next);
4747
this._setNext();
4848
}
49-
let { initLine, speed } = this._query.raw;
49+
let { initLine, initSpeed } = this._query.raw;
5050
this._store.update({
5151
points: 0,
5252
gameState: GameState.Started,
53-
matrix: MatrixUtil.getStartBoard(initLine)
53+
matrix: MatrixUtil.getStartBoard(initLine),
54+
speed: initSpeed
5455
});
5556
this._unsubscribe();
56-
this.auto(MatrixUtil.getSpeedDelay(speed));
57+
this.auto(MatrixUtil.getSpeedDelay(initSpeed));
5758
this._setLocked(false);
5859
}
5960

@@ -153,18 +154,18 @@ export class TetrisService {
153154
}
154155

155156
decreaseLevel() {
156-
let { speed } = this._query.raw;
157-
let newSpeed = (speed - 1 < 1 ? 6 : speed - 1) as Speed;
157+
let { initSpeed } = this._query.raw;
158+
let newSpeed = (initSpeed - 1 < 1 ? 6 : initSpeed - 1) as Speed;
158159
this._store.update({
159-
speed: newSpeed
160+
initSpeed: newSpeed
160161
});
161162
}
162163

163164
increaseLevel() {
164-
let { speed } = this._query.raw;
165-
let newSpeed = (speed + 1 > 6 ? 1 : speed + 1) as Speed;
165+
let { initSpeed } = this._query.raw;
166+
let newSpeed = (initSpeed + 1 > 6 ? 1 : initSpeed + 1) as Speed;
166167
this._store.update({
167-
speed: newSpeed
168+
initSpeed: newSpeed
168169
});
169170
}
170171

@@ -313,10 +314,10 @@ export class TetrisService {
313314
return;
314315
}
315316
this._soundManager.clear();
316-
let { points, clearedLines, speed } = this._query.raw;
317+
let { points, clearedLines, speed, initSpeed } = this._query.raw;
317318
let newLines = clearedLines + numberOfClearedLines;
318319
let newPoints = this._getPoints(numberOfClearedLines, points);
319-
let newSpeed = this._getSpeed(newLines);
320+
let newSpeed = this._getSpeed(newLines, initSpeed);
320321

321322
this._store.update({
322323
points: newPoints,
@@ -330,9 +331,11 @@ export class TetrisService {
330331
}
331332
}
332333

333-
private _getSpeed(totalLines: number): Speed {
334-
let newSpeed = Math.floor(totalLines / MatrixUtil.Height);
335-
return <Speed>(newSpeed > 6 ? 6 : newSpeed);
334+
private _getSpeed(totalLines: number, initSpeed: number): Speed {
335+
let addedSpeed = Math.floor(totalLines / MatrixUtil.Height);
336+
let newSpeed = <Speed>(initSpeed + addedSpeed);
337+
newSpeed = newSpeed > 6 ? 6 : newSpeed;
338+
return newSpeed;
336339
}
337340

338341
private _getPoints(numberOfClearedLines: number, points: number): number {

src/app/state/tetris/tetris.store.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export interface TetrisState {
1515
points: number;
1616
locked: boolean;
1717
sound: boolean;
18+
initSpeed: Speed;
1819
speed: Speed;
1920
initLine: number;
2021
clearedLines: number;
@@ -33,6 +34,7 @@ export function createInitialState(pieceFactory: PieceFactory): TetrisState {
3334
sound: true,
3435
initLine: 0,
3536
clearedLines: 0,
37+
initSpeed: 1,
3638
speed: 1,
3739
gameState: GameState.Loading,
3840
saved: null,

0 commit comments

Comments
 (0)