amethyst / amethyst/rustrogueliketutorial

RandomTable.roll() returning None fairly freqently.

未關閉
#205 1 則留言 1 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Rust
星號
970
分支
166
PR 合併指標
30 天內沒有已合併 PR

描述

To see the problem in action, get to a random map from chapter 45 on-wards.
The message "WARNING: We don't know how to spawn [None]!" should show up a number of times in the log.

Currently, whenever you roll 0, or exactly the sum of a number of item weights, nothing is spawned.
For example, if the first few items are weighted at [1,3,2,3,1...], then roll() would return "None" if the rng hits 0,1,4,6,9 or 10.
I'm assuming this is unintended behavior, but you can see pretty clearly why this happens in the code:
```rust
while roll > 0 {
if roll < self.entries[index].weight {
return self.entries[index].name.clone();
}

roll -= self.entries[index].weight;
index += 1;
}
```
There are two easy fixes that I can see. Both effectively just looping more:
```rust
while roll >= 0 { ...
```
or
```rust
while index < self.entries.len() { ..
```

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。