Open Tibowl opened 4 years ago
Japanese Translation:
タイトル:耐久ゲージが黒になる
説明 或る艦の耐久のフル耐久よりほんの少し低ければ、戦闘画面中、耐久ゲージが黒になります。 緑色の計算では、端数処理のエラーが原因になります。 緑色(G)の数値(>=255.5)は256に切り上げ、最終的に色数値のオーバフローになります。 本来は0xFFFF00を用いるべきですが、0x1000000が使われてしまいます。 この現象の発生するか否かを判断する計算機があります。
スクリーンショット及び動画
バグの再現方法 バグを再現するために、必要な手順を説明してください:(存在しない場合は削除しても良い)
可能な修正方法
MathUtil
におきまして、getColor
関数を修正し、Math.round
ではなくMath.floor
を利用します。
そうすると、255.5は256に切り上げられないようになるため、オーバフローが発生しなくなります。
Description If a ship's HP is close to exactly 2/3 full, but slightly below it, its battle banner's HP bar becomes black. This is caused by some rounding error in the calculation of the green-ness of the color. The green color would become round(>=255.5) = 256, causing an overflow in the final color value, resulting in the color 0x1000000 being used instead of a color around 0xFFFF00. There's a calculator to check if/at which HP values this happens.
Screenshot and/or video![image](https://user-images.githubusercontent.com/5676386/88921528-fe208100-d26e-11ea-8159-b083d68b31a8.png)
Reproducing Steps to reproduce the behavior: (if applicable, otherwise remove this section)
Potential fix In
MathUtil
change thegetColor
function so it usesMath.floor
instead ofMath.round
so 255.5 doesn't get rounded to 256 and cause an overflow.