Skip to content

Commit 6d4d9b8

Browse files
author
nicol
committed
fix games model packaging
1 parent ebf9e58 commit 6d4d9b8

11 files changed

Lines changed: 975 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.magic.game.beans;
2+
3+
import org.magic.game.gui.components.DisplayableCard;
4+
import org.magic.game.interfaces.AbstractSpell;
5+
import org.magic.game.model.effects.OneShotEffect;
6+
import org.magic.game.model.factories.CostsFactory;
7+
8+
public class CardSpell extends AbstractSpell {
9+
10+
/**
11+
*
12+
*/
13+
private static final long serialVersionUID = 1L;
14+
private DisplayableCard c;
15+
16+
public CardSpell(DisplayableCard card) {
17+
super();
18+
this.c = card;
19+
setCard(c.getMagicCard());
20+
setCost(CostsFactory.getInstance().parseCosts(c.getMagicCard().getCost()));
21+
var e = new OneShotEffect();
22+
e.setCard(card.getMagicCard());
23+
e.setEffectDescription(card.getMagicCard().getText());
24+
e.setCost(CostsFactory.getInstance().parseCosts(card.getMagicCard().getCost()));
25+
addEffect(e);
26+
}
27+
28+
public DisplayableCard getDisplayableCard() {
29+
return c;
30+
}
31+
32+
@Override
33+
public boolean isStackable() {
34+
return !getCard().isLand();
35+
}
36+
37+
@Override
38+
public String toString() {
39+
return getCard().toString();
40+
}
41+
42+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package org.magic.game.beans;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
public class GameManager {
8+
9+
private List<Player> players;
10+
11+
private static GameManager instance;
12+
private List<Turn> turns;
13+
14+
private SpellStack stack;
15+
private TriggerManager triggers;
16+
17+
private GameManager() {
18+
turns = new ArrayList<>();
19+
players = new ArrayList<>();
20+
stack = new SpellStack();
21+
triggers = new TriggerManager();
22+
}
23+
24+
public TriggerManager getTriggers() {
25+
return triggers;
26+
}
27+
28+
public void setTriggers(TriggerManager triggers) {
29+
this.triggers = triggers;
30+
}
31+
32+
public List<Turn> getTurns() {
33+
return turns;
34+
}
35+
36+
public Turn getActualTurn() {
37+
if (turns.isEmpty())
38+
return new Turn();
39+
return turns.getLast();
40+
}
41+
42+
public Player getCurrentPlayer() {
43+
if (players.isEmpty()) {
44+
players.add(new Player("Random"));
45+
}
46+
47+
return players.getFirst();
48+
49+
}
50+
51+
public void endTurn(Player p) {
52+
p.logAction("End the turn " + turns.size());
53+
turns.add(new Turn());
54+
Collections.rotate(players, 1);
55+
}
56+
57+
public void setPlayer(Player p) {
58+
players.clear();
59+
players.add(p);
60+
}
61+
62+
public static GameManager getInstance() {
63+
if (instance == null)
64+
instance = new GameManager();
65+
66+
return instance;
67+
}
68+
69+
public void addPlayer(Player p) {
70+
players.add(p);
71+
72+
}
73+
74+
public List<Player> getPlayers() {
75+
return players;
76+
}
77+
78+
public void initGame() {
79+
for (Player player : players)
80+
player.init();
81+
82+
turns = new ArrayList<>();
83+
stack.clean();
84+
turns.add(new Turn());
85+
}
86+
87+
public void removePlayers() {
88+
players.clear();
89+
90+
}
91+
92+
public SpellStack getStack() {
93+
return stack;
94+
}
95+
96+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package org.magic.game.beans;
2+
3+
import java.io.Serializable;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
import java.util.Map.Entry;
7+
import java.util.regex.Pattern;
8+
import org.apache.logging.log4j.Logger;
9+
import org.magic.api.beans.MTGCard;
10+
import org.magic.api.beans.enums.EnumCardsPatterns;
11+
import org.magic.services.logging.MTGLogger;
12+
import org.utils.patterns.observer.Observable;
13+
14+
public class ManaPool extends Observable implements Serializable {
15+
16+
/**
17+
*
18+
*/
19+
private static final long serialVersionUID = 1L;
20+
private Map<String, Integer> pool;
21+
private transient Logger logger = MTGLogger.getLogger(this.getClass());
22+
private Pattern p;
23+
24+
public ManaPool() {
25+
pool = new HashMap<>();
26+
p = Pattern.compile(EnumCardsPatterns.MANA_PATTERN.getPattern());
27+
28+
}
29+
30+
public int getMana(String color) {
31+
Integer ret = pool.get(color);
32+
33+
if (ret == null)
34+
return 0;
35+
36+
return ret;
37+
38+
}
39+
40+
public void setMana(String color, int number) {
41+
pool.put(color, number);
42+
setChanged();
43+
44+
}
45+
46+
public void useMana(String color, Integer number) {
47+
try {
48+
setMana(color, pool.get(color) - number);
49+
} catch (Exception _) {
50+
logger.error("error using {} {}. Pool={}", number, color, pool);
51+
}
52+
}
53+
54+
public void useMana(MTGCard mc) {
55+
if (mc.getCmc() == null)
56+
return;
57+
58+
var m = p.matcher(mc.getCost());
59+
60+
while (m.find()) {
61+
useMana(m.group(), 1);
62+
}
63+
notifyObservers(this);
64+
}
65+
66+
public void clean() {
67+
pool.values().clear();
68+
}
69+
70+
@Override
71+
public String toString() {
72+
73+
var build = new StringBuilder();
74+
for (Entry<String, Integer> key : pool.entrySet())
75+
for (var i = 0; i < key.getValue(); i++)
76+
build.append(key.getKey());
77+
78+
return build.toString();
79+
}
80+
81+
}

0 commit comments

Comments
 (0)