package net.fourbytes.shadow.blocks;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array;
import net.fourbytes.shadow.*;
import net.fourbytes.shadow.entities.Player;
import net.fourbytes.shadow.map.IsSaveable;
public class BlockButton extends BlockType implements BlockLogic {
@IsSaveable
public boolean triggered = false;
@IsSaveable
public int mode = 0;
public BlockButton() {
}
public BlockButton(int mode) {
this.mode = mode;
}
@Override
public void init() {
tickAlways = true;
solid = true;
colloffs.set(0f, 9f/16f, 0f, 1f-(7f/16f));
}
@Override
public TextureRegion getTexture(int id) {
return Images.split("block_button", 16, 16)[0][triggered?1:0];
}
@Override
public void collide(Entity e) {
super.collide(e);
if (e instanceof Player) {
Player p = (Player) e;
if (mode == 1) {
p.spawnpos.set(p.spawnpos);
}
//TODO: only trigger if player is ON the button
if (!triggered) {
Sounds.getSound("button_ingame").play(1f, Sounds.calcPitch(1f, 0.2f), 0f);
texupdate = true;
triggered = true;
for (Layer l : layer.level.layers.values()) {
Array<Block> v = l.get(Coord.get(pos.x, pos.y));
if (v != null) {
for (int i = 0; i < v.size; i++) {
Block b = v.items[i];
if (b instanceof BlockLogic) {
BlockLogic bl = (BlockLogic) b;
bl.handle(triggered);
}
}
}
}
}
}
}
@Override
public boolean triggered() {
return triggered;
}
@Override
public void handle(boolean triggered) {
//this.triggered = triggered;
}
@Override
public LogicType getType() {
return LogicType.OUTPUT;
}
}