今天開始實作配點功能,考慮過後決定將每個技能都新增職業/興趣兩種選項,勾選之後各別和這兩項的點數連動。
也就是說,如果點了「話術」的興趣欄位,話術就會被算進興趣類型,加點時興趣配點會相應跟著減少。
今天完成的部分是讓checkbox能夠被偵測是否已選取,並能夠統計技能值的加總。
實作如下:
在HTML的綁定方法:
<div class="row">
<div class="col skillTypePoint">
<input type="checkbox" name="skill.skillName" value="carrer"
[checked]="skill.carrerChecked"
(change)="skill.carrerChecked = !skill.carrerChecked"
(change)="changeCarrerPoint()">
<span class="checkbox">職</span><br>
</div>
</div>
<div class="row">
<div class="col skillTypePoint">
<input type="checkbox" name="skill.skillName" value="hobby"
[checked]="skill.hobbyChecked"
(change)="skill.hobbyChecked = !skill.hobbyChecked"
(change)="changeHobbyPoint()">
<span class="checkbox">興</span><br>
</div>
</div>
TS寫法:
changeCarrerPoint() {
if (this.skill.carrerChecked) {
this.skill.carrerValue = this.skill.value;
}else{
this.skill.carrerValue =0;
}
}
changeHobbyPoint() {
if (this.skill.hobbyChecked) {
this.skill.hobbyValue = this.skill.value;
} else {
this.skill.hobbyValue = 0;
}
}
getSkillTotal() {
this.carrerTotal = 0;
this.hobbyTotal = 0;
setTimeout(() => {
for (let i = 0; i < this.skills.length; i++) {
this.carrerTotal += this.skills[i].carrerValue;
this.hobbyTotal += this.skills[i].hobbyValue;
}
}, 10);
}
之後就是要將職業/興趣總點數與各自能夠分配的點數綁定,這樣就完成配點功能了。
另外今天還修正了一個基礎數值沒有保底的BUG……之前寫的是random 18 以及random 6 to 18 ,但實際擲骰時最小點數是1,所以STR、DEX、POW、APP、CON的最小值應該是3,而EDU、SIZ、INT 的最小值則是8。
修改如下:
function random3to18() {
return Math.floor(Math.random() * 16) + 3;
}
function random8to18() {
return Math.floor(Math.random() * 11) + 8;
}
明天完成整個配點功能,接下來就來寫資料Save/Load啦!
= = = = = = = = = =
你今天的努力,
是否有跟未來的夢想
同一個等級?