2018-04-25 13:02:10 +02:00
|
|
|
package com.minelittlepony.pony.data;
|
2015-12-09 04:14:42 +01:00
|
|
|
|
2017-06-16 07:41:36 +02:00
|
|
|
import com.google.common.base.MoreObjects;
|
2018-04-25 13:02:10 +02:00
|
|
|
import com.minelittlepony.MineLittlePony;
|
2016-11-25 05:40:19 +01:00
|
|
|
|
2015-12-09 04:14:42 +01:00
|
|
|
import java.awt.image.BufferedImage;
|
2017-06-16 07:41:36 +02:00
|
|
|
import javax.annotation.concurrent.Immutable;
|
2015-12-09 04:14:42 +01:00
|
|
|
|
2018-04-25 21:29:49 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Implementation for IPonyData.
|
|
|
|
*
|
|
|
|
*/
|
2017-06-16 07:41:36 +02:00
|
|
|
@Immutable
|
2016-11-24 08:01:23 +01:00
|
|
|
public class PonyData implements IPonyData {
|
2017-06-16 07:41:36 +02:00
|
|
|
private final PonyRace race;
|
|
|
|
private final TailLengths tailSize;
|
|
|
|
private final PonyGender gender;
|
|
|
|
private final PonySize size;
|
|
|
|
private final int glowColor;
|
2017-06-13 05:55:50 +02:00
|
|
|
|
|
|
|
public PonyData() {
|
2018-04-27 13:49:33 +02:00
|
|
|
race = PonyRace.HUMAN;
|
|
|
|
tailSize = TailLengths.FULL;
|
|
|
|
gender = PonyGender.MARE;
|
|
|
|
size = PonySize.NORMAL;
|
|
|
|
glowColor = 0x4444aa;
|
2017-06-13 05:55:50 +02:00
|
|
|
}
|
2018-04-27 13:49:33 +02:00
|
|
|
|
2018-04-25 13:00:18 +02:00
|
|
|
private PonyData(BufferedImage image) {
|
2018-04-27 13:49:33 +02:00
|
|
|
race = TriggerPixels.RACE.readValue(image);
|
|
|
|
tailSize = TriggerPixels.TAIL.readValue(image);
|
|
|
|
size = TriggerPixels.SIZE.readValue(image);
|
|
|
|
gender = TriggerPixels.GENDER.readValue(image);
|
|
|
|
glowColor = TriggerPixels.GLOW.readColor(image, -1);
|
2017-06-13 05:55:50 +02:00
|
|
|
}
|
2015-12-09 04:14:42 +01:00
|
|
|
|
2018-04-24 14:55:32 +02:00
|
|
|
@Override
|
2015-12-09 04:14:42 +01:00
|
|
|
public PonyRace getRace() {
|
|
|
|
return race;
|
|
|
|
}
|
|
|
|
|
2018-04-24 14:55:32 +02:00
|
|
|
@Override
|
2015-12-09 04:14:42 +01:00
|
|
|
public TailLengths getTail() {
|
|
|
|
return tailSize;
|
|
|
|
}
|
|
|
|
|
2018-04-24 14:55:32 +02:00
|
|
|
@Override
|
2015-12-09 04:14:42 +01:00
|
|
|
public PonyGender getGender() {
|
|
|
|
return gender;
|
|
|
|
}
|
|
|
|
|
2018-04-24 14:55:32 +02:00
|
|
|
@Override
|
2015-12-09 04:14:42 +01:00
|
|
|
public PonySize getSize() {
|
2016-01-26 09:16:11 +01:00
|
|
|
return MineLittlePony.getConfig().sizes ? size : PonySize.NORMAL;
|
2015-12-09 04:14:42 +01:00
|
|
|
}
|
|
|
|
|
2018-04-24 14:55:32 +02:00
|
|
|
@Override
|
2015-12-09 04:14:42 +01:00
|
|
|
public int getGlowColor() {
|
|
|
|
return glowColor;
|
|
|
|
}
|
|
|
|
|
2018-04-24 14:55:32 +02:00
|
|
|
@Override
|
2016-05-22 05:56:50 +02:00
|
|
|
public boolean hasMagic() {
|
2018-04-27 13:49:33 +02:00
|
|
|
return race != null && race.hasHorn() && glowColor != 0;
|
2016-05-22 05:56:50 +02:00
|
|
|
}
|
|
|
|
|
2017-06-16 07:41:36 +02:00
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
return MoreObjects.toStringHelper(this)
|
|
|
|
.add("race", race)
|
|
|
|
.add("tailSize", tailSize)
|
|
|
|
.add("gender", gender)
|
|
|
|
.add("size", size)
|
|
|
|
.add("glowColor", "#" + Integer.toHexString(glowColor))
|
|
|
|
.toString();
|
|
|
|
}
|
|
|
|
|
2018-04-25 21:29:49 +02:00
|
|
|
/**
|
|
|
|
* Parses an image buffer into a new IPonyData representing the values stored in it's individual trigger pixels.
|
|
|
|
*/
|
2018-04-24 14:55:32 +02:00
|
|
|
static IPonyData parse(BufferedImage image) {
|
2018-04-25 13:00:18 +02:00
|
|
|
return new PonyData(image);
|
2015-12-09 04:14:42 +01:00
|
|
|
}
|
|
|
|
}
|