Fixed many network-related bugs

This commit is contained in:
Anuken
2018-01-28 17:09:21 -05:00
parent 205c4e723a
commit 3562a70669
26 changed files with 284 additions and 79 deletions
@@ -139,14 +139,14 @@ public class EnemyType {
}
public void move(Enemy enemy){
float speed = this.speed + 0.04f * enemy.tier;
float range = this.range + enemy.tier * 5;
if(Net.client() && Net.active()){
if(Net.client()){
enemy.interpolate(); //TODO? better structure for interpolation
return;
}
float speed = this.speed + 0.04f * enemy.tier;
float range = this.range + enemy.tier * 5;
Tile core = world.getCore();
if(enemy.idletime > maxIdleLife){
@@ -194,8 +194,12 @@ public class EnemyType {
enemy.move(vec.x * Timers.delta(), vec.y * Timers.delta());
updateTargeting(enemy, nearCore);
behavior(enemy);
}
public void behavior(Enemy enemy){}
public void updateTargeting(Enemy enemy, boolean nearCore){
if(enemy.target != null && enemy.target instanceof TileEntity && ((TileEntity)enemy.target).dead){
enemy.target = null;
@@ -1,4 +0,0 @@
package io.anuke.mindustry.entities.enemies;
public class StandardEnemy {
}
@@ -1,7 +1,6 @@
package io.anuke.mindustry.entities.enemies.types;
import com.badlogic.gdx.math.Vector2;
import static io.anuke.mindustry.Vars.*;
import io.anuke.mindustry.entities.Bullet;
import io.anuke.mindustry.entities.BulletType;
import io.anuke.mindustry.entities.TileEntity;
@@ -9,6 +8,8 @@ import io.anuke.mindustry.entities.enemies.Enemy;
import io.anuke.mindustry.entities.enemies.EnemyType;
import io.anuke.ucore.util.Tmp;
import static io.anuke.mindustry.Vars.tilesize;
public class BlastType extends EnemyType {
public BlastType() {
@@ -22,8 +23,7 @@ public class BlastType extends EnemyType {
}
@Override
public void move(Enemy enemy){
super.move(enemy);
public void behavior(Enemy enemy){
float range = 10f;
Vector2 offset = Tmp.v3.setZero();
@@ -1,6 +1,5 @@
package io.anuke.mindustry.entities.enemies.types;
import static io.anuke.mindustry.Vars.*;
import io.anuke.mindustry.entities.BulletType;
import io.anuke.mindustry.entities.enemies.Enemy;
import io.anuke.mindustry.entities.enemies.EnemyType;
@@ -10,6 +9,8 @@ import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.Angles;
import static io.anuke.mindustry.Vars.world;
public class FortressType extends EnemyType {
final int maxSpawn = 6;
final float spawnTime = 190;
@@ -29,7 +30,7 @@ public class FortressType extends EnemyType {
}
@Override
public void move(Enemy enemy){
public void behavior(Enemy enemy){
if(enemy.distanceTo(world.getCore().worldx(),
world.getCore().worldy()) <= 90f){
@@ -47,8 +48,6 @@ public class FortressType extends EnemyType {
enemy.spawned ++;
}
}else {
super.move(enemy);
}
}
@@ -35,8 +35,7 @@ public class HealerType extends EnemyType {
}
@Override
public void move(Enemy enemy){
super.move(enemy);
public void behavior(Enemy enemy){
if(enemy.idletime > 60f*3){ //explode after 3 seconds of stillness
explode(enemy);