package org.test.rtsgame;
import loon.LSystem;
import loon.action.sprite.SpriteBatch;
import loon.action.sprite.painting.DrawableState;
import loon.canvas.LColor;
import loon.geom.Vector2f;
import loon.utils.timer.GameTime;
//初始加载用类
public class LoadingEntity extends GameEntity {
private boolean loadingIsSlow;
private boolean otherScreensAreGone;
private GameEntity[] screensToLoad;
private LoadingEntity(EntityManager screenManager, boolean loadingIsSlow,
GameEntity[] screensToLoad) {
this.loadingIsSlow = loadingIsSlow;
this.screensToLoad = screensToLoad;
}
@Override
public void Draw(SpriteBatch batch, GameTime gameTime) {
if ((super.getScreenState() == DrawableState.Active)
&& (super.getScreenManager().GetScreens().length == 1)) {
this.otherScreensAreGone = true;
}
if (this.loadingIsSlow) {
Vector2f v = batch.getFont().getOrigin("LOADING...");
batch.drawString("LOADING...", LSystem.viewSize.width / 2 - v.x,
LSystem.viewSize.height / 2 - v.y, LColor.white);
}
}
public static void Load(EntityManager screenManager, boolean loadingIsSlow,
GameEntity... screensToLoad) {
for (GameEntity screen : screenManager.GetScreens()) {
screen.ExitScreen();
}
LoadingEntity screen2 = new LoadingEntity(screenManager, loadingIsSlow,
screensToLoad);
screenManager.AddScreen(screen2);
}
@Override
public void LoadContent() {
}
@Override
public void Update(GameTime gameTime, boolean coveredByOtherScreen) {
super.Update(gameTime, coveredByOtherScreen);
if (this.otherScreensAreGone) {
super.getScreenManager().LoadGameContent();
super.ExitScreen();
if (super.getScreenManager().GetScreens().length == 0) {
for (GameEntity screen : this.screensToLoad) {
if (screen != null) {
super.getScreenManager().AddScreen(screen);
}
}
}
}
}
}