82327c1d |
1 | package net.encode.wurmesp.feature; |
2 | |
3 | import com.wurmonline.client.game.PlayerPosition; |
4 | import com.wurmonline.mesh.GrassData; |
5 | import com.wurmonline.mesh.Tiles; |
6 | |
7 | import net.encode.wurmesp.WurmEspMod; |
8 | import net.encode.wurmesp.util.RenderUtils; |
9 | |
10 | public class FeatureFlowerTiles |
11 | extends Feature { |
12 | |
13 | @Override |
14 | public void refresh() { |
15 | WurmEspMod._flowerTerrain.clear(); |
16 | WurmEspMod._terrainBuffer = this.world.getNearTerrainBuffer(); |
17 | PlayerPosition pos = this.world.getPlayer().getPos(); |
18 | int px = pos.getTileX(); |
19 | int py = pos.getTileY(); |
20 | int size = WurmEspMod.flowerdiameter; |
21 | int sx = px - size / 2; |
22 | int sy = py - size / 2; |
23 | float ox = this.world.getRenderOriginX(); |
24 | float oy = this.world.getRenderOriginY(); |
25 | for (int x = 0; x < size + 1; ++x) { |
26 | for (int y = 0; y < size + 1; ++y) { |
27 | float tileX = x + sx; |
28 | float tileY = y + sy; |
29 | byte data = WurmEspMod._terrainBuffer.getData((int)tileX, (int)tileY); |
30 | Tiles.Tile tileType = WurmEspMod._terrainBuffer.getTileType((int)tileX, (int)tileY); |
31 | if (tileType.isGrass() && !tileType.isBush() && !tileType.isTree()) { |
32 | for(String name : WurmEspMod.tilesFlowerSearch) |
33 | { |
34 | if(GrassData.getFlowerTypeName(data).contains(name)) |
35 | { |
36 | float curX = tileX * 4.0f - ox; |
37 | float curY = tileY * 4.0f - oy; |
38 | float nextX = (tileX + 1.0f) * 4.0f - ox; |
39 | float nextY = (tileY + 1.0f) * 4.0f - oy; |
40 | float x0 = curX + 0.1f; |
41 | float y0 = curY + 0.1f; |
42 | float x1 = nextX - 0.1f; |
43 | float y1 = nextY - 0.1f; |
44 | float z0 = WurmEspMod._terrainBuffer.getHeight((int)tileX, (int)tileY); |
45 | float z1 = WurmEspMod._terrainBuffer.getHeight((int)tileX + 1, (int)tileY); |
46 | float z2 = WurmEspMod._terrainBuffer.getHeight((int)tileX, (int)tileY + 1); |
47 | float z3 = WurmEspMod._terrainBuffer.getHeight((int)tileX + 1, (int)tileY + 1); |
48 | WurmEspMod._flowerTerrain.add(new float[]{x0, z0, y0, x1, z1, y0, x0, z2, y1, x1, z3, y1}); |
49 | } |
50 | } |
51 | } |
52 | } |
53 | } |
54 | } |
55 | |
56 | @Override |
57 | public void queue() { |
58 | if (WurmEspMod._flowerTerrain == null) { |
59 | return; |
60 | } |
61 | WurmEspMod._flowerTerrain.forEach(t -> { |
62 | float[] color = new float[]{0.0f, 1.0f, 0.0f, 0.5f}; |
63 | int[] indexdata = new int[]{1, 0, 0, 2, 2, 3, 3, 1}; |
64 | RenderUtils.renderPrimitiveLines(4, t, indexdata, this.queuePick, color); |
65 | }); |
66 | } |
67 | } |