package minizoo.c.background; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import minizoo.App; import minizoo.c.Entity; import minizoo.c.Sprite; import minizoo.c.action.Delay; import minizoo.c.action.Forever; import minizoo.c.action.RotateTo; import minizoo.c.action.Sequence; import minizoo.c.action.easing.*; import minizoo.c.core.Vector2d; public class Background extends Entity { @Override public void update(float elapsed) { super.update(elapsed); int fac = 255 - Math.max(0, (int)(55 * (Math.sin(this.getRotation() - Math.PI/2)+1))); App.Instance().getCanvas().setGlobalTint(new Color(fac, fac, fac)); } @Override public boolean intersect(Point2D point, AffineTransform base) { return false; } public Background(String name) { super(name); this.setPosition(new Vector2d(App.ScreenWidth/2, App.ScreenHeight)); this.setAnchor(new Vector2d(0.5, 1)); this.setContentSize(new Vector2d(App.ScreenWidth, App.ScreenHeight)); sun = new Sun(name + ":Sun"); sun.setPosition(new Vector2d(1136, 108)); this.addChild(sun, 0); moon = new Moon(name + ":Moon"); moon.setPosition(new Vector2d(640, App.ScreenHeight + 640)); this.addChild(moon); } public void toggleBG () { this.stopAction("toggleBG"); this.setRotation(d? 0f: (float)Math.PI); this.runAction(EaseInSine.c(RotateTo.c(0.8f, (float) -Math.PI)), "toggleBG"); d = !d; } boolean d = true; @Override public void visit(Graphics2D g2) { Color dayColor = new Color(208, 244, 247); g2.setColor(dayColor); g2.fillRect(-240, 0, App.ScreenWidth * 2 + 240, App.ScreenHeight); Color nightColor = new Color(94, 63, 107); g2.setColor(nightColor); g2.fillRect(-240, App.ScreenHeight, App.ScreenWidth * 2 + 240, App.ScreenHeight); } Sprite sprBackground; Sun sun; Moon moon; }