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.map.IsSaveable; public class BlockClock extends BlockType implements BlockLogic { @IsSaveable public boolean triggered = false; @IsSaveable public float cycle = 128f/60f; @IsSaveable public float time = 0f; public BlockClock() { } public BlockClock(int time) { this.time = time*32f/60f; } public BlockClock(float time, float cycle) { this.time = time; this.cycle = cycle; } @Override public void init() { tickAlways = true; solid = false; alpha = 0f; passSunlight = false; blending = false; } @Override public void tick(float delta) { time += delta; if (time >= cycle) { time = 0f; triggered = !triggered; for (Layer l : layer.level.layers.values()) { for (int xo = -1; xo <= 1; xo++) { for (int yo = -1; yo <= 1; yo++) { Array<Block> v = l.get(Coord.get(pos.x + xo, pos.y + yo)); 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 TextureRegion getTexture(int id) { return Images.split("block_clock", 16, 16)[0][0]; } @Override public void preRender() { } @Override public void render() { } @Override public boolean triggered() { return triggered; } @Override public void handle(boolean triggered) { //this.triggered = triggered; } @Override public LogicType getType() { return LogicType.OUTPUT; } }