Fixed instant-win wave missions / Fixed units clipping off screen

This commit is contained in:
Anuken
2018-11-07 19:58:53 -05:00
parent 216433aa2d
commit 56ffa7905e
7 changed files with 27 additions and 18 deletions

View File

@@ -53,14 +53,18 @@ public class Mechs implements ContentList{
@Override @Override
public void updateAlt(Player player){ public void updateAlt(Player player){
if(player.isShooting && player.timer.get(Player.timerAbility, buildTime) && getDrones(player) < maxDrones && !TutorialSector.supressDrone()){ if(player.isShooting && getDrones(player) < maxDrones && !TutorialSector.supressDrone()){
if(!Net.client()) { player.timer.get(Player.timerAbility, buildTime);
AlphaDrone drone = (AlphaDrone) UnitTypes.alphaDrone.create(player.getTeam());
drone.leader = player; if(player.timer.getTime(Player.timerAbility) > buildTime/2f){
drone.set(player.x, player.y); if(!Net.client()){
drone.add(); AlphaDrone drone = (AlphaDrone) UnitTypes.alphaDrone.create(player.getTeam());
drone.leader = player;
drone.set(player.x, player.y);
drone.add();
}
Effects.effect(UnitFx.unitLand, player);
} }
Effects.effect(UnitFx.unitLand, player);
} }
} }

View File

@@ -41,7 +41,10 @@ public class Logic extends Module{
@Override @Override
public void init(){ public void init(){
EntityQuery.init(); EntityQuery.init();
EntityQuery.collisions().setCollider(tilesize, world::solid); EntityQuery.collisions().setCollider(tilesize, (x, y) -> {
Tile tile = world.tile(x, y);
return tile != null && tile.solid();
});
} }
public void play(){ public void play(){

View File

@@ -324,8 +324,8 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
if(target != null) behavior(); if(target != null) behavior();
if(!isWave && !isFlying()){ if(!isWave && !isFlying()){
x = Mathf.clamp(x, 0, world.width() * tilesize); x = Mathf.clamp(x, tilesize/2f, world.width() * tilesize - tilesize/2f);
y = Mathf.clamp(y, 0, world.height() * tilesize); y = Mathf.clamp(y, tilesize/2f, world.height() * tilesize - tilesize/2f);
} }
} }

View File

@@ -41,7 +41,7 @@ public class AlphaDrone extends FlyingUnit {
target = leader; target = leader;
if(last == null){ if(last == null){
circle(leader.isShooting ? 50f : 0f); circle(leader.isShooting ? 60f : 0f);
} }
target = last; target = last;

View File

@@ -1,6 +1,7 @@
package io.anuke.mindustry.io; package io.anuke.mindustry.io;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectSet;
import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.content.blocks.StorageBlocks; import io.anuke.mindustry.content.blocks.StorageBlocks;
import io.anuke.mindustry.entities.traits.SaveTrait; import io.anuke.mindustry.entities.traits.SaveTrait;
@@ -214,6 +215,7 @@ public abstract class SaveFileVersion{
} }
public void readEntities(DataInputStream stream) throws IOException{ public void readEntities(DataInputStream stream) throws IOException{
ObjectSet<EntityGroup<?>> set = new ObjectSet<>();
byte groups = stream.readByte(); byte groups = stream.readByte();
for(int i = 0; i < groups; i++){ for(int i = 0; i < groups; i++){
@@ -222,8 +224,13 @@ public abstract class SaveFileVersion{
byte typeid = stream.readByte(); byte typeid = stream.readByte();
SaveTrait trait = (SaveTrait) TypeTrait.getTypeByID(typeid).get(); SaveTrait trait = (SaveTrait) TypeTrait.getTypeByID(typeid).get();
trait.readSave(stream); trait.readSave(stream);
set.add(trait.targetGroup());
} }
} }
for(EntityGroup<?> group : set){
group.updateEvents();
}
} }
public MappableContent[][] readContentHeader(DataInputStream stream) throws IOException{ public MappableContent[][] readContentHeader(DataInputStream stream) throws IOException{

View File

@@ -88,9 +88,7 @@ public class Sectors{
public Difficulty getDifficulty(Sector sector){ public Difficulty getDifficulty(Sector sector){
if(sector.difficulty == 0){ if(sector.difficulty == 0){
//yes, this means hard tutorial difficulty return Difficulty.normal;
//(((have fun)))
return Difficulty.hard;
}else if(sector.difficulty < 4){ }else if(sector.difficulty < 4){
return Difficulty.normal; return Difficulty.normal;
}else if(sector.difficulty < 9){ }else if(sector.difficulty < 9){

View File

@@ -1,6 +1,5 @@
package io.anuke.mindustry.maps.missions; package io.anuke.mindustry.maps.missions;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.Vars; import io.anuke.mindustry.Vars;
import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.game.GameMode;
@@ -11,9 +10,7 @@ import io.anuke.mindustry.maps.Sector;
import io.anuke.mindustry.maps.generation.Generation; import io.anuke.mindustry.maps.generation.Generation;
import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Bundles;
import static io.anuke.mindustry.Vars.state; import static io.anuke.mindustry.Vars.*;
import static io.anuke.mindustry.Vars.waveTeam;
import static io.anuke.mindustry.Vars.world;
public class WaveMission extends MissionWithStartingCore{ public class WaveMission extends MissionWithStartingCore{
private final int target; private final int target;