Basic documentation for fire/puddles

This commit is contained in:
Anuken
2018-04-16 17:41:49 -04:00
parent bece87c790
commit a4962c5225
4 changed files with 19 additions and 11 deletions

View File

@@ -1,7 +1,7 @@
#Autogenerated file. Do not modify. #Autogenerated file. Do not modify.
#Mon Apr 16 17:31:30 EDT 2018 #Mon Apr 16 17:40:39 EDT 2018
version=release version=release
androidBuildCode=928 androidBuildCode=930
name=Mindustry name=Mindustry
code=3.5 code=3.5
build=custom build build=custom build

View File

@@ -15,17 +15,25 @@ import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class Fire extends TimedEntity { public class Fire extends TimedEntity {
private static GridMap<Fire> map = new GridMap<>(); private static final GridMap<Fire> map = new GridMap<>();
private static final float baseLifetime = 1000f;
private Tile tile; private Tile tile;
private float baseFlammability = -1, puddleFlammability; private float baseFlammability = -1, puddleFlammability;
/**Start a fire on the tile. If there already is a file there, refreshes its lifetime..*/
public static void create(Tile tile){ public static void create(Tile tile){
if(!map.containsKey(tile.x, tile.y)){ Fire fire = map.get(tile.x, tile.y);
new Fire(tile).add();
if(fire == null){
map.put(tile.x, tile.y, new Fire(tile).add());
}else{
fire.lifetime = baseLifetime;
fire.time = 0f;
} }
} }
/**Attempts to extinguish a fire by shortening its life. If there is no fire here, does nothing.*/
public static void extinguish(Tile tile, float intensity){ public static void extinguish(Tile tile, float intensity){
if(map.containsKey(tile.x, tile.y)){ if(map.containsKey(tile.x, tile.y)){
map.get(tile.x, tile.y).time += intensity * Timers.delta(); map.get(tile.x, tile.y).time += intensity * Timers.delta();
@@ -34,7 +42,7 @@ public class Fire extends TimedEntity {
private Fire(Tile tile){ private Fire(Tile tile){
this.tile = tile; this.tile = tile;
lifetime = 1000f; lifetime = baseLifetime;
} }
@Override @Override
@@ -90,11 +98,6 @@ public class Fire extends TimedEntity {
return add(effectGroup); return add(effectGroup);
} }
@Override
public void added() {
map.put(tile.x, tile.y, this);
}
@Override @Override
public void removed() { public void removed() {
map.remove(tile.x, tile.y); map.remove(tile.x, tile.y);

View File

@@ -36,14 +36,17 @@ public class Puddle extends Entity {
private int generation; private int generation;
private float accepting; private float accepting;
/**Deposists a puddle between tile and source.*/
public static void deposit(Tile tile, Tile source, Liquid liquid, float amount){ public static void deposit(Tile tile, Tile source, Liquid liquid, float amount){
deposit(tile, source, liquid, amount, 0); deposit(tile, source, liquid, amount, 0);
} }
/**Deposists a puddle at a tile.*/
public static void deposit(Tile tile, Liquid liquid, float amount){ public static void deposit(Tile tile, Liquid liquid, float amount){
deposit(tile, tile, liquid, amount, 0); deposit(tile, tile, liquid, amount, 0);
} }
/**Returns the puddle on the specified tile. May return null.*/
public static Puddle getPuddle(Tile tile){ public static Puddle getPuddle(Tile tile){
return map.get(tile.x, tile.y); return map.get(tile.x, tile.y);
} }

View File

@@ -243,6 +243,8 @@ public class Block extends BaseBlock {
DamageArea.dynamicExplosion(x, y, flammability, explosiveness, power, tilesize * size/2f, tempColor); DamageArea.dynamicExplosion(x, y, flammability, explosiveness, power, tilesize * size/2f, tempColor);
} }
/**Returns the flammability of the tile. Used for fire calculations.
* Takes flammability of floor liquid into account.*/
public float getFlammability(Tile tile){ public float getFlammability(Tile tile){
if(!hasInventory || tile.entity == null){ if(!hasInventory || tile.entity == null){
if(tile.floor().liquid && !solid){ if(tile.floor().liquid && !solid){