Skip to content

Commit faaf0a9

Browse files
committedMay 31, 2019
update
update
1 parent 9379d2e commit faaf0a9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+5836
-853
lines changed
 

‎Java/Loon-Lite(PureJava)/Loon-Lite-Core/src/loon/action/ActionEvent.java

+54-10
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
*/
2121
package loon.action;
2222

23+
import loon.action.collision.CollisionFilter;
24+
import loon.action.collision.CollisionResult;
25+
import loon.action.collision.CollisionWorld;
2326
import loon.utils.StringKeyValue;
2427
import loon.utils.timer.LTimer;
2528

@@ -31,6 +34,10 @@ public abstract class ActionEvent {
3134

3235
protected boolean firstTick, _isCompleted, isInit;
3336

37+
protected CollisionWorld collisionWorld;
38+
39+
protected CollisionFilter worldCollisionFilter;
40+
3441
protected ActionBind original;
3542

3643
protected Object tag;
@@ -167,12 +174,55 @@ public ActionEvent set(ActionEvent e) {
167174
original = e.original;
168175
return this;
169176
}
170-
177+
171178
public ActionEvent kill() {
172179
this._isCompleted = true;
173180
return this;
174181
}
175-
182+
183+
public void movePos(float x, float y) {
184+
movePos(x, y, -1f, -1f);
185+
}
186+
187+
public void movePos(float x, float y, float lastX, float lastY) {
188+
if (original == null) {
189+
return;
190+
}
191+
if (collisionWorld != null) {
192+
if (worldCollisionFilter == null) {
193+
worldCollisionFilter = CollisionFilter.getDefault();
194+
}
195+
CollisionResult.Result result = collisionWorld.move(original, x, y, worldCollisionFilter);
196+
if (lastX != -1 && lastY != -1) {
197+
if (result.goalX != x || result.goalY != y) {
198+
original.setLocation(lastX, lastY);
199+
} else {
200+
original.setLocation(result.goalX, result.goalY);
201+
}
202+
} else {
203+
original.setLocation(result.goalX, result.goalY);
204+
}
205+
} else {
206+
original.setLocation(x, y);
207+
}
208+
}
209+
210+
public CollisionFilter getCollisionFilter() {
211+
return worldCollisionFilter;
212+
}
213+
214+
public void setCollisionFilter(CollisionFilter filter) {
215+
this.worldCollisionFilter = filter;
216+
}
217+
218+
public CollisionWorld getCollisionWorld() {
219+
return collisionWorld;
220+
}
221+
222+
public void setCollisionWorld(CollisionWorld world) {
223+
this.collisionWorld = world;
224+
}
225+
176226
public abstract ActionEvent cpy();
177227

178228
public abstract ActionEvent reverse();
@@ -182,14 +232,8 @@ public ActionEvent kill() {
182232
@Override
183233
public String toString() {
184234
StringKeyValue builder = new StringKeyValue(getName());
185-
builder
186-
.kv("loaded", isInit)
187-
.comma()
188-
.kv("bind", original)
189-
.comma()
190-
.kv("offset", (offsetX + " x " + offsetY))
191-
.comma()
192-
.kv("tag", tag);
235+
builder.kv("loaded", isInit).comma().kv("bind", original).comma().kv("offset", (offsetX + " x " + offsetY))
236+
.comma().kv("tag", tag);
193237
return builder.toString();
194238
}
195239
}

‎Java/Loon-Lite(PureJava)/Loon-Lite-Core/src/loon/action/ArrowTo.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public void update(long elapsedTime) {
139139
float slope = vy / vx;
140140
float theta = MathUtils.atan(slope);
141141
original.setRotation(theta * MathUtils.RAD_TO_DEG);
142-
original.setLocation(currentX + offsetX, currentY + offsetY);
142+
movePos(currentX + offsetX, currentY + offsetY);
143143
}
144144
}
145145

0 commit comments

Comments
 (0)