Skip to content

Commit 375b83c

Browse files
Merge pull request #14 from FreakingChicken/master
Added Terrain previews in the type selector
2 parents 418c124 + b304bc8 commit 375b83c

File tree

12 files changed

+223
-62
lines changed

12 files changed

+223
-62
lines changed

src/main/java/com/woogleFX/editorObjects/attributes/dataTypes/Color.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ public Color(int a, int r, int g, int b){
3838
this.b = b;
3939
}
4040

41+
public Color(double a, double r, double g, double b){
42+
this.a = (int) Math.round(255 * a);
43+
this.r = (int) Math.round(255 * r);
44+
this.g = (int) Math.round(255 * g);
45+
this.b = (int) Math.round(255 * b);
46+
}
47+
4148
public static Color parse(String input){
4249

4350
if (input.equals("1")) return new Color(255, 255, 255, 255);

src/main/java/com/woogleFX/engine/fx/FXPropertiesView.java

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.woogleFX.engine.undoHandling.userActions.AttributeChangeAction;
1717
import com.worldOfGoo.resrc.ResrcImage;
1818
import com.worldOfGoo2.util.ItemHelper;
19+
import com.worldOfGoo2.util.TerrainHelper;
1920
import javafx.application.Platform;
2021
import javafx.geometry.Bounds;
2122
import javafx.geometry.Insets;
@@ -29,7 +30,10 @@
2930
import javafx.util.StringConverter;
3031

3132
import java.io.File;
33+
import java.util.ArrayList;
3234
import java.util.Arrays;
35+
import java.util.HashMap;
36+
import java.util.Map;
3337

3438
public class FXPropertiesView {
3539

@@ -38,6 +42,8 @@ public static TreeTableView<EditorAttribute> getPropertiesView() {
3842
return propertiesView;
3943
}
4044

45+
public static Map<String, Button> terrainTypeElements = new HashMap<>();
46+
4147

4248
public static void init() {
4349

@@ -502,19 +508,38 @@ private static ContextMenu possibleAttributeValues(TextFieldTreeTableCell<Editor
502508

503509
for (String itemType : ItemHelper.terrainTypeNameMap.values()) {
504510
if (!itemType.toLowerCase().contains(currentText.toLowerCase())) continue;
505-
Button setImageItem = new Button(itemType);
511+
Button setImageItem;
512+
if (terrainTypeElements.containsKey(itemType)) {
513+
setImageItem = terrainTypeElements.get(itemType);
506514

507-
configureButton(setImageItem);
515+
setImageItem.setOnAction(event -> {
516+
UndoManager.registerChange(new AttributeChangeAction(attribute,
517+
attribute.stringValue(), itemType));
518+
attribute.setValue(itemType);
519+
if (contextMenu.isFocused()) {
520+
cell.commitEdit(attribute.stringValue());
521+
TerrainHelper.terrainColorCache.clear();
522+
}
523+
});
508524

509-
setImageItem.setOnAction(event -> {
510-
UndoManager.registerChange(new AttributeChangeAction(attribute,
511-
attribute.stringValue(), itemType));
512-
attribute.setValue(itemType);
513-
if (contextMenu.isFocused()) {
514-
cell.commitEdit(attribute.stringValue());
515-
}
516-
});
525+
} else {
526+
setImageItem = new Button(itemType);
517527

528+
configureButton(setImageItem);
529+
530+
setImageItem.setOnAction(event -> {
531+
UndoManager.registerChange(new AttributeChangeAction(attribute,
532+
attribute.stringValue(), itemType));
533+
attribute.setValue(itemType);
534+
if (contextMenu.isFocused()) {
535+
cell.commitEdit(attribute.stringValue());
536+
TerrainHelper.terrainColorCache.clear();
537+
}
538+
});
539+
setImageItem.setGraphic(TerrainHelper.terrainPreviewImage(itemType));
540+
541+
terrainTypeElements.put(itemType, setImageItem);
542+
}
518543
vBox.getChildren().add(setImageItem);
519544
}
520545

src/main/java/com/woogleFX/file/FileManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,8 @@ public static ArrayList<EditorObject> openResources(GameVersion version) throws
318318
saxParser.parse(ballFile, defaultHandler);
319319
ballFile = new File(dir + "/res/environments/images/_resources.xml");
320320
saxParser.parse(ballFile, defaultHandler);
321+
ballFile = new File(dir + "/res/terrain/images/_resources.xml");
322+
saxParser.parse(ballFile, defaultHandler);
321323
}
322324
return resources;
323325
}

src/main/java/com/woogleFX/file/resourceManagers/GlobalResourceManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.worldOfGoo.text.TextString;
2020
import com.worldOfGoo2.items._2_Item;
2121
import com.worldOfGoo2.util.ItemHelper;
22+
import com.worldOfGoo2.util.TerrainHelper;
2223
import org.xml.sax.SAXException;
2324

2425
import javax.xml.parsers.ParserConfigurationException;
@@ -85,6 +86,7 @@ public static void init() {
8586
new Thread(() -> {
8687
try {
8788
ResourceManager.findTerrainTypes(null, GameVersion.VERSION_WOG2);
89+
TerrainHelper.buildImageMap();
8890
} catch (FileNotFoundException e) {
8991
e.printStackTrace();
9092
}

src/main/java/com/woogleFX/file/resourceManagers/ResourceManager.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
import com.worldOfGoo2.environments._2_Environment;
1717
import com.worldOfGoo2.items._2_Item;
1818
import com.worldOfGoo2.items._2_Item_Collection;
19+
import com.worldOfGoo2.misc._2_ImageID;
20+
import com.worldOfGoo2.terrain.BaseSettings;
1921
import com.worldOfGoo2.terrain._2_Terrain_Collection;
20-
import com.worldOfGoo2.terrain._2_Terrain_TerrainType;
2122
import com.worldOfGoo2.util.ItemHelper;
23+
import com.worldOfGoo2.util.TerrainHelper;
2224
import javafx.embed.swing.SwingFXUtils;
2325
import javafx.scene.image.Image;
2426

src/main/java/com/worldOfGoo2/environments/_2_Environment_Layer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public _2_Environment_Layer(EditorObject parent) {
2626
addAttribute("anchorsTakeDepthIntoAccount", InputField._2_STRING);
2727
addAttribute("bloom", InputField._2_STRING);
2828
addAttribute("color", InputField._2_STRING);
29-
addAttribute("blendingType", InputField._2_STRING);
29+
addAttribute("blendingType", InputField._2_NUMBER);
3030
addAttribute("flashAnimationName", InputField._2_STRING);
3131
addAttribute("isFlashAnimation", InputField._2_STRING);
3232
addAttribute("animScroll", InputField._2_STRING).setChildAlias(_2_Point.class);

src/main/java/com/worldOfGoo2/level/_2_Level_Strand.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.worldOfGoo.ball.BallStrand;
2121
import com.worldOfGoo.level.BallInstance;
2222
import com.worldOfGoo2.misc._2_ImageID;
23+
import com.worldOfGoo2.util.TerrainHelper;
2324
import javafx.embed.swing.SwingFXUtils;
2425
import javafx.geometry.Point2D;
2526
import javafx.scene.image.Image;
@@ -283,6 +284,9 @@ public Paint getColor() {
283284
} else {
284285
return new Color(0.0 ,0.0, 1.0, 1);
285286
}
287+
}
288+
if (goo1 != null && goo1.getAttribute("type").stringValue().equals("Terrain") && goo1.getAttribute("terrainGroup").intValue() > -1) {
289+
return TerrainHelper.averageColor(goo1.getAttribute("terrainGroup").intValue());
286290
} else {
287291
return new Color(0.5, 0.5, 0.5, 1);
288292
}

src/main/java/com/worldOfGoo2/level/_2_Level_TerrainGroup.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.woogleFX.engine.fx.FXPropertiesView;
1010
import com.woogleFX.file.resourceManagers.GlobalResourceManager;
1111
import com.woogleFX.gameData.level.GameVersion;
12+
import com.woogleFX.gameData.level.WOG2Level;
1213
import com.worldOfGoo2.misc._2_Point;
1314
import com.worldOfGoo2.terrain._2_Terrain_TerrainType;
1415
import com.worldOfGoo2.util.ItemHelper;
@@ -57,6 +58,17 @@ public void setValue(String value) {
5758

5859
}
5960

61+
@Override
62+
public String getName() {
63+
if (LevelManager.getLevel() != null && LevelManager.getLevel() instanceof WOG2Level level) {
64+
for (int i = 0; i < level.getLevel().getChildren("terrainGroups").size(); i++) {
65+
if (level.getLevel().getChildren("terrainGroups").get(i) == this) {
66+
return i + ", " + this.getAttribute("type").stringValue();
67+
}
68+
}
69+
}
70+
return "";
71+
}
6072

6173
@Override
6274
public void onLoaded() {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
package com.worldOfGoo2.terrain;
22

33
import com.woogleFX.editorObjects.EditorObject;
4+
import com.woogleFX.editorObjects.attributes.InputField;
45
import com.woogleFX.gameData.level.GameVersion;
6+
import com.worldOfGoo2.ball._2_Ball_Image;
7+
import com.worldOfGoo2.misc._2_ImageID;
58

69
public class BaseSettings extends EditorObject {
710

811
public BaseSettings(EditorObject parent) {
912
super(parent, "BaseSettings", GameVersion.VERSION_WOG2);
13+
14+
addAttribute("canBeStained", InputField._2_BOOLEAN);
15+
addAttribute("metersToUv", InputField._2_NUMBER);
16+
addAttribute("cliffDecorationValue", InputField._2_NUMBER);
17+
addAttribute("images", InputField._2_LIST_CHILD).setChildAlias(_2_ImageID.class);
1018
}
1119

1220
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.worldOfGoo2.terrain;
22

33
import com.woogleFX.editorObjects.EditorObject;
4+
import com.woogleFX.editorObjects.attributes.InputField;
45
import com.woogleFX.gameData.level.GameVersion;
6+
import com.worldOfGoo2.misc._2_ImageID;
57

68
public class _2_Terrain_TerrainType extends EditorObject {
79

810
public _2_Terrain_TerrainType(EditorObject parent) {
911
super(parent, "TerrainType", GameVersion.VERSION_WOG2);
12+
13+
addAttribute("baseSettings", InputField._2_CHILD).setChildAlias(BaseSettings.class);
1014
}
1115

1216
}

0 commit comments

Comments
 (0)