Clean
[esp.git] / src / net / encode / wurmesp / feature / FeatureTilesHighlight.java
1 package net.encode.wurmesp.feature;
2
3 import com.wurmonline.client.game.PlayerPosition;
4 import com.wurmonline.client.game.World;
5 import net.encode.wurmesp.WurmEspMod;
6 import net.encode.wurmesp.util.RenderUtils;
7
8 public class FeatureTilesHighlight
9 extends Feature {
10 @Override
11 public void refresh() {
12 WurmEspMod._tilesHighlightTerrain.clear();
13 WurmEspMod._terrainBuffer = this.world.getNearTerrainBuffer();
14 float ox = this.world.getRenderOriginX();
15 float oy = this.world.getRenderOriginY();
16 WurmEspMod._tilesHighlightBase.forEach(base -> {
17 float curX = (float)(base[0] * 4) - ox;
18 float curY = (float)(base[1] * 4) - oy;
19 float nextX = (float)((base[0] + 1) * 4) - ox;
20 float nextY = (float)((base[1] + 1) * 4) - oy;
21 float x0 = curX + 0.1f;
22 float y0 = curY + 0.1f;
23 float x1 = nextX - 0.1f;
24 float y1 = nextY - 0.1f;
25 float z0 = WurmEspMod._terrainBuffer.getHeight(base[0], base[1]);
26 float z1 = WurmEspMod._terrainBuffer.getHeight(base[0] + 1, base[1]);
27 float z2 = WurmEspMod._terrainBuffer.getHeight(base[0], base[1] + 1);
28 float z3 = WurmEspMod._terrainBuffer.getHeight(base[0] + 1, base[1] + 1);
29 WurmEspMod._tilesHighlightTerrain.add(new float[]{x0, z0, y0, x1, z1, y0, x0, z2, y1, x1, z3, y1, x0, 0.0f, y0, x1, 0.0f, y0, x0, 0.0f, y1, x1, 0.0f, y1});
30 });
31 }
32
33 @Override
34 public void queue() {
35 if (WurmEspMod._tilesHighlightTerrain == null) {
36 return;
37 }
38 WurmEspMod._tilesHighlightTerrain.forEach(t -> {
39 float[] color = new float[]{1.0f, 0.0f, 0.0f, 1.0f};
40 int[] indexdata = new int[]{1, 0, 0, 2, 2, 3, 3, 1, 1, 2, 0, 3, 5, 4, 4, 6, 6, 7, 7, 5, 0, 4, 1, 5, 2, 6, 3, 7};
41 RenderUtils.renderPrimitiveLines(8, t, indexdata, this.queuePick, color);
42 });
43 }
44
45 public void setWorld(World world) {
46 this.world = world;
47 }
48
49 public void addData(String direction, int tiles, int times, int space) {
50 PlayerPosition pos = this.world.getPlayer().getPos();
51 int baseTileX = pos.getTileX();
52 int baseTileY = pos.getTileY();
53 WurmEspMod._tilesHighlightBase.add(new int[]{baseTileX, baseTileY});
54 block12: for (int i = 0; i < times; ++i) {
55 switch (direction) {
56 case "n": {
57 int s;
58 baseTileY -= tiles;
59 for (s = 1; s < space + 1; ++s) {
60 WurmEspMod._tilesHighlightBase.add(new int[]{baseTileX, --baseTileY});
61 }
62 continue block12;
63 }
64 case "s": {
65 int s;
66 baseTileY += tiles;
67 for (s = 1; s < space + 1; ++s) {
68 WurmEspMod._tilesHighlightBase.add(new int[]{baseTileX, ++baseTileY});
69 }
70 continue block12;
71 }
72 case "e": {
73 int s;
74 baseTileX += tiles;
75 for (s = 1; s < space + 1; ++s) {
76 WurmEspMod._tilesHighlightBase.add(new int[]{++baseTileX, baseTileY});
77 }
78 continue block12;
79 }
80 case "w": {
81 int s;
82 baseTileX -= tiles;
83 for (s = 1; s < space + 1; ++s) {
84 WurmEspMod._tilesHighlightBase.add(new int[]{--baseTileX, baseTileY});
85 }
86 continue block12;
87 }
88 }
89 }
90 }
91
92 public void addData(int x, int y) {
93 WurmEspMod._tilesHighlightBase.add(new int[]{x, y});
94 }
95
96 public void addData(int radius) {
97 int tileX = this.world.getPlayer().getPos().getTileX();
98 int tileY = this.world.getPlayer().getPos().getTileY();
99 int startX = tileX - radius;
100 int startY = tileY - radius;
101 int endX = tileX + radius;
102 int endY = tileY + radius;
103 this.addData(startX, startY, endX, endY);
104 }
105
106 public void addData(int startX, int startY, int endX, int endY) {
107 WurmEspMod._tilesHighlightBase.add(new int[]{startX, startY});
108 WurmEspMod._tilesHighlightBase.add(new int[]{startX, endY});
109 WurmEspMod._tilesHighlightBase.add(new int[]{endX, startY});
110 WurmEspMod._tilesHighlightBase.add(new int[]{endX, endY});
111 }
112 }
113