mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
refactor HeroListData, update CoverScreen
- remove redundant autosave
This commit is contained in:
@@ -18,29 +18,29 @@ import forge.adventure.util.Paths;
|
||||
*/
|
||||
public class HeroListData {
|
||||
static private HeroListData instance;
|
||||
public HeroData[] heroes;
|
||||
public String avatar;
|
||||
private HeroData[] heroes;
|
||||
private String avatar;
|
||||
private TextureAtlas avatarAtlas;
|
||||
private final ObjectMap<String, Array<Sprite>> avatarSprites = new ObjectMap<>();
|
||||
|
||||
static private HeroListData read() {
|
||||
Json json = new Json();
|
||||
FileHandle handle = Config.instance().getFile(Paths.HEROES);
|
||||
if (handle.exists()) {
|
||||
instance = json.fromJson(HeroListData.class, handle);
|
||||
instance.avatarAtlas = Config.instance().getAtlas(instance.avatar);
|
||||
|
||||
/*
|
||||
instance.avatarSprites.getTextures().first().setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
|
||||
*/
|
||||
static public HeroListData instance() {
|
||||
if (instance == null) {
|
||||
Json json = new Json();
|
||||
FileHandle handle = Config.instance().getFile(Paths.HEROES);
|
||||
if (handle.exists()) {
|
||||
instance = json.fromJson(HeroListData.class, handle);
|
||||
instance.avatarAtlas = Config.instance().getAtlas(instance.avatar);
|
||||
// leaving here as reference since PixelArt images use Nearest without MipMaps. By default it shouldn't have any filters
|
||||
/*instance.avatarSprites.getTextures().first().setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);*/
|
||||
} else {
|
||||
throw new RuntimeException("Path not found: " + handle.path());
|
||||
}
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
static public String getHero(int raceIndex, boolean female) {
|
||||
if (instance == null)
|
||||
instance = read();
|
||||
HeroData data = instance.heroes[raceIndex];
|
||||
public String getHero(int raceIndex, boolean female) {
|
||||
HeroData data = instance().heroes[raceIndex];
|
||||
|
||||
if (female)
|
||||
return data.female;
|
||||
@@ -48,14 +48,12 @@ public class HeroListData {
|
||||
|
||||
}
|
||||
|
||||
public static TextureRegion getAvatar(int heroRace, boolean isFemale, int avatarIndex) {
|
||||
if (instance == null)
|
||||
instance = read();
|
||||
HeroData data = instance.heroes[heroRace];
|
||||
Array<Sprite> sprites = instance.avatarSprites.get(isFemale ? data.femaleAvatar : data.maleAvatar);
|
||||
public TextureRegion getAvatar(int heroRace, boolean isFemale, int avatarIndex) {
|
||||
HeroData data = instance().heroes[heroRace];
|
||||
Array<Sprite> sprites = instance().avatarSprites.get(isFemale ? data.femaleAvatar : data.maleAvatar);
|
||||
if (sprites == null) {
|
||||
sprites = instance.avatarAtlas.createSprites(isFemale ? data.femaleAvatar : data.maleAvatar);
|
||||
instance.avatarSprites.put(isFemale ? data.femaleAvatar : data.maleAvatar, sprites);
|
||||
sprites = instance().avatarAtlas.createSprites(isFemale ? data.femaleAvatar : data.maleAvatar);
|
||||
instance().avatarSprites.put(isFemale ? data.femaleAvatar : data.maleAvatar, sprites);
|
||||
}
|
||||
avatarIndex %= sprites.size;
|
||||
if (avatarIndex < 0) {
|
||||
@@ -64,11 +62,9 @@ public class HeroListData {
|
||||
return sprites.get(avatarIndex);
|
||||
}
|
||||
|
||||
public static Array<String> getRaces() {
|
||||
if (instance == null)
|
||||
instance = read();
|
||||
public Array<String> getRaces() {
|
||||
Array<String> ret = new Array<>();
|
||||
for (HeroData hero : instance.heroes) {
|
||||
for (HeroData hero : instance().heroes) {
|
||||
ret.add(Forge.getLocalizer().getMessageorUseDefault("lbl"+hero.name, hero.name));
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -588,18 +588,18 @@ public class AdventurePlayer implements Serializable, SaveFileContent {
|
||||
}
|
||||
|
||||
public String spriteName() {
|
||||
return HeroListData.getHero(heroRace, isFemale);
|
||||
return HeroListData.instance().getHero(heroRace, isFemale);
|
||||
}
|
||||
|
||||
public FileHandle sprite() {
|
||||
return Config.instance().getFile(HeroListData.getHero(heroRace, isFemale));
|
||||
return Config.instance().getFile(HeroListData.instance().getHero(heroRace, isFemale));
|
||||
}
|
||||
|
||||
public TextureRegion avatar() {
|
||||
return HeroListData.getAvatar(heroRace, isFemale, avatarIndex);
|
||||
return HeroListData.instance().getAvatar(heroRace, isFemale, avatarIndex);
|
||||
}
|
||||
public String raceName() {
|
||||
return HeroListData.getRaces().get(Current.player().heroRace);
|
||||
return HeroListData.instance().getRaces().get(Current.player().heroRace);
|
||||
}
|
||||
|
||||
public GameStage getCurrentGameStage() {
|
||||
|
||||
@@ -169,7 +169,7 @@ public class NewGameScene extends MenuScene {
|
||||
}
|
||||
});
|
||||
race.addListener(event -> NewGameScene.this.updateAvatar());
|
||||
race.setTextList(HeroListData.getRaces());
|
||||
race.setTextList(HeroListData.instance().getRaces());
|
||||
difficulty = ui.findActor("difficulty");
|
||||
difficultyHelp = ui.findActor("difficultyHelp");
|
||||
|
||||
@@ -294,7 +294,7 @@ public class NewGameScene extends MenuScene {
|
||||
}
|
||||
|
||||
private boolean updateAvatar() {
|
||||
avatarImage.setDrawable(new TextureRegionDrawable(HeroListData.getAvatar(race.getCurrentIndex(), gender.getCurrentIndex() != 0, avatarIndex)));
|
||||
avatarImage.setDrawable(new TextureRegionDrawable(HeroListData.instance().getAvatar(race.getCurrentIndex(), gender.getCurrentIndex() != 0, avatarIndex)));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -144,9 +144,7 @@ public class ConsoleCommandInterpreter {
|
||||
Forge.advFreezePlayerControls = false;
|
||||
WorldStage.getInstance().setPosition(new Vector2(poi.getPosition().x - 16f, poi.getPosition().y + 16f));
|
||||
WorldStage.getInstance().loadPOI(poi);
|
||||
WorldSave.getCurrentSave().autoSave();
|
||||
Forge.clearTransitionScreen();
|
||||
//WorldStage.getInstance().player.playEffect(Paths.EFFECT_TELEPORT, 10);
|
||||
}, Forge.takeScreenshot())));
|
||||
return "Teleported to " + s[0] + "(" + poi.getPosition() + ")";
|
||||
});
|
||||
|
||||
@@ -4,12 +4,14 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import forge.Forge;
|
||||
import forge.Graphics;
|
||||
import forge.animation.ForgeAnimation;
|
||||
import forge.assets.FSkin;
|
||||
import forge.assets.FSkinTexture;
|
||||
import forge.gui.FThreads;
|
||||
|
||||
public class CoverScreen extends TransitionScreen {
|
||||
private CoverAnimation coverAnimation;
|
||||
Runnable runnable;
|
||||
TextureRegion textureRegion;
|
||||
private Runnable runnable;
|
||||
private TextureRegion textureRegion;
|
||||
|
||||
public CoverScreen(Runnable r, TextureRegion t) {
|
||||
runnable = r;
|
||||
@@ -18,19 +20,22 @@ public class CoverScreen extends TransitionScreen {
|
||||
}
|
||||
|
||||
private class CoverAnimation extends ForgeAnimation {
|
||||
float DURATION = 0.6f;
|
||||
float DURATION = 0.8f;
|
||||
private float progress = 0;
|
||||
|
||||
public void drawBackground(Graphics g) {
|
||||
float oldAlpha = g.getfloatAlphaComposite();
|
||||
float percentage = progress / DURATION;
|
||||
if (percentage < 0) {
|
||||
percentage = 0;
|
||||
} else if (percentage > 1) {
|
||||
percentage = 1;
|
||||
}
|
||||
if (textureRegion != null) {
|
||||
g.drawPortalFade(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), Math.min(percentage, 1f), true);
|
||||
}
|
||||
g.setAlphaComposite(percentage);
|
||||
g.drawImage(Forge.isMobileAdventureMode ? FSkinTexture.ADV_BG_TEXTURE : FSkinTexture.BG_TEXTURE, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||
g.drawImage(FSkin.getLogo(), Forge.getScreenWidth() / 2f - FSkin.getLogo().getWidth() / 2f, Forge.getScreenHeight() / 2f - FSkin.getLogo().getHeight() / 2f, FSkin.getLogo().getWidth(), FSkin.getLogo().getHeight());
|
||||
g.setAlphaComposite(oldAlpha);
|
||||
g.drawPortalFade(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), Math.min(percentage, 1f), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user