mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-19 04:06:43 -04:00
More palette index checks to avoid getting into a derpy state.
This commit is contained in:
parent
bc202641e8
commit
ac811de85d
@ -36,6 +36,12 @@ object PackedColor {
|
|||||||
|
|
||||||
def inflate(value: Int): Int
|
def inflate(value: Int): Int
|
||||||
|
|
||||||
|
def validate(value: Color) {
|
||||||
|
if (value.isPalette) {
|
||||||
|
throw new IllegalArgumentException("color palette not supported")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def deflate(value: Color): Byte
|
def deflate(value: Color): Byte
|
||||||
|
|
||||||
override def load(nbt: NBTTagCompound) {}
|
override def load(nbt: NBTTagCompound) {}
|
||||||
@ -48,12 +54,20 @@ object PackedColor {
|
|||||||
|
|
||||||
override def inflate(value: Int) = if (value == 0) 0x000000 else 0xFFFFFF
|
override def inflate(value: Int) = if (value == 0) 0x000000 else 0xFFFFFF
|
||||||
|
|
||||||
override def deflate(value: Color) = (if (value.value == 0) 0 else 1).toByte
|
override def deflate(value: Color) = {
|
||||||
|
(if (value.value == 0) 0 else 1).toByte
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class PaletteFormat extends ColorFormat {
|
abstract class PaletteFormat extends ColorFormat {
|
||||||
override def inflate(value: Int) = palette(math.max(0, math.min(palette.length - 1, value)))
|
override def inflate(value: Int) = palette(math.max(0, math.min(palette.length - 1, value)))
|
||||||
|
|
||||||
|
override def validate(value: Color) {
|
||||||
|
if (value.isPalette && (value.value < 0 || value.value >= palette.length)) {
|
||||||
|
throw new IllegalArgumentException("invalid palette index")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override def deflate(value: Color) =
|
override def deflate(value: Color) =
|
||||||
if (value.isPalette) (math.max(0, value.value) % palette.length).toByte
|
if (value.isPalette) (math.max(0, value.value) % palette.length).toByte
|
||||||
else palette.map(delta(value.value, _)).zipWithIndex.minBy(_._1)._2.toByte
|
else palette.map(delta(value.value, _)).zipWithIndex.minBy(_._1)._2.toByte
|
||||||
|
@ -26,15 +26,19 @@ class TextBuffer(var width: Int, var height: Int, initialFormat: PackedColor.Col
|
|||||||
def foreground = _foreground
|
def foreground = _foreground
|
||||||
|
|
||||||
def foreground_=(value: PackedColor.Color) = {
|
def foreground_=(value: PackedColor.Color) = {
|
||||||
|
format.validate(value)
|
||||||
_foreground = value
|
_foreground = value
|
||||||
packed = PackedColor.pack(_foreground, _background, _format)
|
packed = PackedColor.pack(_foreground, _background, _format)
|
||||||
|
this
|
||||||
}
|
}
|
||||||
|
|
||||||
def background = _background
|
def background = _background
|
||||||
|
|
||||||
def background_=(value: PackedColor.Color) = {
|
def background_=(value: PackedColor.Color) = {
|
||||||
|
format.validate(value)
|
||||||
_background = value
|
_background = value
|
||||||
packed = PackedColor.pack(_foreground, _background, _format)
|
packed = PackedColor.pack(_foreground, _background, _format)
|
||||||
|
this
|
||||||
}
|
}
|
||||||
|
|
||||||
def format = _format
|
def format = _format
|
||||||
|
Loading…
x
Reference in New Issue
Block a user