aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/roomedit
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/roomedit')
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditAColor.java41
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditFloat.java82
-rwxr-xr-xsrc/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java1
3 files changed, 109 insertions, 15 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditAColor.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditAColor.java
index 1dc52921..1a277cb1 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditAColor.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditAColor.java
@@ -54,6 +54,7 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
Color color = (Color) parameter2.getNewData();
Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), hsv);
+ alpha = color.getAlpha() / 255.0f;
{
h = new MFloatSelectionButton(hsv[0] * 360);
@@ -99,31 +100,33 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
a.setOnUpdate(new Runnable() {
@Override
public void run() {
- alpha = v.getData() / 100;
+ alpha = a.getData() / 100;
update();
}
});
- MLabelAndElement mLabelAndElement = new MLabelAndElement("V", v);
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("A", a);
mLabelAndElement.setBounds(new Rectangle(0,20,getBounds().width,20));
add(mLabelAndElement);
}
}
private float[] hsv = new float[3];
- private float alpha;
+ private float alpha = 0;
public void update() {
if (hsv[2] > 1) hsv[2] = 1;
if (hsv[2] < 0) hsv[2] = 0;
if (hsv[1] > 1) hsv[1] = 1;
if (hsv[1] < 0) hsv[1] = 0;
- parameter.setNewData(new Color(Color.HSBtoRGB(hsv[0], hsv[1], hsv[2])));
+ parameter.setNewData(new AColor(Color.HSBtoRGB(hsv[0], hsv[1], hsv[2]) & 0xffffff | ((int)(alpha * 255)) << 24, true ));
h.setData((float) Math.floor(hsv[0] * 360));
s.setData((float) Math.floor(hsv[1] * 100));
v.setData((float) Math.floor(hsv[2] * 100));
+ a.setData((float) Math.floor(alpha * 100));
h.updateSelected();
s.updateSelected();
v.updateSelected();
+ a.updateSelected();
}
@Override
public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
@@ -144,15 +147,18 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
float g = (rgb >> 8 & 255) / 255.0f;
float b = (rgb & 255) / 255.0f;
GL11.glBegin(GL11.GL_TRIANGLES);
- GL11.glColor4f(0,0,0,1);GL11.glVertex3i(25+width ,45, 0);
- GL11.glColor4f(0,0,0,1);GL11.glVertex3i(10+width , 45, 0);
- GL11.glColor4f(r,g,b,1);GL11.glVertex3i(25+width , 45+width, 0);
+ GL11.glColor4f(0,0,0,alpha);GL11.glVertex3i(25+width ,45, 0);
+ GL11.glColor4f(0,0,0,alpha);GL11.glVertex3i(10+width , 45, 0);
+ GL11.glColor4f(r,g,b,alpha);GL11.glVertex3i(25+width , 45+width, 0);
- GL11.glColor4f(0,0,0,1); GL11.glVertex3i(10+width , 45, 0);
- GL11.glColor4f(r,g,b,1);GL11.glVertex3i(10+width , 45 + width, 0);
- GL11.glColor4f(r,g,b,1);GL11.glVertex3i(25+width , 45+width, 0);
+ GL11.glColor4f(0,0,0,alpha); GL11.glVertex3i(10+width , 45, 0);
+ GL11.glColor4f(r,g,b,alpha);GL11.glVertex3i(10+width , 45 + width, 0);
+ GL11.glColor4f(r,g,b,alpha);GL11.glVertex3i(25+width , 45+width, 0);
GL11.glEnd();
-
+ rgb = Color.HSBtoRGB(hsv[0], hsv[1], hsv[2]);
+ r = (rgb >> 16 & 255) / 255.0f;
+ g = (rgb >> 8 & 255) / 255.0f;
+ b = (rgb & 255) / 255.0f;
GL11.glBegin(GL11.GL_TRIANGLES);
GL11.glColor4f(r,g,b,0);GL11.glVertex3i(50+width ,45, 0);
GL11.glColor4f(r,g,b,0);GL11.glVertex3i(35+width , 45, 0);
@@ -169,7 +175,7 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
float cy = 45 + radius;
GL11.glBegin(GL11.GL_TRIANGLE_FAN);
- GL11.glColor4f(1,1,1,1);
+ GL11.glColor4f(1,1,1,alpha);
GL11.glVertex3f(cx,cy,0);
for (int i = 0; i <= 360; i++) {
float rad = 3.141592653f * i / 180;
@@ -177,7 +183,7 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
float r2 = (rgb2 >> 16 & 255) / 255.0f;
float g2 = (rgb2 >> 8 & 255) / 255.0f;
float b2 = (rgb2 & 255) / 255.0f;
- GL11.glColor4f(r2,g2,b2, 1);
+ GL11.glColor4f(r2,g2,b2, alpha);
GL11.glVertex3f(MathHelper.cos(rad) * radius + cx, MathHelper.sin(rad) * radius + cy, 0);
}
GL11.glEnd();
@@ -199,6 +205,11 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
worldrenderer.pos(27+width, 45 + (hsv[2]) * width, 0.5).endVertex();
tessellator.draw();
+ worldrenderer.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION);
+ worldrenderer.pos(33+width, 45 + (alpha) * width, 0.5).endVertex();
+ worldrenderer.pos(52+width, 45 + (alpha) * width, 0.5).endVertex();
+ tessellator.draw();
+
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_BLEND);
GL11.glColor4f(1,1,1,1);
@@ -234,7 +245,7 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
{
if (35+width <= relMouseX && relMouseX <= 50 + width &&
45 <= relMouseY && relMouseY <= 45 + width) {
- hsv[2] = (relMouseY - 45) / (float)width;
+ alpha = (relMouseY - 45) / (float)width;
selected = 3;
}
}
@@ -243,7 +254,7 @@ public class ValueEditAColor extends MPanel implements ValueEdit<AColor> {
@Override
public void mouseClickMove(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int clickedMouseButton, long timeSinceLastClick) {
- int width = getBounds().width - 30;
+ int width = getBounds().width - 60;
float radius = width / 2f;
float circleX = 5 + radius;
float circleY = 45 + radius;
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditFloat.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditFloat.java
new file mode 100755
index 00000000..33520f89
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditFloat.java
@@ -0,0 +1,82 @@
+package kr.syeyoung.dungeonsguide.roomedit.valueedit;
+
+import kr.syeyoung.dungeonsguide.roomedit.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MFloatSelectionButton;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MIntegerSelectionButton;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MLabel;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MLabelAndElement;
+
+import java.awt.*;
+
+public class ValueEditFloat extends MPanel implements ValueEdit<Float> {
+ private Parameter parameter;
+
+
+ @Override
+ public void renderWorld(float partialTicks) {
+
+ }
+ public ValueEditFloat(final Parameter parameter2) {
+ this.parameter = parameter2;
+ {
+ MLabel label = new MLabel() {
+ @Override
+ public String getText() {
+ return parameter.getPreviousData().toString();
+ }
+ };
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("Prev",label);
+ mLabelAndElement.setBounds(new Rectangle(0,0,getBounds().width,20));
+ add(mLabelAndElement);
+ }
+ {
+ float newData = (Float) parameter.getNewData();
+ final MFloatSelectionButton textField = new MFloatSelectionButton(newData);
+ textField.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ parameter.setNewData(textField.getData());
+ }
+ });
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("New",textField);
+ mLabelAndElement.setBounds(new Rectangle(0,20,getBounds().width,20));
+ add(mLabelAndElement);
+ }
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ for (MPanel panel :getChildComponents()){
+ panel.setSize(new Dimension(getBounds().width, 20));
+ }
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditFloat> {
+
+ @Override
+ public ValueEditFloat createValueEdit(Parameter parameter) {
+ return new ValueEditFloat(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return 0;
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ return object;
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
index 001f5bc7..33c9d61b 100755
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
@@ -28,6 +28,7 @@ public class ValueEditRegistry {
valueEditMap.put(String.class.getName(), new ValueEditString.Generator());
valueEditMap.put(Boolean.class.getName(), new ValueEditBoolean.Generator());
valueEditMap.put(Integer.class.getName(), new ValueEditInteger.Generator());
+ valueEditMap.put(Float.class.getName(), new ValueEditFloat.Generator());
valueEditMap.put(OffsetPoint.class.getName(), new ValueEditOffsetPoint.Generator());
valueEditMap.put(OffsetPointSet.class.getName(), new ValueEditOffsetPointSet.Generator());
valueEditMap.put(Color.class.getName(), new ValueEditColor.Generator());