Skip to content

Commit

Permalink
add LanguageSwitchBoard; use new SaveHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
hundun000 committed Feb 26, 2023
1 parent b3a87a7 commit 32ef713
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ protected void createStage1() {
childGameConfig
);
this.getSaveHandler().registerSubHandler(idleGameplayExport);
saveHandler.systemSettingLoadOrNew();
saveHandler.systemSettingLoadOrStarter();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ public String constructionIdToDetailDescroptionConstPart(Language language, Stri
public List<String> getMemuScreenTexts(Language language) {
switch (language) {
case CN:
return JavaFeatureForGwt.arraysAsList("Idle样例", "新游戏", "继续游戏");
return JavaFeatureForGwt.arraysAsList("Idle样例", "新游戏", "继续游戏", "语言", "重启后生效");
default:
return JavaFeatureForGwt.arraysAsList("Demo游戏", "新游戏", "继续游戏");
return JavaFeatureForGwt.arraysAsList("IdleDemo", "New Game", "Continue", "Language", "Take effect after restart");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import hundun.gdxgame.gamelib.base.IFrontend;
import hundun.gdxgame.gamelib.base.save.ISaveTool;
import hundun.gdxgame.gamelib.base.util.JavaFeatureForGwt;
import hundun.gdxgame.gamelib.starter.save.StarterSaveHandler;
import hundun.gdxgame.gamelib.starter.save.PairChildrenSaveHandler;
import hundun.gdxgame.idleshare.gamelib.framework.data.ConstructionSaveData;
import hundun.gdxgame.idleshare.gamelib.framework.data.GameplaySaveData;
import hundun.gdxgame.idleshare.gamelib.framework.data.SystemSettingSaveData;
Expand All @@ -16,10 +16,10 @@
* @author hundun
* Created on 2023/02/17
*/
public class DemoSaveHandler extends StarterSaveHandler<RootSaveData, SystemSettingSaveData, GameplaySaveData> {
public class DemoSaveHandler extends PairChildrenSaveHandler<RootSaveData, SystemSettingSaveData, GameplaySaveData> {

public DemoSaveHandler(IFrontend frontEnd, ISaveTool<RootSaveData> saveTool) {
super(frontEnd, RootSaveData.Factory.INSTANCE, saveTool);
super(frontEnd, RootSaveData.RootSaveExtension.INSTANCE, saveTool);

}

Expand All @@ -44,4 +44,5 @@ protected RootSaveData genereateStarterRootSaveData() {
.build();
}


}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package hundun.gdxgame.idledemo.logic;


import hundun.gdxgame.gamelib.starter.save.StarterSaveHandler.IFactory;
import hundun.gdxgame.gamelib.starter.save.IRootSaveExtension;
import hundun.gdxgame.idleshare.gamelib.framework.data.GameplaySaveData;
import hundun.gdxgame.idleshare.gamelib.framework.data.SystemSettingSaveData;
import hundun.gdxgame.idleshare.gamelib.framework.util.text.Language;
Expand All @@ -23,9 +23,9 @@ public class RootSaveData {
GameplaySaveData gameplaySave;
SystemSettingSaveData systemSettingSaveData;

public static final class Factory implements IFactory<RootSaveData, SystemSettingSaveData, GameplaySaveData> {
public static final class RootSaveExtension implements IRootSaveExtension<RootSaveData, SystemSettingSaveData, GameplaySaveData> {

public static final Factory INSTANCE = new Factory();
public static final RootSaveExtension INSTANCE = new RootSaveExtension();

@Override
public SystemSettingSaveData getSystemSave(RootSaveData rootSaveData) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,10 @@ public class DemoMenuScreen extends BaseIdleMenuScreen<DemoIdleGame, RootSaveDat

public DemoMenuScreen(DemoIdleGame game) {
super(game,
"IdleDemo",
new InputListener(){
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
game.getSaveHandler().gameLoadOrNew(true);
game.getSaveHandler().gameplayLoadOrStarter(true);
game.getScreenManager().pushScreen(DemoPlayScreen.class.getSimpleName(), null);
game.getAudioPlayManager().intoScreen(DemoPlayScreen.class.getSimpleName());
}
Expand All @@ -31,7 +30,7 @@ public boolean touchDown (InputEvent event, float x, float y, int pointer, int b
new InputListener(){
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
game.getSaveHandler().gameLoadOrNew(false);
game.getSaveHandler().gameplayLoadOrStarter(false);
game.getScreenManager().pushScreen(DemoPlayScreen.class.getSimpleName(), null);
game.getAudioPlayManager().intoScreen(DemoPlayScreen.class.getSimpleName());
}
Expand All @@ -41,7 +40,6 @@ public boolean touchDown (InputEvent event, float x, float y, int pointer, int b
}
}
);
// TODO Auto-generated constructor stub
}

}
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ allprojects {
gdxFreeTypeGwtVersion = '1.9.10.1'
gwtFrameworkVersion = '2.8.2'

hundunLibVersion = '85275f2fd0'
hundunLibVersion = '55fef3b76d'
raeleusStripeVersion = '1.4.1'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import hundun.gdxgame.idleshare.gamelib.framework.model.construction.BaseConstructionFactory;
import hundun.gdxgame.idleshare.gamelib.framework.model.construction.base.BaseConstruction;
import hundun.gdxgame.idleshare.gamelib.framework.util.text.IGameDictionary;
import hundun.gdxgame.idleshare.gamelib.framework.util.text.Language;
import hundun.gdxgame.idleshare.gamelib.framework.util.text.TextFormatTool;
import lombok.Getter;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.badlogic.gdx.scenes.scene2d.InputListener;
import com.badlogic.gdx.scenes.scene2d.ui.Button;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
Expand All @@ -16,11 +17,13 @@
import hundun.gdxgame.corelib.base.BaseHundunScreen;
import hundun.gdxgame.gamelib.base.util.JavaFeatureForGwt;
import hundun.gdxgame.idleshare.core.framework.BaseIdleGame;
import hundun.gdxgame.idleshare.gamelib.framework.util.text.Language;




public abstract class BaseIdleMenuScreen<T_GAME extends BaseIdleGame<T_SAVE>, T_SAVE> extends BaseHundunScreen<T_GAME, T_SAVE> {
public abstract class BaseIdleMenuScreen<T_GAME extends BaseIdleGame<T_SAVE>, T_SAVE>
extends BaseHundunScreen<T_GAME, T_SAVE> {


// private MenuComponent<String> menu;
Expand All @@ -40,8 +43,9 @@ public abstract class BaseIdleMenuScreen<T_GAME extends BaseIdleGame<T_SAVE>, T_
TextButton buttonNewGame;
TextButton buttonIntoSettingScreen;



public BaseIdleMenuScreen(T_GAME game,
String titleText,
InputListener buttonContinueGameInputListener,
InputListener buttonNewGameInputListener) {
super(game, game.getSharedViewport());
Expand Down Expand Up @@ -75,7 +79,7 @@ private void initScene2d() {
uiRootTable.add(titleLabel)
.row();

if (game.getSaveHandler().gameHasSave()) {
if (game.getSaveHandler().hasContinuedGameplaySave()) {
uiRootTable.add(buttonContinueGame)
.height(BUTTON_BIG_HEIGHT)
.fillY()
Expand All @@ -84,12 +88,24 @@ private void initScene2d() {
}

uiRootTable.add(buttonNewGame)
.height(game.getSaveHandler().gameHasSave() ? BUTTON_SMALL_HEIGHT : BUTTON_BIG_HEIGHT)
.height(game.getSaveHandler().hasContinuedGameplaySave() ? BUTTON_SMALL_HEIGHT : BUTTON_BIG_HEIGHT)
.fillY()
.padTop(10)
.row();

uiRootTable.debugAll();
uiRootTable.add(new LanguageSwitchBoard<>(this,
Language.values(),
game.getIdleGameplayExport().getLanguage(),
memuScreenTexts.get(3),
memuScreenTexts.get(4),
it -> game.getIdleGameplayExport().setLanguage(it))
)
.padTop(10);

if (game.debugMode) {
uiRootTable.debugAll();
}

}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package hundun.gdxgame.idleshare.core.starter.ui.screen.menu;

import java.util.function.Consumer;
import java.util.function.Function;

import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox.SelectBoxStyle;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener.ChangeEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Table;

import hundun.gdxgame.corelib.base.util.DrawableFactory;
import hundun.gdxgame.idleshare.core.framework.BaseIdleGame;
import hundun.gdxgame.idleshare.gamelib.framework.util.text.Language;
import lombok.Getter;

/**
* @author hundun
* Created on 2023/03/02
*/
public class LanguageSwitchBoard<T_GAME extends BaseIdleGame<T_SAVE>, T_SAVE> extends Table {

BaseIdleMenuScreen<T_GAME, T_SAVE> parent;
@Getter
SelectBox<Language> selectBox;
Label restartHintLabel;

LanguageSwitchBoard(BaseIdleMenuScreen<T_GAME, T_SAVE> parent,
Language[] values,
Language current,
String startText,
String hintText,
Consumer<Language> onSelect
) {
this.parent = parent;
this.setBackground(DrawableFactory.getSimpleBoardBackground());


this.add(new Label(startText, parent.getGame().getMainSkin()));


this.selectBox = new SelectBox<>(parent.getGame().getMainSkin());
selectBox.setItems(values);
selectBox.setSelected(current);
selectBox.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
restartHintLabel.setVisible(true);
onSelect.accept(selectBox.getSelected());
}
});
this.add(selectBox).row();

this.restartHintLabel = new Label(hintText, parent.getGame().getMainSkin());
restartHintLabel.setVisible(false);
this.add(restartHintLabel);


}



}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

import hundun.gdxgame.gamelib.base.IFrontend;
import hundun.gdxgame.gamelib.starter.listerner.ILogicFrameListener;
import hundun.gdxgame.gamelib.starter.save.StarterSaveHandler.ISubGameplaySaveHandler;
import hundun.gdxgame.gamelib.starter.save.StarterSaveHandler.ISubSystemSettingSaveHandler;
import hundun.gdxgame.gamelib.starter.save.PairChildrenSaveHandler.ISubGameplaySaveHandler;
import hundun.gdxgame.gamelib.starter.save.PairChildrenSaveHandler.ISubSystemSettingSaveHandler;
import hundun.gdxgame.idleshare.gamelib.framework.IdleGameplayContext;
import hundun.gdxgame.idleshare.gamelib.framework.data.ChildGameConfig;
import hundun.gdxgame.idleshare.gamelib.framework.data.GameplaySaveData;
Expand Down Expand Up @@ -39,6 +39,7 @@ public class IdleGameplayExport implements ILogicFrameListener,
private ChildGameConfig childGameConfig;
@Getter
private IGameDictionary gameDictionary;
@Setter
@Getter
private Language language;

Expand Down Expand Up @@ -155,7 +156,7 @@ public boolean constructionCanChangeWorkingLevel(String id, int delta) {
}

@Override
public void applyGameSaveData(GameplaySaveData gameplaySaveData) {
public void applyGameplaySaveData(GameplaySaveData gameplaySaveData) {
Collection<BaseConstruction> constructions = gameplayContext.getConstructionFactory().getConstructions();
for (BaseConstruction construction : constructions) {
if (gameplaySaveData.getConstructionSaveDataMap().containsKey(construction.getId())) {
Expand All @@ -169,7 +170,7 @@ public void applyGameSaveData(GameplaySaveData gameplaySaveData) {
}

@Override
public void currentSituationToSaveData(GameplaySaveData gameplaySaveData) {
public void currentSituationToGameplaySaveData(GameplaySaveData gameplaySaveData) {
Collection<BaseConstruction> constructions = gameplayContext.getConstructionFactory().getConstructions();
gameplaySaveData.setConstructionSaveDataMap(constructions.stream()
.collect(Collectors.toMap(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.util.stream.Collectors;

import hundun.gdxgame.gamelib.base.IFrontend;
import hundun.gdxgame.gamelib.starter.save.StarterSaveHandler.ISubGameplaySaveHandler;
import hundun.gdxgame.idleshare.gamelib.framework.data.ChildGameConfig;
import hundun.gdxgame.idleshare.gamelib.framework.data.GameplaySaveData;
import hundun.gdxgame.idleshare.gamelib.framework.model.construction.BaseConstructionFactory;
Expand Down

0 comments on commit 32ef713

Please sign in to comment.