improved instructions screen (#18)
This commit is contained in:
parent
08fdbeb79b
commit
e00b93d13c
@ -1,30 +1,30 @@
|
|||||||
package eu.jonahbauer.wizard.client.libgdx.screens;
|
package eu.jonahbauer.wizard.client.libgdx.screens;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
|
||||||
import com.badlogic.gdx.graphics.Color;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
||||||
|
import com.badlogic.gdx.math.MathUtils;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.GameAtlas;
|
import com.badlogic.gdx.utils.Align;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.actors.CardActor;
|
import eu.jonahbauer.wizard.client.libgdx.actors.CardActor;
|
||||||
|
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.state.Menu;
|
import eu.jonahbauer.wizard.client.libgdx.state.Menu;
|
||||||
|
import eu.jonahbauer.wizard.client.libgdx.util.WizardAssetManager;
|
||||||
import eu.jonahbauer.wizard.common.model.Card;
|
import eu.jonahbauer.wizard.common.model.Card;
|
||||||
|
|
||||||
public class InstructionScreen extends MenuScreen {
|
public class InstructionScreen extends MenuScreen {
|
||||||
|
private static final int MAX_PAGE = 3;
|
||||||
|
|
||||||
private TextButton buttonOK;
|
private TextButton buttonOK;
|
||||||
private VerticalGroup content;
|
private VerticalGroup content;
|
||||||
private ScrollPane scrollPane;
|
private ScrollPane scrollPane;
|
||||||
private Label title;
|
|
||||||
private TextButton nextPageButton;
|
private TextButton nextPageButton;
|
||||||
private TextButton previousPageButton;
|
private TextButton previousPageButton;
|
||||||
private HorizontalGroup horizontalButtonGroup;
|
|
||||||
private int pagecounter = 0;
|
private int currentPage = 0;
|
||||||
|
|
||||||
private TextureAtlas atlas;
|
private TextureAtlas atlas;
|
||||||
private CardActor card;
|
|
||||||
|
|
||||||
private final ChangeListener listener = new ChangeListener() {
|
private final ChangeListener listener = new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -33,17 +33,13 @@ public class InstructionScreen extends MenuScreen {
|
|||||||
game.getClient().execute(Menu.class, Menu::showMenuScreen);
|
game.getClient().execute(Menu.class, Menu::showMenuScreen);
|
||||||
sfxClick();
|
sfxClick();
|
||||||
} else if (actor == nextPageButton) {
|
} else if (actor == nextPageButton) {
|
||||||
switch(pagecounter) {
|
currentPage = MathUtils.clamp(currentPage + 1, 0, MAX_PAGE);
|
||||||
case 0: pagecounter++; showSecondPage(); break;
|
showPage(currentPage);
|
||||||
case 1: pagecounter++; showThirdPage(); break;
|
sfxClick();
|
||||||
default: throw new IllegalStateException();
|
|
||||||
}
|
|
||||||
} else if (actor == previousPageButton) {
|
} else if (actor == previousPageButton) {
|
||||||
switch(pagecounter) {
|
currentPage = MathUtils.clamp(currentPage - 1, 0, MAX_PAGE);
|
||||||
case 1: pagecounter--; showFirstPage(); break;
|
showPage(currentPage);
|
||||||
case 2: pagecounter--; showSecondPage(); break;
|
sfxClick();
|
||||||
default: throw new IllegalStateException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -52,199 +48,239 @@ public class InstructionScreen extends MenuScreen {
|
|||||||
super(game);
|
super(game);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void load() {
|
||||||
|
super.load();
|
||||||
|
assets.loadGame();
|
||||||
|
assets.finishLoading();
|
||||||
|
|
||||||
|
atlas = assets.get(WizardAssetManager.ATLAS_GAME);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void show() {
|
public void show() {
|
||||||
super.show();
|
super.show();
|
||||||
prepareScreen();
|
|
||||||
|
content = new VerticalGroup().left().grow().pad(20);
|
||||||
|
|
||||||
|
getTitle().moveBy(0, 80);
|
||||||
|
getButtonGroup().moveBy(0, - 80);
|
||||||
|
|
||||||
previousPageButton = new TextButton(messages.get("menu.instruction.previousPageButton"), skin);
|
previousPageButton = new TextButton(messages.get("menu.instruction.previousPageButton"), skin);
|
||||||
nextPageButton = new TextButton(messages.get("menu.instruction.nextPageButton"), skin);
|
previousPageButton.addListener(listener);
|
||||||
horizontalButtonGroup = new HorizontalGroup();
|
getButtonGroup().addActor(previousPageButton);
|
||||||
|
|
||||||
buttonOK = new TextButton(messages.get("menu.main.ok"), skin);
|
buttonOK = new TextButton(messages.get("menu.instruction.back"), skin);
|
||||||
|
buttonOK.addListener(listener);
|
||||||
|
getButtonGroup().addActor(buttonOK);
|
||||||
|
|
||||||
|
nextPageButton = new TextButton(messages.get("menu.instruction.nextPageButton"), skin);
|
||||||
|
nextPageButton.addListener(listener);
|
||||||
|
getButtonGroup().addActor(nextPageButton);
|
||||||
|
|
||||||
scrollPane = new ScrollPane(content, skin);
|
scrollPane = new ScrollPane(content, skin);
|
||||||
scrollPane.setFadeScrollBars(true);
|
scrollPane.setPosition(0.175f * WizardGame.WIDTH, 0.2f * WizardGame.HEIGHT);
|
||||||
scrollPane.setOverscroll(false,false);
|
scrollPane.setSize(0.65f * WizardGame.WIDTH, 400 + 0.1f * WizardGame.HEIGHT + 80);
|
||||||
scrollPane.setPosition(corners[0].getWidth() + 5, 0);
|
|
||||||
scrollPane.setSize(WizardGame.WIDTH - (2 * corners[0].getWidth() + 5), WizardGame.HEIGHT);
|
|
||||||
scrollPane.setColor(new Color(0, 0, 0, 0.75f));
|
|
||||||
|
|
||||||
showFirstPage();
|
|
||||||
Gdx.input.setInputProcessor(stage);
|
|
||||||
stage.addActor(scrollPane);
|
stage.addActor(scrollPane);
|
||||||
|
|
||||||
buttonOK.addListener(listener);
|
stage.addCaptureListener(new KeyboardFocusManager(scrollPane, previousPageButton, buttonOK, nextPageButton));
|
||||||
nextPageButton.addListener(listener);
|
|
||||||
previousPageButton.addListener(listener);
|
showFirstPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareScreen() {
|
private void showPage(int page) {
|
||||||
atlas = new TextureAtlas(Gdx.files.internal(GameAtlas.$PATH));
|
switch (page) {
|
||||||
content = new VerticalGroup();
|
case 0 -> showFirstPage();
|
||||||
|
case 1 -> showSecondPage();
|
||||||
|
case 2 -> showThirdPage();
|
||||||
|
case 3 -> showFourthPage();
|
||||||
|
default -> throw new AssertionError();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clearContent() {
|
|
||||||
while(content.getChildren().size > 0) {
|
|
||||||
content.removeActorAt(0, false);
|
|
||||||
}
|
|
||||||
horizontalButtonGroup.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addButtons() {
|
|
||||||
if(pagecounter != 0) {
|
|
||||||
horizontalButtonGroup.addActor(previousPageButton);
|
|
||||||
}
|
|
||||||
if(pagecounter != 2) {
|
|
||||||
horizontalButtonGroup.addActor(nextPageButton);
|
|
||||||
}
|
|
||||||
horizontalButtonGroup.space(10);
|
|
||||||
content.addActor(horizontalButtonGroup);
|
|
||||||
content.addActor(buttonOK);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showFirstPage() {
|
private void showFirstPage() {
|
||||||
clearContent();
|
currentPage = 0;
|
||||||
|
reset();
|
||||||
|
|
||||||
title = new Label(messages.get("menu.instruction.main"), skin, "enchanted");
|
startSection("menu.instruction.main.title");
|
||||||
content.addActor(title);
|
startSubsection("menu.instruction.main.welcome.title");
|
||||||
Label maintext1 = new Label(messages.get("menu.instruction.main.text1"), skin);
|
addParagraph("menu.instruction.main.welcome.par0");
|
||||||
maintext1.setFontScale(2.0f);
|
startSubsection("menu.instruction.main.general.title");
|
||||||
content.addActor(maintext1);
|
addParagraph("menu.instruction.main.general.par0");
|
||||||
Label maintext2 = new Label(messages.get("menu.instruction.main.text2"), skin);
|
|
||||||
content.addActor(maintext2);
|
|
||||||
Label general = new Label(messages.get("menu.instruction.general"), skin, "enchanted");
|
|
||||||
general.getText();
|
|
||||||
content.addActor(general);
|
|
||||||
Label introduction1 = new Label(messages.get("menu.instruction.introduction1"), skin);
|
|
||||||
content.addActor(introduction1);
|
|
||||||
Label introduction2 = new Label(messages.get("menu.instruction.introduction2"), skin);
|
|
||||||
content.addActor(introduction2);
|
|
||||||
Label headingStandardGame = new Label(messages.get("menu.instruction.standardgameheading"), skin, "enchanted");
|
|
||||||
content.addActor(headingStandardGame);
|
|
||||||
Label standardGame1 = new Label(messages.get("menu.instruction.standardgame1"), skin);
|
|
||||||
content.addActor(standardGame1);
|
|
||||||
Label standardGame2 = new Label(messages.get("menu.instruction.standardgame2"), skin);
|
|
||||||
content.addActor(standardGame2);
|
|
||||||
Label standardGame3 = new Label(messages.get("menu.instruction.standardgame3"), skin);
|
|
||||||
content.addActor(standardGame3);
|
|
||||||
HorizontalGroup colors = new HorizontalGroup();
|
|
||||||
colors.space(10);
|
|
||||||
for(Card.Suit suit : Card.Suit.values()) {
|
|
||||||
if (suit != Card.Suit.NONE) {
|
|
||||||
VerticalGroup cardColor = new VerticalGroup();
|
|
||||||
cardColor.space(10);
|
|
||||||
card = new CardActor(Card.Suit.values()[suit.ordinal()], atlas);
|
|
||||||
cardColor.addActor(card);
|
|
||||||
Label colorLabel = new Label(suit.toString(), skin);
|
|
||||||
cardColor.addActor(colorLabel);
|
|
||||||
colors.addActor(cardColor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
content.addActor(colors);
|
|
||||||
Label standardGame4 = new Label(messages.get("menu.instruction.standardgame4"), skin);
|
|
||||||
content.addActor(standardGame4);
|
|
||||||
|
|
||||||
HorizontalGroup wizardJester = new HorizontalGroup();
|
|
||||||
wizardJester.padTop(5);
|
|
||||||
wizardJester.space(10);
|
|
||||||
|
|
||||||
VerticalGroup wizardVerticalGroup = new VerticalGroup();
|
|
||||||
wizardVerticalGroup.space(10);
|
|
||||||
card = new CardActor(Card.values()[Card.BLUE_WIZARD.ordinal()], atlas);
|
|
||||||
wizardVerticalGroup.addActor(card);
|
|
||||||
Label wizardLabel = new Label(messages.get("menu.instruction.wizard"), skin);
|
|
||||||
wizardVerticalGroup.addActor(wizardLabel);
|
|
||||||
wizardJester.addActor(wizardVerticalGroup);
|
|
||||||
|
|
||||||
VerticalGroup jesterVerticalGroup = new VerticalGroup();
|
|
||||||
jesterVerticalGroup.space(10);
|
|
||||||
card = new CardActor(Card.values()[Card.BLUE_JESTER.ordinal()], atlas);
|
|
||||||
jesterVerticalGroup.addActor(card);
|
|
||||||
Label jesterLabel = new Label(messages.get("menu.instruction.jester"), skin);
|
|
||||||
jesterVerticalGroup.addActor(jesterLabel);
|
|
||||||
wizardJester.addActor(jesterVerticalGroup);
|
|
||||||
content.addActor(wizardJester);
|
|
||||||
Label standardGame5 = new Label(messages.get("menu.instruction.standardgame5"), skin);
|
|
||||||
content.addActor(standardGame5);
|
|
||||||
Label standardGame6 = new Label(messages.get("menu.instruction.standardgame6"), skin);
|
|
||||||
standardGame6.setFontScale(2.0f);
|
|
||||||
content.addActor(standardGame6);
|
|
||||||
Label standardGame7 = new Label(messages.get("menu.instruction.standardgame7"), skin);
|
|
||||||
content.addActor(standardGame7);
|
|
||||||
Label standardGame8 = new Label(messages.get("menu.instruction.standardgame8"), skin);
|
|
||||||
standardGame8.setFontScale(2.0f);
|
|
||||||
content.addActor(standardGame8);
|
|
||||||
Label standardGame9 = new Label(messages.get("menu.instruction.standardgame9"), skin);
|
|
||||||
content.addActor(standardGame9);
|
|
||||||
Label scoring = new Label(messages.get("menu.instruction.scoring"), skin, "enchanted");
|
|
||||||
content.addActor(scoring);
|
|
||||||
Label standardGame10 = new Label(messages.get("menu.instruction.standardgame10"), skin);
|
|
||||||
content.addActor(standardGame10);
|
|
||||||
addButtons();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showSecondPage() {
|
private void showSecondPage() {
|
||||||
clearContent();
|
currentPage = 1;
|
||||||
title.setText(messages.get("menu.instruction.variant.title"));
|
reset();
|
||||||
content.addActor(title);
|
|
||||||
Label variantsIntro = new Label(messages.get("menu.instruction.variant.intro"), skin);
|
startSection("menu.instruction.standard.title");
|
||||||
content.addActor(variantsIntro);
|
addParagraph("menu.instruction.standard.par0");
|
||||||
Table table = new Table(skin);
|
|
||||||
table.defaults().space(15.0f).left().pad(25.0f);
|
var colors = new HorizontalGroup().space(10).pad(10).center();
|
||||||
table.add(messages.get("menu.instruction.variant.default"));
|
for (Card.Suit suit : Card.Suit.values()) {
|
||||||
table.add(messages.get("menu.instruction.variant.default.description"));
|
if (suit != Card.Suit.NONE) {
|
||||||
table.row();
|
VerticalGroup suitGroup = new VerticalGroup().space(10);
|
||||||
table.add(messages.get("menu.instruction.variant.defaultpm1"));
|
suitGroup.addActor(new CardActor(suit, atlas));
|
||||||
table.add(messages.get("menu.instruction.variant.defaultpm1.description"));
|
suitGroup.addActor(new Label(switch (suit) {
|
||||||
table.row();
|
case RED -> messages.get("menu.instruction.suit.red");
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2016"));
|
case GREEN -> messages.get("menu.instruction.suit.green");
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2016.description"));
|
case BLUE -> messages.get("menu.instruction.suit.blue");
|
||||||
table.row();
|
case YELLOW -> messages.get("menu.instruction.suit.yellow");
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2016pm1"));
|
default -> suit.toString();
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2016pm1.description"));
|
}, skin));
|
||||||
table.row();
|
colors.addActor(suitGroup);
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2021"));
|
}
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2021.description"));
|
}
|
||||||
table.row();
|
content.addActor(colors);
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2021pm1"));
|
|
||||||
table.add(messages.get("menu.instruction.variant.anniversary2021pm1.description"));
|
addParagraph("menu.instruction.standard.par1");
|
||||||
table.row();
|
|
||||||
content.addActor(table);
|
var specialCards = new HorizontalGroup().space(10).pad(10).center();
|
||||||
addButtons();
|
|
||||||
scrollPane.setScrollY(0);
|
var wizard = new VerticalGroup();
|
||||||
|
wizard.addActor(new CardActor(Card.BLUE_WIZARD, atlas));
|
||||||
|
wizard.addActor(new Label(messages.get("menu.instruction.wizard"), skin));
|
||||||
|
specialCards.addActor(wizard);
|
||||||
|
|
||||||
|
var jester = new VerticalGroup();
|
||||||
|
jester.addActor(new CardActor(Card.BLUE_JESTER, atlas));
|
||||||
|
jester.addActor(new Label(messages.get("menu.instruction.jester"), skin));
|
||||||
|
specialCards.addActor(jester);
|
||||||
|
|
||||||
|
content.addActor(specialCards);
|
||||||
|
|
||||||
|
addParagraph("menu.instruction.standard.par2");
|
||||||
|
|
||||||
|
startSubsection("menu.instruction.standard.trick.title");
|
||||||
|
addParagraph("menu.instruction.standard.trick.par0");
|
||||||
|
|
||||||
|
startSubsection("menu.instruction.standard.special_cases.title");
|
||||||
|
addParagraph("menu.instruction.standard.special_cases.par0");
|
||||||
|
|
||||||
|
startSubsection("menu.instruction.standard.scoring.title");
|
||||||
|
addParagraph("menu.instruction.standard.scoring.par0");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showThirdPage() {
|
private void showThirdPage() {
|
||||||
clearContent();
|
currentPage = 2;
|
||||||
title.setText(messages.get("menu.instruction.special_card.title"));
|
reset();
|
||||||
content.addActor(title);
|
|
||||||
Label specialCardsIntro = new Label(messages.get("menu.instruction.special_card.intro"), skin);
|
startSection("menu.instruction.variant.title");
|
||||||
content.addActor(specialCardsIntro);
|
|
||||||
Table table = new Table(skin);
|
Label variantsIntro = new Label(messages.get("menu.instruction.variant.intro"), skin);
|
||||||
table.defaults().space(15.0f).left().pad(25.0f);
|
content.addActor(variantsIntro);
|
||||||
table.add(new CardActor((Card.DRAGON), atlas));
|
Table table = new Table(skin).padTop(10);
|
||||||
table.add(messages.get("menu.instruction.special_card.dragon"));
|
table.defaults().space(10.0f).left().top();
|
||||||
|
table.columnDefaults(1).grow();
|
||||||
|
table.add(messages.get("menu.instruction.variant.default"));
|
||||||
|
table.add(messages.get("menu.instruction.variant.default.description")).getActor().setWrap(true);
|
||||||
table.row();
|
table.row();
|
||||||
table.add(new CardActor((Card.FAIRY), atlas));
|
table.add(messages.get("menu.instruction.variant.defaultpm1"));
|
||||||
table.add(messages.get("menu.instruction.special_card.fairy"));
|
table.add(messages.get("menu.instruction.variant.defaultpm1.description")).getActor().setWrap(true);
|
||||||
table.row();
|
table.row();
|
||||||
table.add(new CardActor((Card.BOMB), atlas));
|
table.add(messages.get("menu.instruction.variant.anniversary2016"));
|
||||||
table.add(messages.get("menu.instruction.special_card.bomb"));
|
table.add(messages.get("menu.instruction.variant.anniversary2016.description")).getActor().setWrap(true);
|
||||||
table.row();
|
table.row();
|
||||||
table.add(new CardActor((Card.WEREWOLF), atlas));
|
table.add(messages.get("menu.instruction.variant.anniversary2016pm1"));
|
||||||
table.add(messages.get("menu.instruction.special_card.werewolf"));
|
table.add(messages.get("menu.instruction.variant.anniversary2016pm1.description")).getActor().setWrap(true);
|
||||||
table.row();
|
table.row();
|
||||||
table.add(new CardActor((Card.JUGGLER), atlas));
|
table.add(messages.get("menu.instruction.variant.anniversary2021"));
|
||||||
table.add(messages.get("menu.instruction.special_card.juggler"));
|
table.add(messages.get("menu.instruction.variant.anniversary2021.description")).getActor().setWrap(true);
|
||||||
table.row();
|
table.row();
|
||||||
table.add(new CardActor((Card.CLOUD), atlas));
|
table.add(messages.get("menu.instruction.variant.anniversary2021pm1"));
|
||||||
table.add(messages.get("menu.instruction.special_card.cloud"));
|
table.add(messages.get("menu.instruction.variant.anniversary2021pm1.description")).getActor().setWrap(true);
|
||||||
table.row();
|
|
||||||
table.add(new CardActor((Card.CHANGELING), atlas));
|
|
||||||
table.add(messages.get("menu.instruction.special_card.changeling"));
|
|
||||||
table.row();
|
table.row();
|
||||||
content.addActor(table);
|
content.addActor(table);
|
||||||
addButtons();
|
}
|
||||||
|
|
||||||
|
private void showFourthPage() {
|
||||||
|
currentPage = 3;
|
||||||
|
reset();
|
||||||
|
|
||||||
|
startSection("menu.instruction.special_card.title");
|
||||||
|
addParagraph("menu.instruction.special_card.intro");
|
||||||
|
|
||||||
|
Table table = new Table(skin).padTop(10);
|
||||||
|
table.defaults().space(10.0f).left().top();
|
||||||
|
table.columnDefaults(1).grow();
|
||||||
|
table.add(new CardActor((Card.DRAGON), atlas));
|
||||||
|
table.add(messages.get("menu.instruction.special_card.dragon")).getActor().setWrap(true);
|
||||||
|
table.row();
|
||||||
|
table.add(new CardActor((Card.FAIRY), atlas));
|
||||||
|
table.add(messages.get("menu.instruction.special_card.fairy")).getActor().setWrap(true);
|
||||||
|
table.row();
|
||||||
|
table.add(new CardActor((Card.BOMB), atlas));
|
||||||
|
table.add(messages.get("menu.instruction.special_card.bomb")).getActor().setWrap(true);
|
||||||
|
table.row();
|
||||||
|
table.add(new CardActor((Card.WEREWOLF), atlas));
|
||||||
|
table.add(messages.get("menu.instruction.special_card.werewolf")).getActor().setWrap(true);
|
||||||
|
table.row();
|
||||||
|
table.add(new CardActor((Card.JUGGLER), atlas));
|
||||||
|
table.add(messages.get("menu.instruction.special_card.juggler")).getActor().setWrap(true);
|
||||||
|
table.row();
|
||||||
|
table.add(new CardActor((Card.CLOUD), atlas));
|
||||||
|
table.add(messages.get("menu.instruction.special_card.cloud")).getActor().setWrap(true);
|
||||||
|
table.row();
|
||||||
|
table.add(new CardActor((Card.CHANGELING), atlas));
|
||||||
|
table.add(messages.get("menu.instruction.special_card.changeling")).getActor().setWrap(true);
|
||||||
|
table.row();
|
||||||
|
content.addActor(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reset() {
|
||||||
|
updateButtons();
|
||||||
|
content.clearChildren();
|
||||||
|
scrollPane.setScrollY(0);
|
||||||
|
scrollPane.updateVisualScroll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateButtons() {
|
||||||
|
previousPageButton.setDisabled(currentPage == 0);
|
||||||
|
nextPageButton.setDisabled(currentPage == MAX_PAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startSection(String title) {
|
||||||
|
if (content.hasChildren()) {
|
||||||
|
var spacerPre = new Actor();
|
||||||
|
spacerPre.setHeight(20);
|
||||||
|
spacerPre.setName("spacer");
|
||||||
|
content.addActor(spacerPre);
|
||||||
|
}
|
||||||
|
|
||||||
|
var label = new Label(messages.get(title).trim(), skin, "enchanted");
|
||||||
|
label.setAlignment(Align.center);
|
||||||
|
content.addActor(label);
|
||||||
|
|
||||||
|
var spacerPost = new Actor();
|
||||||
|
spacerPost.setHeight(10);
|
||||||
|
spacerPost.setName("spacer");
|
||||||
|
content.addActor(spacerPost);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startSubsection(String title) {
|
||||||
|
if (content.hasChildren() && !"spacer".equals(content.getChild(content.getChildren().size - 1).getName())) {
|
||||||
|
var spacerPre = new Actor();
|
||||||
|
spacerPre.setHeight(10);
|
||||||
|
spacerPre.setName("spacer");
|
||||||
|
content.addActor(spacerPre);
|
||||||
|
}
|
||||||
|
|
||||||
|
var label = new Label(messages.get(title), skin);
|
||||||
|
label.setFontScale(2.0f);
|
||||||
|
label.setAlignment(Align.center);
|
||||||
|
content.addActor(label);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addParagraph(String paragraph) {
|
||||||
|
var label = new Label(messages.get(paragraph), skin);
|
||||||
|
label.setAlignment(Align.left);
|
||||||
|
label.setWrap(true);
|
||||||
|
content.addActor(label);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
assets.unloadGame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,9 @@ import com.badlogic.gdx.Gdx;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.utils.Layout;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.UiskinAtlas;
|
import eu.jonahbauer.wizard.client.libgdx.UiskinAtlas;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
import eu.jonahbauer.wizard.client.libgdx.WizardGame;
|
||||||
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
import eu.jonahbauer.wizard.client.libgdx.listeners.KeyboardFocusManager;
|
||||||
@ -57,20 +59,39 @@ public class MainMenuScreen extends MenuScreen {
|
|||||||
stage.addActor(symbol);
|
stage.addActor(symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
buttonPlay = new TextButton(messages.get("menu.main.play"), skin);
|
var buttonGroup = new VerticalGroup() {
|
||||||
buttonPlay.setPosition((WizardGame.WIDTH - buttonPlay.getWidth()) / 2f, 170 + 504 - 125f);
|
@Override
|
||||||
buttonPlay.addListener(listener);
|
public void layout() {
|
||||||
buttonInstruction = new TextButton(messages.get("menu.instruction.main"), skin);
|
float contentHeight = 0;
|
||||||
buttonInstruction.setPosition((WizardGame.WIDTH - buttonInstruction.getWidth()) / 2f, 170 + 494 - 189.5f - 125f + buttonInstruction.getHeight() / 2f);
|
for (Actor child : getChildren()) {
|
||||||
buttonInstruction.addListener(listener);
|
if (child instanceof Layout layout) {
|
||||||
buttonQuit = new TextButton(messages.get("menu.main.quit"), skin);
|
contentHeight += layout.getPrefHeight();
|
||||||
buttonQuit.setPosition((WizardGame.WIDTH - buttonQuit.getWidth()) / 2f, 170 + 120f);
|
} else {
|
||||||
buttonQuit.addListener(listener);
|
contentHeight += child.getHeight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
stage.addActor(buttonPlay);
|
space(Math.max(0, (getHeight() - contentHeight) / (getChildren().size - 1)));
|
||||||
stage.addActor(buttonInstruction);
|
super.layout();
|
||||||
stage.addActor(buttonQuit);
|
}
|
||||||
stage.addCaptureListener(new KeyboardFocusManager(buttonPlay, buttonQuit));
|
}.center().fill();
|
||||||
|
buttonGroup.setPosition(WizardGame.WIDTH * 0.25f, 192 + 60f);
|
||||||
|
buttonGroup.setSize(WizardGame.WIDTH * 0.5f, 504 - 120f);
|
||||||
|
stage.addActor(buttonGroup);
|
||||||
|
|
||||||
|
buttonPlay = new TextButton(messages.get("menu.main.play"), skin);
|
||||||
|
buttonPlay.addListener(listener);
|
||||||
|
buttonGroup.addActor(buttonPlay);
|
||||||
|
|
||||||
|
buttonInstruction = new TextButton(messages.get("menu.main.instructions"), skin);
|
||||||
|
buttonInstruction.addListener(listener);
|
||||||
|
buttonGroup.addActor(buttonInstruction);
|
||||||
|
|
||||||
|
buttonQuit = new TextButton(messages.get("menu.main.quit"), skin);
|
||||||
|
buttonQuit.addListener(listener);
|
||||||
|
buttonGroup.addActor(buttonQuit);
|
||||||
|
|
||||||
|
stage.addCaptureListener(new KeyboardFocusManager(buttonPlay, buttonInstruction, buttonQuit));
|
||||||
|
|
||||||
buttonPlay.setName("button_player");
|
buttonPlay.setName("button_player");
|
||||||
buttonInstruction.setName("button_instruction");
|
buttonInstruction.setName("button_instruction");
|
||||||
|
@ -9,7 +9,7 @@ import lombok.AccessLevel;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
public abstract class MenuScreen extends WizardScreen {
|
public abstract class MenuScreen extends WizardScreen {
|
||||||
protected Image[] corners;
|
private Image[] corners;
|
||||||
@Getter(value = AccessLevel.PROTECTED, lazy = true)
|
@Getter(value = AccessLevel.PROTECTED, lazy = true)
|
||||||
private final HorizontalGroup buttonGroup = createButtonGroup();
|
private final HorizontalGroup buttonGroup = createButtonGroup();
|
||||||
|
|
||||||
@ -20,6 +20,9 @@ public abstract class MenuScreen extends WizardScreen {
|
|||||||
@Getter(value = AccessLevel.PROTECTED, lazy = true)
|
@Getter(value = AccessLevel.PROTECTED, lazy = true)
|
||||||
private final SelectBox.SelectBoxStyle selectBoxErrorStyle = skin.get("error", SelectBox.SelectBoxStyle.class);
|
private final SelectBox.SelectBoxStyle selectBoxErrorStyle = skin.get("error", SelectBox.SelectBoxStyle.class);
|
||||||
|
|
||||||
|
@Getter(AccessLevel.PROTECTED)
|
||||||
|
private Image title;
|
||||||
|
|
||||||
public MenuScreen(WizardGame game) {
|
public MenuScreen(WizardGame game) {
|
||||||
super(game);
|
super(game);
|
||||||
}
|
}
|
||||||
@ -37,7 +40,7 @@ public abstract class MenuScreen extends WizardScreen {
|
|||||||
stage.addActor(corner);
|
stage.addActor(corner);
|
||||||
}
|
}
|
||||||
|
|
||||||
var title = new Image(skin.getRegion(UiskinAtlas.TITLE));
|
title = new Image(skin.getRegion(UiskinAtlas.TITLE));
|
||||||
title.setSize(810, 192);
|
title.setSize(810, 192);
|
||||||
title.setPosition(555, WizardGame.HEIGHT - 192 - 96);
|
title.setPosition(555, WizardGame.HEIGHT - 192 - 96);
|
||||||
stage.addActor(title);
|
stage.addActor(title);
|
||||||
@ -62,10 +65,11 @@ public abstract class MenuScreen extends WizardScreen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void sizeChanged() {
|
protected void sizeChanged() {
|
||||||
setPosition((WizardGame.WIDTH - getWidth()) / 2f, WizardGame.HEIGHT * 0.15f);
|
setPosition((WizardGame.WIDTH - getWidth()) / 2f, getY());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
group.setSize(WizardGame.WIDTH * 0.45f, 125);
|
group.setSize(WizardGame.WIDTH * 0.45f, 125);
|
||||||
|
group.setY(WizardGame.HEIGHT * 0.15f);
|
||||||
group.center();
|
group.center();
|
||||||
stage.addActor(group);
|
stage.addActor(group);
|
||||||
return group;
|
return group;
|
||||||
|
@ -56,7 +56,7 @@ public abstract class WizardScreen implements Screen {
|
|||||||
stage = new Stage(viewport);
|
stage = new Stage(viewport);
|
||||||
stage.addListener(new ButtonKeyListener());
|
stage.addListener(new ButtonKeyListener());
|
||||||
stage.addListener(new AutoFocusListener());
|
stage.addListener(new AutoFocusListener());
|
||||||
//stage.setDebugAll(WizardGame.DEBUG);
|
stage.setDebugAll(WizardGame.DEBUG);
|
||||||
|
|
||||||
Gdx.input.setInputProcessor(stage);
|
Gdx.input.setInputProcessor(stage);
|
||||||
|
|
||||||
|
@ -1,118 +1,118 @@
|
|||||||
# suppress inspection "UnusedProperty" for whole file
|
# suppress inspection "UnusedProperty" for whole file
|
||||||
menu.main.play=Play
|
menu.main.play=Play
|
||||||
|
menu.main.instructions=Instructions
|
||||||
menu.main.quit=Close
|
menu.main.quit=Close
|
||||||
menu.main.ok=OK
|
|
||||||
|
|
||||||
menu.instruction.nextPageButton=Next Page
|
menu.instruction.nextPageButton=>>
|
||||||
menu.instruction.previousPageButton=Previous Page
|
menu.instruction.previousPageButton=<<
|
||||||
|
menu.instruction.back=Back
|
||||||
|
|
||||||
menu.instruction.wizard=Wizard
|
menu.instruction.wizard=Wizard
|
||||||
menu.instruction.jester=Jester
|
menu.instruction.jester=Jester
|
||||||
|
menu.instruction.suit.blue=Blue
|
||||||
|
menu.instruction.suit.green=Green
|
||||||
|
menu.instruction.suit.yellow=Yellow
|
||||||
|
menu.instruction.suit.red=Red
|
||||||
|
|
||||||
menu.instruction.main=Instruction of the game
|
menu.instruction.main.title=Instructions
|
||||||
menu.instruction.main.text1=Welcome
|
menu.instruction.main.welcome.title=Welcome
|
||||||
menu.instruction.main.text2=On this page you will find the rules of the basic game and the scoring system.\n\
|
menu.instruction.main.welcome.par0=On the next page you will find the rules of the basic game and the scoring system. \
|
||||||
On the second page is an overview of the possible game variants \nand on the third an overview of the special cards.\n
|
On the third page there is an overview of the possible game variants and on the fourth an overview of the special cards.
|
||||||
menu.instruction.general=In General
|
menu.instruction.main.general.title=In General
|
||||||
menu.instruction.introduction1=Wizard is a trick game with the goal of predicting the exact number of self-winning tricks in each round.
|
menu.instruction.main.general.par0=Wizard is a trick game with the goal of predicting the exact number of self-winning \
|
||||||
menu.instruction.introduction2=For correct predictions each player gets points and in the end the player with the highest score wins.\n
|
tricks in each round. For correct predictions each player gets points and in the end the player with the highest score\
|
||||||
menu.instruction.standardgameheading=Basic Game
|
\ wins.
|
||||||
menu.instruction.standardgame1=In the basic game there are 60 different cards.
|
menu.instruction.standard.title=Basic Game
|
||||||
menu.instruction.standardgame2=52 of these cards are distributed among the following four suits.
|
menu.instruction.standard.par0=In the basic game there are 60 different cards. 52 of these cards are distributed among \
|
||||||
menu.instruction.standardgame3=The highest card is 13, the lowest card is 1.
|
the following four suits. The highest card is 13, the lowest card is 1.
|
||||||
menu.instruction.standardgame4=The 8 remaining cards are divided equally between Wizards and Jesters and have no suit.\n\
|
menu.instruction.standard.par1=The 8 remaining cards are divided equally between Wizards and Jesters and have no suit. \
|
||||||
The four wizards have a higher value than all other cards and the four jesters have a lower value.
|
The four wizards have a higher value than all other cards and the four jesters have a lower value.
|
||||||
menu.instruction.standardgame5=For each round count: the number of rounds equals the number of cards per player equals and the number of tricks\n\
|
menu.instruction.standard.par2=For each round count: the number of rounds equals the number of cards per player equals \
|
||||||
the cards are dealt virtually as the dealer one of the players.\n\
|
and the number of tricks the cards are dealt virtually as the dealer one of the players. After the cards are dealt, \
|
||||||
After the cards are dealt, a trump suit is determined. It corresponds to the suit of the card\n\
|
a trump suit is determined. It corresponds to the suit of the card which is displayed in the bottom left corner of \
|
||||||
which is displayed in the bottom left corner of the game screen.\n\
|
the game screen. A trump is any card of the trump suit and higher than all cards of the other suits.\n\
|
||||||
A trump is any card of the trump suit and higher than all cards of the other suits.\n\
|
Important. If the card determining the trump is a jester, there is no trump in this round. \
|
||||||
Important. If the card determining the trump is a jester, there is no trump in this round.\n\
|
If the trump card is a Wizard, the dealer chooses a trump suit. \
|
||||||
If the trump card is a Wizard, the dealer chooses a trump suit.\n\
|
Once the trump suit is determined, each player states how many tricks they want to make in the round. \
|
||||||
Once the trump suit is determined, each player states how many tricks they want to make in the round.\n\
|
Tip for newcomers: A good hand for many tricks has wizards, trump cards and high suit cards.
|
||||||
Tip for newcomers: A good hand for many tricks has wizards, trump cards and high suit cards.\n
|
menu.instruction.standard.trick.title=The process of a trick
|
||||||
menu.instruction.standardgame6=The process of a trick
|
menu.instruction.standard.trick.par0=The first card of a trick is played at the first trick by the dealer's virtual \
|
||||||
menu.instruction.standardgame7=The first card of a trick is played at the first trick by the dealer's virtual left neighbor.\n\
|
left neighbor. All further tricks are opened by the player who won the last trick. After that, all players play one \
|
||||||
All further tricks are opened by the player who won the last trick.\n\
|
card in clockwise order. To the suit of the first card must be added. This means that if a player has a suit of this \
|
||||||
After that, all players play one card in clockwise order.\n\
|
card he must play it and must not play a card of any other suit. Exceptions to this are wizards and jesters. These \
|
||||||
To the suit of the first card must be added. This means that if a player has a suit of this card\n\
|
cards may always be played! The trick is won by the player with the highest card. The following descending rank for \
|
||||||
he must play it and must not play a card of any other suit.\n\
|
the highest card applies:\n\
|
||||||
Exceptions to this are wizards and jesters. These cards may always be played!\n\
|
\ + The first wizard in a trick\n\
|
||||||
The trick is won by the player with the highest card.\nThe following descending rank for the highest card applies:\n\
|
\ + The highest trump card\n\
|
||||||
+The first wizard in a trick\n\
|
\ + The highest suit card of the played suit.
|
||||||
+The highest trump card\n\
|
menu.instruction.standard.special_cases.title=Special cases
|
||||||
+The highest suit card of the played suit.
|
menu.instruction.standard.special_cases.par0=If a player starts a trick with a wizard, the other players may play any \
|
||||||
menu.instruction.standardgame8=Special cases
|
cards, including any other Wizards or Jesters. The trick goes to the first Wizard in any case.\n\n\
|
||||||
menu.instruction.standardgame9=If a player starts a trick with a wizard, the other players may play any\n\
|
If a player opens a trick with a Jester, any cards may be played until an another player plays a wizard or a number \
|
||||||
cards, including any other Wizards or Jesters.\nThe trick goes to the first Wizard in any case.\n\n\
|
card. If it is a number card, all further cards must be added to its suit. If it is a wizard, any cards may be played. \
|
||||||
If a player opens a trick with a Jester, any cards may be played\n\
|
In the rare case that only jesters are in the trick, the first jester wins.
|
||||||
until an another player plays a wizard or a number card. If it is a number card,\n\
|
menu.instruction.standard.scoring.title=Scoring
|
||||||
all further cards must be added to its suit.\n\
|
menu.instruction.standard.scoring.par0=If the prediction is correct, 10 points are awarded for each trick made plus \
|
||||||
If it is a wizard, any cards may be played.\n\
|
20 points as a basic amount.\nIf the prediction is wrong, -10 points are awarded for each deviating trick and the \
|
||||||
In the rare case that only jesters are in the trick, the first jester wins.\n
|
player does not receive any basic amount.\n\
|
||||||
menu.instruction.scoring=Scoring
|
The score is then offset against a player's previous score.
|
||||||
menu.instruction.standardgame10=If the prediction is correct, 10 points are awarded for each trick made plus\n\
|
|
||||||
20 points as a basic amount.\nIf the prediction is wrong, -10 points are awarded for each deviating trick and the player\n\
|
|
||||||
does not receive any basic amount.\n\
|
|
||||||
The score is then offset against a player's previous score.\n
|
|
||||||
|
|
||||||
menu.instruction.variant.title=Variants of the game
|
menu.instruction.variant.title=Variants of the game
|
||||||
menu.instruction.variant.intro=When creating a new game, the following 6 variants can be selected.
|
menu.instruction.variant.intro=When creating a new game, the following 6 variants can be selected.
|
||||||
menu.instruction.variant.default=1) Default
|
menu.instruction.variant.default=1) Default
|
||||||
menu.instruction.variant.default.description=The basic game with the basic rules.
|
menu.instruction.variant.default.description=The basic game with the basic rules.
|
||||||
menu.instruction.variant.defaultpm1=2) Default PM1
|
menu.instruction.variant.defaultpm1=2) Default PM1
|
||||||
menu.instruction.variant.defaultpm1.description=The basic game with the additional condition that the prediction\n\
|
menu.instruction.variant.defaultpm1.description=The basic game with the additional condition that the sum of all \
|
||||||
must not correspond to the number of rounds.\n\
|
predictions must not add up to the number of tricks. \
|
||||||
This means: the tip of at least one player is wrong
|
This means: the prediction of at least one player is wrong
|
||||||
menu.instruction.variant.anniversary2016=3) Anniversary 2016
|
menu.instruction.variant.anniversary2016=3) Anniversary 2016
|
||||||
menu.instruction.variant.anniversary2016.description=The basic game with the basic rules and the special cards of the anniversary edition 2016.
|
menu.instruction.variant.anniversary2016.description=The basic game with the basic rules and the special cards of the \
|
||||||
|
anniversary edition 2016.
|
||||||
menu.instruction.variant.anniversary2016pm1=4) Anniversary 2016 PM1
|
menu.instruction.variant.anniversary2016pm1=4) Anniversary 2016 PM1
|
||||||
menu.instruction.variant.anniversary2016pm1.description=The basic game with the special cards of the anniversary edition 2016, with the\n\
|
menu.instruction.variant.anniversary2016pm1.description=The basic game with the special cards of the anniversary \
|
||||||
additional condition that the prediction must not correspond to the number of rounds.
|
edition 2016, with the additional condition that the prediction must not correspond to the number of rounds.
|
||||||
menu.instruction.variant.anniversary2021=5) Anniversary 2021
|
menu.instruction.variant.anniversary2021=5) Anniversary 2021
|
||||||
menu.instruction.variant.anniversary2021.description=The basic game with the basic rules and the special cards of the anniversary edition 2021.
|
menu.instruction.variant.anniversary2021.description=The basic game with the basic rules and the special cards of the \
|
||||||
|
anniversary edition 2021.
|
||||||
menu.instruction.variant.anniversary2021pm1=6) Anniversary 2021 PM1
|
menu.instruction.variant.anniversary2021pm1=6) Anniversary 2021 PM1
|
||||||
menu.instruction.variant.anniversary2021pm1.description=The basic game with the special cards of the 2021 anniversary edition, with the\n\
|
menu.instruction.variant.anniversary2021pm1.description=The basic game with the special cards of the 2021 anniversary \
|
||||||
additional condition that the prediction must not correspond to the number of rounds.
|
edition, with the additional condition that the prediction must not correspond to the number of rounds.
|
||||||
|
|
||||||
menu.instruction.special_card.title=Special cards
|
menu.instruction.special_card.title=Special cards
|
||||||
menu.instruction.special_card.intro=The first six of the following special cards are part of both anniversary editions of 2016 and 2021.\n\
|
menu.instruction.special_card.intro=The first six of the following special cards are part of both anniversary editions of 2016 and 2021. \
|
||||||
The changeling is only part of the anniversary edition of 2021.
|
The changeling is only part of the anniversary edition of 2021.
|
||||||
menu.instruction.special_card.dragon=The dragon is always playable.\n\
|
menu.instruction.special_card.dragon=The dragon is always playable. \
|
||||||
The dragon is the highest card, even higher than every wizard,\n\
|
The dragon is the highest card, even higher than every wizard, \
|
||||||
and wins every trick except the same trick contains the fairy.\n\
|
and wins every trick except the same trick contains the fairy. \
|
||||||
If the dragon is the determining trump card the dealer chooses the trump suit.\n\
|
If the dragon is the determining trump card the dealer chooses the trump suit. \
|
||||||
The dragon as the first card of a trick has the same effect as a wizard.
|
The dragon as the first card of a trick has the same effect as a wizard.
|
||||||
menu.instruction.special_card.fairy=The fairy is always playable.\n\
|
menu.instruction.special_card.fairy=The fairy is always playable. \
|
||||||
The fairy is the lowest card of the game even lower than every jester\n\
|
The fairy is the lowest card of the game even lower than every jester \
|
||||||
and looses every trick but a trick contains fairy and dragon. Then the fairy wins this trick.\n\
|
and looses every trick but a trick contains fairy and dragon. Then the fairy wins this trick. \
|
||||||
If the fairy is the determining trump card there is no trump in the current round.\n\
|
If the fairy is the determining trump card there is no trump in the current round. \
|
||||||
The fairy as the first card of a trick has the same effect as a jester.
|
The fairy as the first card of a trick has the same effect as a jester.
|
||||||
menu.instruction.special_card.bomb=The bomb is always playable.\n\
|
menu.instruction.special_card.bomb=The bomb is always playable. \
|
||||||
No player wins the trick containing the bomb and the trick does not count for any prediction.\n\
|
No player wins the trick containing the bomb and the trick does not count for any prediction. \
|
||||||
The player, who would have won the trick, starts the next trick.\n\
|
The player, who would have won the trick, starts the next trick. \
|
||||||
If the bomb is the determining trump card there is no trump in the current round.\n\
|
If the bomb is the determining trump card there is no trump in the current round. \
|
||||||
The bomb as the first card of a trick causes the same rules as a jester.
|
The bomb as the first card of a trick causes the same rules as a jester.
|
||||||
menu.instruction.special_card.werewolf=If a player has the werewolf in his hand, he exchanges it at the beginning of the trick round\n\
|
menu.instruction.special_card.werewolf=If a player has the werewolf in his hand, he exchanges it at the beginning of the trick round \
|
||||||
for the trump-defining card.\n\
|
for the trump-defining card. Then the player chooses a trump suit or chooses that there will be no trump this round. \
|
||||||
Then the player chooses a trump suit or chooses that there will be no trump this round.\n\
|
After that, the first player makes his prediction. If the dealer reveals the werewolf when determining the trump suit, \
|
||||||
After that, the first player makes his prediction.\n\
|
|
||||||
If the dealer reveals the werewolf when determining the trump suit,\n\
|
|
||||||
he determines a trump suit.
|
he determines a trump suit.
|
||||||
menu.instruction.special_card.juggler=The juggler is always playable.\n\
|
menu.instruction.special_card.juggler=The juggler is always playable. \
|
||||||
He has the value 7 \u00bd, therefore he is higher than a 7 and lower than a 8.\n\
|
He has the value 7 \u00bd, therefore he is higher than a 7 and lower than an 8. \
|
||||||
The acting player determines the juggler's suit.\n\
|
The acting player determines the juggler's suit. After the trick every player gives one of his cards to his left \
|
||||||
After the trick every player gives one of his cards to his left neighbor.\n\
|
neighbor. If the juggler is the determining trump card the dealer chooses the trump suit. The juggler as the first \
|
||||||
If the juggler is the determining trump card the dealer chooses the trump suit.\n\
|
card of a trick determines the suit of a trick.
|
||||||
The juggler as the first card of a trick determines the suit of a trick.
|
menu.instruction.special_card.cloud=The cloud is always playable. \
|
||||||
menu.instruction.special_card.cloud=The cloud is always playable.\n\
|
She has the value 9 \u00bd, therefore he is higher than a 9 and lower than a 10. The acting player determines the \
|
||||||
She has the value 9 \u00bd, therefore he is higher than a 9 and lower than a 10.\n\
|
suit of the cloud. If any of a player's tricks contains the cloud, he must increment or decrease his prediction by 1 \
|
||||||
The acting player determines the suit of the cloud.\n\
|
but the trick contains the cloud and the bomb. \
|
||||||
If any of a player's tricks contains the cloud, he must increment or decrease his prediction by 1\n\
|
If the cloud is the determining trump card the dealer chooses the trump suit. The cloud as the first card of a \
|
||||||
but the trick contains the cloud and the bomb.\n\
|
trick determines the suit of a trick.
|
||||||
If the cloud is the determining trump card the dealer chooses the trump suit.\n\
|
menu.instruction.special_card.changeling=The changeling is always playable. He is either a wizard or a jester. \
|
||||||
The cloud as the first card of a trick determines the suit of a trick.
|
When played the player chooses which of these two the changeling represents. \
|
||||||
menu.instruction.special_card.changeling=The changeling is always playable. He is either a wizard or a jester.\n\
|
|
||||||
When played the player chooses which of these two the changeling represents.\n\
|
|
||||||
If the changeling is the determining trump card the dealer chooses the trump suit.
|
If the changeling is the determining trump card the dealer chooses the trump suit.
|
||||||
|
|
||||||
menu.connect.connect=Connect
|
menu.connect.connect=Connect
|
||||||
@ -219,16 +219,16 @@ game.overlay.pick_trump.prompt=Please choose the trump suit
|
|||||||
|
|
||||||
game.overlay.round.title=Round {0}
|
game.overlay.round.title=Round {0}
|
||||||
|
|
||||||
game.overlay.trump.yellow=The trump suit is [#ffff00]yellow[#ffffff]
|
game.overlay.trump.yellow=The trump suit is [#ffff00]yellow[]
|
||||||
game.overlay.trump.green=The trump suit is [#00ff00]green[#ffffff]
|
game.overlay.trump.green=The trump suit is [#00ff00]green[]
|
||||||
game.overlay.trump.blue=The trump suit is [#0000ff]blue[#ffffff]
|
game.overlay.trump.blue=The trump suit is [#0000ff]blue[]
|
||||||
game.overlay.trump.red=The trump suit is [#ff0000]red[#ffffff]
|
game.overlay.trump.red=The trump suit is [#ff0000]red[]
|
||||||
game.overlay.trump.none=There is no trump suit
|
game.overlay.trump.none=There is no trump suit
|
||||||
game.overlay.trump.unknown=The trump suit is yet to be determined
|
game.overlay.trump.unknown=The trump suit is yet to be determined
|
||||||
game.overlay.trump.yellow.player={0} choose the trump suit [#ffff00]yellow[#ffffff]
|
game.overlay.trump.yellow.player={0} choose the trump suit [#ffff00]yellow[]
|
||||||
game.overlay.trump.green.player={0} choose the trump suit [#00ff00]green[#ffffff]
|
game.overlay.trump.green.player={0} choose the trump suit [#00ff00]green[]
|
||||||
game.overlay.trump.blue.player={0} choose the trump suit [#0000ff]blue[#ffffff]
|
game.overlay.trump.blue.player={0} choose the trump suit [#0000ff]blue[]
|
||||||
game.overlay.trump.red.player={0} choose the trump suit [#ff0000]red[#ffffff]
|
game.overlay.trump.red.player={0} choose the trump suit [#ff0000]red[]
|
||||||
game.overlay.trump.none.player={0} has decided there will be no trump suit this round
|
game.overlay.trump.none.player={0} has decided there will be no trump suit this round
|
||||||
game.overlay.trump.unknown.player=The trump suit is yet to be determined by {0}
|
game.overlay.trump.unknown.player=The trump suit is yet to be determined by {0}
|
||||||
|
|
||||||
|
@ -1,126 +1,112 @@
|
|||||||
# suppress inspection "UnusedProperty" for whole file
|
# suppress inspection "UnusedProperty" for whole file
|
||||||
menu.main.play=Spiel beitreten
|
menu.main.play=Spiel beitreten
|
||||||
|
menu.main.instructions=Spielanleitung
|
||||||
menu.main.quit=Verlassen
|
menu.main.quit=Verlassen
|
||||||
menu.main.ok=OK
|
|
||||||
|
|
||||||
menu.instruction.nextPageButton=Nächste Seite
|
menu.instruction.back=Zurück
|
||||||
menu.instruction.previousPageButton=Vorherige Seite
|
|
||||||
menu.instruction.wizard=Zauberer
|
menu.instruction.wizard=Zauberer
|
||||||
menu.instruction.jester=Narr
|
menu.instruction.jester=Narr
|
||||||
|
menu.instruction.suit.blue=Blau
|
||||||
|
menu.instruction.suit.green=Grün
|
||||||
|
menu.instruction.suit.yellow=Gelb
|
||||||
|
menu.instruction.suit.red=Rot
|
||||||
|
|
||||||
menu.instruction.main=Spielanleitung
|
menu.instruction.main.title=Spielanleitung
|
||||||
menu.instruction.main.text1=Willkommen
|
menu.instruction.main.welcome.title=Willkommen
|
||||||
menu.instruction.main.text2=Auf dieser Seite findest du die Regeln des Grundspiels und zur Punktewertung.\n\
|
menu.instruction.main.welcome.par0=Auf der nächsten Seite findest du die Regeln des Grundspiels und zur Punktewertung. Auf der dritten Seite befindet sich eine Übersicht über die möglichen Spielvarianten und auf der vierten eine Übersicht der Sonderkarten.
|
||||||
Auf der zweiten Seite befindet sich eine Übersicht über die möglichen Spielvarianten \nund auf der dritten eine Übersicht der Sonderkarten.\n
|
menu.instruction.main.general.title=Grundlegendes
|
||||||
menu.instruction.general=Grundlegendes
|
menu.instruction.main.general.par0=Wizard ist ein Stichspiel mit dem Ziel in jeder Runde die genau Anzahl der selbst gewonnen Stiche vorherzusagen. Für richtige Vorhersagen erhält jeder Spieler Punkte und am Ende gewinnt der Spieler mit der höchsten Punktzahl.
|
||||||
menu.instruction.introduction1=Wizard ist ein Stichspiel mit dem Ziel in jeder Runde die genau Anzahl der selbstgewonnen\
|
menu.instruction.standard.title=Grundspiel
|
||||||
Stiche vorherzusagen.
|
menu.instruction.standard.par0=Im Grundspiel gibt es 60 Karten. 52 dieser Karten verteilen sich auf die folgenden vier Farben. Die jeweils höchste Karte ist die 13, die jeweils niedrigste Karte ist die 1.
|
||||||
menu.instruction.introduction2=Für richtige Vorhersagen erhält jeder Spieler Punkte und am Ende gewinnt der Spieler mit\
|
menu.instruction.standard.par1=Die 8 verbleibenden Karten verteilen sich hälftig auf Zauberer und Narren und haben keine Farbe. \
|
||||||
der höchsten Punktzahl.\n
|
|
||||||
menu.instruction.standardgameheading=Grundspiel
|
|
||||||
menu.instruction.standardgame1=Im Grundspiel gibt es 60 Karten
|
|
||||||
menu.instruction.standardgame2=52 dieser Karten verteilen sich auf die folgenden vier Farben.
|
|
||||||
menu.instruction.standardgame3=Die jeweils höchste Karte ist die 13, die jeweils niedrigste Karte ist die 1.
|
|
||||||
menu.instruction.standardgame4=Die 8 verbleibenden Karten verteilen sich hälftig auf Zauberer und Narren und haben keine Farbe.\n\
|
|
||||||
Die vier Zauberer haben einen höheren Wert als alle anderen Karten und die vier Narren einen niedrigeren.
|
Die vier Zauberer haben einen höheren Wert als alle anderen Karten und die vier Narren einen niedrigeren.
|
||||||
menu.instruction.standardgame5=Für jede Runde gilt: Rundenzahl gleich Anzahl der Karten pro Spieler gleich Anzahl der Stiche\n\
|
menu.instruction.standard.par2=Für jede Runde gilt: Rundenzahl gleich Anzahl der Karten pro Spieler gleich Anzahl der Stiche \
|
||||||
die Karten verteilt virtuell als Geber einer der Spieler.\n\n\
|
die Karten verteilt virtuell als Geber einer der Spieler.\n\n\
|
||||||
Nach dem Verteilen der Karten wird eine Trumpffarbe bestimmt. Sie entspricht der Farbe der Karte\n\
|
Nach dem Verteilen der Karten wird eine Trumpffarbe bestimmt. Sie entspricht der Farbe der Karte, \
|
||||||
Die im Spielbildschirm links unten angezeigt wird.\n\
|
die im Spielbildschirm links unten angezeigt wird. \
|
||||||
Ein Trumpf ist jede Karte der Trumpffarbe und höher als alle Karten der anderen Farben.\n\
|
Ein Trumpf ist jede Karte der Trumpffarbe und höher als alle Karten der anderen Farben. \
|
||||||
Wichtig! Ist die trumpfbestimmende Karte ein Narr gibt es in dieser Runde keinen Trumpf.\n\
|
Wichtig! Ist die trumpfbestimmende Karte ein Narr gibt es in dieser Runde keinen Trumpf. \
|
||||||
Wichtig! Ist die trumpfbestimmende Karte ein Zauberer wählt der Kartengeber eine Trumpffarbe.\n\n\
|
Wichtig! Ist die trumpfbestimmende Karte ein Zauberer wählt der Kartengeber eine Trumpffarbe.\n\n\
|
||||||
Ist die Trumpfarbe bestimmt, sagt jeder Spieler an, wie viele Stiche er in der Runde machen will.\n\
|
Ist die Trumpfarbe bestimmt, sagt jeder Spieler an, wie viele Stiche er in der Runde machen will. \
|
||||||
Tipp für Neulinge: Ein gutes Blatt für viele Stiche hat Zauberer, Trumpfkarten und hohe Farbkarten.\n
|
Tipp für Neulinge: Ein gutes Blatt für viele Stiche hat Zauberer, Trumpfkarten und hohe Farbkarten.
|
||||||
menu.instruction.standardgame6=Der Ablauf eine Stichs
|
menu.instruction.standard.trick.title=Der Ablauf eines Stichs
|
||||||
menu.instruction.standardgame7=Die erste Karte eines Stichs spielt beim ersten Stich der virtuelle linke Nachbar des Gebers.\n\
|
menu.instruction.standard.trick.par0=Die erste Karte eines Stichs spielt beim ersten Stich der virtuelle linke Nachbar des Gebers. \
|
||||||
Alle weiteren Stiche eröffnet der Spieler, der den letzten Stich gewonnen hat.\n\
|
Alle weiteren Stiche eröffnet der Spieler, der den letzten Stich gewonnen hat. \
|
||||||
Danach spielen alle Mitspieler im Uhrzeigersinn eine Karte\n\
|
Danach spielen alle Mitspieler im Uhrzeigersinn eine Karte. \
|
||||||
Zur Farbe der ersten Karte muss zugegeben werden. Das bedeutet: Hat ein Spieler eine Farbe dieser Karte\n\
|
Zur Farbe der ersten Karte muss zugegeben werden. Das bedeutet: hat ein Spieler eine Karte dieser Farbe, so \
|
||||||
muss er diese spielen und darf keine Karte einer anderen Farbe spielen.\n\
|
muss er diese spielen und darf keine Karte einer anderen Farbe spielen. \
|
||||||
Ausnahme hiervon sind Zauberer und Narren. Diese Karten dürfen immer gespielt werden!\n\n\
|
Ausnahme hiervon sind Zauberer und Narren. Diese Karten dürfen immer gespielt werden!\n\n\
|
||||||
Den Stich gewinnt der Spieler mit der höchsten Karte.\nFolgende absteigende Wertigkeit für die höchste Karte gilt:\n\
|
Den Stich gewinnt der Spieler mit der höchsten Karte. Folgende absteigende Wertigkeit für die höchste Karte gilt:\n\
|
||||||
+Der erste Zauberer in einem Stich\n\
|
\ + Der erste Zauberer in einem Stich\n\
|
||||||
+Die höchste Trumpfkarte\n\
|
\ + Die höchste Trumpfkarte\n\
|
||||||
+Die höchste Farbkarte der angespielten Farbe
|
\ + Die höchste Farbkarte der angespielten Farbe
|
||||||
menu.instruction.standardgame8=Besonderheiten
|
menu.instruction.standard.special_cases.title=Besonderheiten
|
||||||
menu.instruction.standardgame9=Eröffnet ein Spieler einen Stich mit einem Zauberer, dürfen die Mitspieler beliebige\n\
|
menu.instruction.standard.special_cases.par0=Eröffnet ein Spieler einen Stich mit einem Zauberer, dürfen die Mitspieler beliebige \
|
||||||
Karten spielen, einschließlich weiterer Zauberer oder Narren.\nDer Stich geht in jedem Fall an den ersten Zauberer.\n\n\
|
Karten spielen, einschließlich weiterer Zauberer oder Narren. Der Stich geht in jedem Fall an den ersten Zauberer.\n\n\
|
||||||
Eröffnet ein Spieler einen Stich mit einem Narren, dürfen beliebige Karten gespielt werden,\n\
|
Eröffnet ein Spieler einen Stich mit einem Narren, dürfen beliebige Karten gespielt werden, \
|
||||||
bis ein Lehrling einen Zauberer oder eine Zahlenkarte spielt. Handelt es sich um eine Zahlenkarte,\n\
|
bis ein Lehrling einen Zauberer oder eine Zahlenkarte spielt. Handelt es sich um eine Zahlenkarte, \
|
||||||
muss zu ihrer Farbe zugegeben werden.\n\
|
muss zu ihrer Farbe zugegeben werden.\n\
|
||||||
Handelt es sich um einen Zauberer, dürfen beliebige Karten gespielt werden.\n\
|
Handelt es sich um einen Zauberer, dürfen beliebige Karten gespielt werden. \
|
||||||
Im seltenen Fall, dass nur Narren im Stich liegen, gewinnt der erste Narr.\n
|
Im seltenen Fall, dass nur Narren im Stich liegen, gewinnt der erste Narr.
|
||||||
menu.instruction.scoring=Punktewertung
|
menu.instruction.standard.scoring.title=Punktewertung
|
||||||
menu.instruction.standardgame10=Bei einer richtigen Vorhersage gibt es pro gemachten Stich 10 Punkte\n\
|
menu.instruction.standard.scoring.par0=Bei einer richtigen Vorhersage gibt es pro gemachten Stich 10 Punkte \
|
||||||
sowie 20 Punkte als Grundbetrag.\nBei einer falschen Vorhersage gibt es pro abweichendem Stich -10 Punkte und keinen Grundbetrag.\n\
|
sowie 20 Punkte als Grundbetrag.\nBei einer falschen Vorhersage gibt es pro abweichendem Stich -10 Punkte und keinen Grundbetrag.\n\
|
||||||
Die Punktzahl wird anschließend mit dem bisherigen Punktestand eines Spielers verrechnet.\n
|
Die Punktzahl wird anschließend mit dem bisherigen Punktestand eines Spielers verrechnet.
|
||||||
|
|
||||||
menu.instruction.variant.title=Spielvarianten
|
menu.instruction.variant.title=Spielvarianten
|
||||||
menu.instruction.variant.intro=Bei der Erstellung eines neuen Spiels können folgende 6 Varianten ausgewählt werden.
|
menu.instruction.variant.intro=Bei der Erstellung eines neuen Spiels können folgende 6 Varianten ausgewählt werden.
|
||||||
menu.instruction.variant.default=1) Default
|
menu.instruction.variant.default=1) Default
|
||||||
menu.instruction.variant.default.description=Das Grundspiel mit den Grundregeln.
|
menu.instruction.variant.default.description=Das Grundspiel mit den Grundregeln.
|
||||||
menu.instruction.variant.defaultpm1=2) Default PM1
|
menu.instruction.variant.defaultpm1=2) Default PM1
|
||||||
menu.instruction.variant.defaultpm1.description=Das Grundspiel mit der Zusatzbedingung, dass die Vorhersage\nnicht der Rundenanzahl entsprechen darf.\n\
|
menu.instruction.variant.defaultpm1.description=Das Grundspiel mit der Zusatzbedingung, dass die Vorhersage nicht der Rundenanzahl entsprechen darf. \
|
||||||
Das bedeutet: Der Tipp mindestens eines Spielers ist falsch.
|
Das bedeutet: Der Tipp mindestens eines Spielers ist falsch.
|
||||||
menu.instruction.variant.anniversary2016=3) Anniversary 2016
|
menu.instruction.variant.anniversary2016=3) Anniversary 2016
|
||||||
menu.instruction.variant.anniversary2016.description=Das Grundspiel mit den Grundregeln und den Sonderkarten der Jubiläumsedition 2016.
|
menu.instruction.variant.anniversary2016.description=Das Grundspiel mit den Grundregeln und den Sonderkarten der Jubiläumsedition 2016.
|
||||||
menu.instruction.variant.anniversary2016pm1=4) Anniversary 2016 PM1
|
menu.instruction.variant.anniversary2016pm1=4) Anniversary 2016 PM1
|
||||||
menu.instruction.variant.anniversary2016pm1.description=Das Grundspiel mit den Sonderkarten der Jubiläumsedition 2016, mit der\n\
|
menu.instruction.variant.anniversary2016pm1.description=Das Grundspiel mit den Sonderkarten der Jubiläumsedition 2016, mit der \
|
||||||
Zusatzbedingung, dass die Vorhersage nicht der Rundenanzahl entsprechen darf.
|
Zusatzbedingung, dass die Vorhersage nicht der Rundenanzahl entsprechen darf.
|
||||||
menu.instruction.variant.anniversary2021=5) Anniversary 2021
|
menu.instruction.variant.anniversary2021=5) Anniversary 2021
|
||||||
menu.instruction.variant.anniversary2021.description=Das Grundspiel mit den Grundregeln und den Sonderkarten der Jubiläumsedition 2021.
|
menu.instruction.variant.anniversary2021.description=Das Grundspiel mit den Grundregeln und den Sonderkarten der Jubiläumsedition 2021.
|
||||||
menu.instruction.variant.anniversary2021pm1=6) Anniversary 2021 PM1
|
menu.instruction.variant.anniversary2021pm1=6) Anniversary 2021 PM1
|
||||||
menu.instruction.variant.anniversary2021pm1.description=Das Grundspiel mit den Sonderkarten der Jubiläumsedition 2021, mit der\n\
|
menu.instruction.variant.anniversary2021pm1.description=Das Grundspiel mit den Sonderkarten der Jubiläumsedition 2021, mit der \
|
||||||
Zusatzbedingung, dass die Vorhersage nicht der Rundenanzahl entsprechen darf.
|
Zusatzbedingung, dass die Vorhersage nicht der Rundenanzahl entsprechen darf.
|
||||||
|
|
||||||
menu.instruction.special_card.title=Sonderkarten
|
menu.instruction.special_card.title=Sonderkarten
|
||||||
menu.instruction.special_card.intro=Die ersten sechs der folgenden Sonderkarten sind in den beiden Jubliäumseditionen 2016 und 2021 enthalten.\n\
|
menu.instruction.special_card.intro=Die ersten sechs der folgenden Sonderkarten sind in den beiden Jubiläumseditionen 2016 und 2021 enthalten. \
|
||||||
Der Gestaltwandler ist nur in der Jubiläumsedition 2021 enthalten.\n
|
Der Gestaltwandler ist nur in der Jubiläumsedition 2021 enthalten.
|
||||||
menu.instruction.special_card.dragon=Den Drachen kann ein Spieler immer spielen.\n\
|
menu.instruction.special_card.dragon=Den Drachen kann ein Spieler immer spielen. \
|
||||||
Der Drache ist die Karte mit dem höchsten Wert im Spiel. Er ist höher als jeder Zauberer\n\
|
Der Drache ist die Karte mit dem höchsten Wert im Spiel. Er ist höher als jeder Zauberer und gewinnt jeden Stich \
|
||||||
und gewinnt jeden Stich mit der Ausnahme der Fee im selben Stich (siehe Fee).\n\
|
mit der Ausnahme der Fee im selben Stich (siehe Fee). Deckt der Geber zur Bestimmung der Trumpffarbe den Drachen \
|
||||||
Deckt der Geber zur Bestimmung der Trumpffarbe den Drachen auf, bestimmt er eine Trumpffarbe.\n\
|
auf, bestimmt er eine Trumpffarbe. Eröffnest ein Spieler einen Stich mit einem Drachen, gelten dieselben Regeln \
|
||||||
Eröffnest ein Spieler einen Stich mit einem Drachen, gelten dieselben Regeln\n\
|
|
||||||
wie beim Spielen eines Zauberers.
|
wie beim Spielen eines Zauberers.
|
||||||
menu.instruction.special_card.fairy=Die Fee kann ein Spieler immer spielen.\n\
|
menu.instruction.special_card.fairy=Die Fee kann ein Spieler immer spielen. \
|
||||||
Die Fee ist die Karte mit dem niedrigsten Wert im Spiel.\n\
|
Die Fee ist die Karte mit dem niedrigsten Wert im Spiel. Sie ist sogar niedriger als jeder Narr und verliert jeden \
|
||||||
Sie ist sogar niedriger als jeder Narr und verliert jeden Stich, außer Fee und Drache liegen im selben Stich.\n\
|
Stich, außer Fee und Drache liegen im selben Stich. Dann gewinnt die Fee den Stich! Deckt der Geber zur Bestimmung \
|
||||||
Dann gewinnt die Fee den Stich!\n\
|
der Trumpffarbe die Fee auf, gibt es in dieser Runde keine Trumpffarbe. Eröffnest ein Spieler den Stich mit einer \
|
||||||
Deckt der Geber zur Bestimmung der Trumpffarbe die Fee auf, gibt es in dieser Runde keine Trumpffarbe.\n\
|
Fee, gelten dieselben Regeln wie beim Spielen eines Narren.
|
||||||
Eröffnest ein Spieler den Stich mit einer Fee, gelten dieselben Regeln wie beim Spielen eines Narren.
|
menu.instruction.special_card.bomb=Die Bombe kann ein Spieler immer spielen. \
|
||||||
menu.instruction.special_card.bomb=Die Bombe kann ein Spieler immer spielen.\n\
|
Den Stich mit der Bombe gewinnt kein Spieler. Er zählt auch zu keiner Stichvorhersage. Der Spieler, der den Stich \
|
||||||
Den Stich mit der Bombe gewinnt kein Spieler. Er zählt auch zu keiner Stichvorhersage.\n\
|
mit der Bombe gewonnen hätte, eröffnet den nächsten Stich. Deckt der Geber bei der Bestimmung der Trumpffarbe die \
|
||||||
Der Spieler, der den Stich mit der Bombe gewonnen hätte, eröffnet den nächsten Stich.\n\
|
Bombe auf, gibt es in dieser Runde keine Trumpffarbe. Eröffnet ein Spieler einen Stich mit einer Bombe, gelten \
|
||||||
Deckt der Geber bei der Bestimmung der Trumpffarbe die Bombe auf,\n\
|
dieselben Regeln wie beim Spielen eines Narren.
|
||||||
gibt es in dieser Runde keine Trumpffarbe.\n\
|
menu.instruction.special_card.werewolf=Hat ein Spieler den Werwolf auf der Hand, tauscht er ihn zu Beginn der \
|
||||||
Eröffnet ein Spieler einen Stich mit einer Bombe, gelten dieselben Regeln wie beim Spielen eines Narren.
|
Stichrunde gegen die trumpfbestimmende Karte aus. Anschließend wählt der Spieler eine Trumpffarbe oder wählt, dass \
|
||||||
menu.instruction.special_card.werewolf=Hat ein Spieler den Werwolf auf der Hand, tauscht er ihn zu Beginn der Stichrunde\n\
|
es in dieser Runde keinen Trumpf gibt. Danach macht der erste Spieler seine Vorhersage. Deckt der Geber bei der \
|
||||||
gegen die trumpfbestimmende Karte aus.\n\
|
Bestimmung der Trumpffarbe den Werwolf auf, bestimmt er eine Trumpffarbe.
|
||||||
Anschließend wählt der Spieler eine Trumpffarbe oder wählt, dass es in dieser Runde keinen Trumpf gibt.\n\
|
menu.instruction.special_card.juggler=Den Jongleur kann ein Spieler immer spielen. Er hat den Wert 7 \u00bd, ist also \
|
||||||
Danach macht der erste Spieler seine Vorhersage.\n\
|
höher als eine 7 und niedriger als eine 8. Spielt ein Spieler den Jongleur in einem Stich, bestimmt er welche Farbe \
|
||||||
Deckt der Geber bei der Bestimmung der Trumpffarbe den Werwolf auf,\n\
|
die Karte annehmen soll. Nach dem Stich gibt jeder Spieler gleichzeitig eine seiner Handkarten verdeckt an seinen \
|
||||||
bestimmt er eine Trumpffarbe.
|
linken Nachbarn. Deckt der Geber bei der Bestimmung der Trumpffarbe den Jongleur auf, bestimmt er eine Trumpffarbe. \
|
||||||
menu.instruction.special_card.juggler=Den Jongleur kann ein Spieler immer spielen.\n\
|
Eröffnet ein Spieler den Stich mit einem Jongleur, so muss zur angesagten Farbe zugegeben werden.
|
||||||
Er hat den Wert 7 \u00bd, ist also höher als eine 7 und niedriger als eine 8.\n\
|
menu.instruction.special_card.cloud=Die Wolke kann ein Spieler immer spielen. Sie hat den Wert 9 \u00be, ist also \
|
||||||
Spielt ein Spieler den Jongleur in einem Stich, bestimmt er welche Farbe die Karte annehmen soll.\n\
|
höher als eine 9 und niedriger als eine 10. Spielt ein Spieler die Wolke in einem Stich, bestimmt er welche Farbe \
|
||||||
Nach dem Stich gibt jeder Spieler gleichzeitig eine seiner Handkarten verdeckt\n\
|
die Karte annehmen soll. Liegt die Wolke am Ende einer Runde in den Stichen eines Lehrlings, muss dieser seine \
|
||||||
an seinen linken Nachbarn.\n\
|
Stichvorhersage um +1 oder um -1 verändern. Liegen Wolke und Bombe in einem Stich, ändert sich die Stichvorhersage \
|
||||||
Deckt der Geber bei der Bestimmung der Trumpffarbe den Jongleur auf,\n\
|
nicht. Deckt der Geber bei der Bestimmung der Trumpffarbe die Wolke auf, bestimmt er eine Trumpffarbe. Eröffnest du \
|
||||||
bestimmt er eine Trumpffarbe.\n\
|
den Stich mit einer Wolke, muss die angesagte Farbe bedient werden.
|
||||||
Eröffnet ein Spieler den Stich mit einem Jongleur, so muss zur angesagten Farben zugegeben werden.
|
menu.instruction.special_card.changeling=Den Gestaltwandler kann ein Spieler immer spielen. Er ist entweder ein Narr \
|
||||||
menu.instruction.special_card.cloud=Die Wolke kann ein Spieler immer spielen.\n\
|
oder ein Zauberer. Beim Ausspielen des Gestaltwandlers wählt ein Spieler aus, ob er ein Narr oder ein Zauberer sein \
|
||||||
Sie hat den Wert 9 \u00be, ist also höher als eine 9 und niedriger als eine 10.\n\
|
soll. Deckt der virtuelle Geber zur Bestimmung der Trumpffarbe den Gestaltwandler auf, bestimmt er eine Trumpffarbe.
|
||||||
Spielt ein Spieler die Wolke in einem Stich, bestimmt er\n\
|
|
||||||
welche Farbe die Karte annehmen soll.\n\
|
|
||||||
Liegt die Wolke am Ende einer Runde in den Stichen eines Lehrlings,\n\
|
|
||||||
muss dieser seine Stichvorhersage um +1 oder um -1 verändern.\n\
|
|
||||||
Liegen Wolke und Bombe in einem Stich, ändert sich die Stichvorhersage nicht.\n\
|
|
||||||
Deckt der Geber bei der Bestimmung der Trumpffarbe die Wolke auf, bestimmt er eine Trumpffarbe.\n\
|
|
||||||
Eröffnest du den Stich mit einer Wolke, muss die angesagte Farbe bedient werden.
|
|
||||||
menu.instruction.special_card.changeling=Den Gestaltwandler kann ein Spieler immer spielen. Er ist entweder ein Narr\n\
|
|
||||||
oder ein Zauberer. Beim Ausspielen des Gestaltwandlers wählt ein Spieler aus, ob er ein Narr oder ein Zauberer sein soll.\n\
|
|
||||||
Deckt der virtuelle Geber zur Bestimmung der Trumpffarbe den Gestaltenwandler auf, bestimmt er eine Trumpffarbe.
|
|
||||||
|
|
||||||
menu.connect.connect=Verbinden
|
menu.connect.connect=Verbinden
|
||||||
menu.connect.back=Zurück
|
menu.connect.back=Zurück
|
||||||
@ -174,8 +160,8 @@ menu.error.session_not_found=Fehler: Session nicht gefunden
|
|||||||
menu.error.player_not_found=Fehler: Spieler nicht gefunden
|
menu.error.player_not_found=Fehler: Spieler nicht gefunden
|
||||||
menu.error.player_name_taken=Fehler: Spielername bereits vergeben
|
menu.error.player_name_taken=Fehler: Spielername bereits vergeben
|
||||||
menu.error.player_name_not_allowed=Fehler: Spielername nicht erlaubt
|
menu.error.player_name_not_allowed=Fehler: Spielername nicht erlaubt
|
||||||
menu.error.session_name_taken=Fehler: Sessionname bereits vergeben
|
menu.error.session_name_taken=Fehler: Sitzungsname bereits vergeben
|
||||||
menu.error.session_name_not_allowed=Fehler: Sessionname nicht erlaubt
|
menu.error.session_name_not_allowed=Fehler: Sitzungsname nicht erlaubt
|
||||||
menu.error.illegal_state=Fehler: Illegaler Zustand
|
menu.error.illegal_state=Fehler: Illegaler Zustand
|
||||||
menu.error.game_already_started=Fehler: Spiel hat bereits begonnen
|
menu.error.game_already_started=Fehler: Spiel hat bereits begonnen
|
||||||
menu.error.game_not_yet_started=Fehler: Spiel hat noch nicht begonnen
|
menu.error.game_not_yet_started=Fehler: Spiel hat noch nicht begonnen
|
||||||
@ -223,16 +209,16 @@ game.overlay.pick_trump.prompt=Wähle die Trumpffarbe
|
|||||||
|
|
||||||
game.overlay.round.title=Runde {0}
|
game.overlay.round.title=Runde {0}
|
||||||
|
|
||||||
game.overlay.trump.yellow=Die Trumpffarbe ist [#ffff00]gelb[#ffffff]
|
game.overlay.trump.yellow=Die Trumpffarbe ist [#ffff00]gelb[]
|
||||||
game.overlay.trump.green=Die Trumpffarbe ist [#00ff00]grün[#ffffff]
|
game.overlay.trump.green=Die Trumpffarbe ist [#00ff00]grün[]
|
||||||
game.overlay.trump.blue=Die Trumpffarbe ist [#0000ff]blau[#ffffff]
|
game.overlay.trump.blue=Die Trumpffarbe ist [#0000ff]blau[]
|
||||||
game.overlay.trump.red=Die Trumpffarbe ist [#ff0000]rot[#ffffff]
|
game.overlay.trump.red=Die Trumpffarbe ist [#ff0000]rot[]
|
||||||
game.overlay.trump.none=Es gibt keine Trumpffarbe
|
game.overlay.trump.none=Es gibt keine Trumpffarbe
|
||||||
game.overlay.trump.unknown=Die Trumpffarbe muss noch bestimmt werden
|
game.overlay.trump.unknown=Die Trumpffarbe muss noch bestimmt werden
|
||||||
game.overlay.trump.yellow.player={0} hat die Trumpffarbe [#ffff00]gelb[#ffffff] gewählt
|
game.overlay.trump.yellow.player={0} hat die Trumpffarbe [#ffff00]gelb[] gewählt
|
||||||
game.overlay.trump.green.player={0} hat die Trumpffarbe [#00ff00]grün[#ffffff] gewählt
|
game.overlay.trump.green.player={0} hat die Trumpffarbe [#00ff00]grün[] gewählt
|
||||||
game.overlay.trump.blue.player={0} hat die Trumpffarbe [#0000ff]blau[#ffffff] gewählt
|
game.overlay.trump.blue.player={0} hat die Trumpffarbe [#0000ff]blau[] gewählt
|
||||||
game.overlay.trump.red.player={0} hat die Trumpffarbe [#ff0000]rot[#ffffff] gewählt
|
game.overlay.trump.red.player={0} hat die Trumpffarbe [#ff0000]rot[] gewählt
|
||||||
game.overlay.trump.none.player={0} hat entschieden, dass es diese Runde keinen Trump geben wird
|
game.overlay.trump.none.player={0} hat entschieden, dass es diese Runde keinen Trump geben wird
|
||||||
game.overlay.trump.unknown.player={0} muss die Trumpffarbe muss noch bestimmen
|
game.overlay.trump.unknown.player={0} muss die Trumpffarbe muss noch bestimmen
|
||||||
|
|
||||||
|
@ -17,26 +17,6 @@ public enum Card {
|
|||||||
WEREWOLF;
|
WEREWOLF;
|
||||||
|
|
||||||
public enum Suit {
|
public enum Suit {
|
||||||
NONE,
|
NONE, YELLOW, RED, GREEN, BLUE
|
||||||
YELLOW {
|
|
||||||
public String toString() {
|
|
||||||
return "Gelb";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
RED {
|
|
||||||
public String toString() {
|
|
||||||
return "Rot";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
GREEN {
|
|
||||||
public String toString() {
|
|
||||||
return "Grün";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
BLUE {
|
|
||||||
public String toString() {
|
|
||||||
return "Blau";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user