Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions Ability.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package model.ability;

import model.Card;
import model.Game;
import model.Place;
import model.Side;

import java.util.ArrayList;

public abstract class Ability {
private String name;

public Ability(String name) {
this.name = name;
}

public String getName() {
return name;
}

public abstract void executeAction(Game game, Card card);
public abstract void unExecuteAction(Game game, Card card);

public ArrayList<Card> getEffectedCards(Side side, Place place) {
switch (place) {
case CLOSE_COMBAT -> {
return side.getCloseCombatCards();
}
case RANGED_COMBAT -> {
return side.getRangedCombatCards();
}
case SIEGE -> {
return side.getSiegeCards();
}
}
return null;
}

Side getSide(Game game){
return game.isTurn() ? game.getLoggedInUserSide() : game.getEnemySide();
}

Side getOpponentSide(Game game){
return !game.isTurn() ? game.getLoggedInUserSide() : game.getEnemySide();
}
}
22 changes: 22 additions & 0 deletions Berserker.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package model.ability;

import model.Card;
import model.Game;
import model.ability.Ability;

public class Berserker extends Ability {

public Berserker(String name) {
super("Berserker");
}

@Override
public void executeAction(Game game, Card card){
// nothing :)
}

@Override
public void unExecuteAction(Game game, Card card) {
// nothing :)
}
}
141 changes: 141 additions & 0 deletions Card.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
package model;

import model.ability.Ability;

import java.util.ArrayList;

public class Card {
private int totalGivenCards;
private int index;
private String name;
private int power;
private int numberOfCardsInGame;
private Place place;
private boolean isSpecial;
private String factionName;
private Ability ability;
private boolean isInGame;
private ArrayList<Card> sampleCards;
private int externalPower = 0;
private int totalCommanderHorns = 0;
private int powerInGame = 0;
private int totalSameCards = 1; //for tight bound
private int score;

Card(int index, String name, int power, int numberOfCardsInGame, Place place, String factionName, Ability ability) {
}

public static void putCard(Card card){
Side side = new Side();
Game game = new Game();
// TODO

if (card.isSpecial()) {
switch (card.getPlace()) {
case CLOSE_COMBAT -> side.addCardToCloseCombatCards(card);
case RANGED_COMBAT -> side.addCardToRangedCombatCards(card);
case SIEGE -> side.addCardToSiegeCards(card);
}
} else {
switch (card.getPlace()) {
case CLOSE_COMBAT -> side.setCloseCombatSpecialCard(card);
case RANGED_COMBAT -> side.setRangedCombatSpecialCard(card);
case SIEGE -> side.setSiegeSpecialCard(card);
case SPECIAL -> game.addSpellCard(card);
}
}
}
public static Card getCardWithName(String name) {
return null;
}

public int getIndex() {
return index;
}

public String getName() {
return name;
}

public int getPower() {
return power;
}

public int getNumberOfCardsInGame() {
return numberOfCardsInGame;
}

public Place getPlace() {
return place;
}

public String getFactionName() {
return factionName;
}

public boolean isInGame() {
return isInGame;
}

public void setInGame(boolean inGame) {
isInGame = inGame;
}

public void executeAction() {
}

// new
public boolean isHero(){
return false;
}
// new

public void setPower(int power) {
this.power = power;
}

public void setPlace(Place place) {
this.place = place;
}

public Ability getAbility() {
return ability;
}


public void setExternalPower(int externalPower) {
this.externalPower = externalPower;
}


public void setTotalCommanderHorns(int totalCommanderHorns) {
this.totalCommanderHorns = totalCommanderHorns;
}

public void setPowerInGame(int powerInGame) {
this.powerInGame = powerInGame;
}

public void setTotalSameCards(int totalSameCards) {
this.totalSameCards = totalSameCards;
}

public int getExternalPower() {
return externalPower;
}

public int getTotalSameCards() {
return totalSameCards;
}

public int getTotalCommanderHorns() {
return totalCommanderHorns;
}

public int getScore() {
// power in game = 0 -> default power in game
// total same cards = 0 -> default number = 1
return ((powerInGame == 0 ? power : powerInGame) * Math.max(1, totalSameCards) + externalPower) *
(totalCommanderHorns > 0 ? 2 : 1);
}
}
31 changes: 31 additions & 0 deletions CommandersHorn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package model.ability;

import model.Card;
import model.Game;
import model.Side;

import java.util.ArrayList;

public class CommandersHorn extends Ability {
public CommandersHorn() {
super("CommandersHorn");
}

@Override
public void executeAction(Game game, Card selectedCard) {
CommandersHornAction(game, selectedCard, 1);
}

@Override
public void unExecuteAction(Game game, Card selectedCard){
CommandersHornAction(game, selectedCard, -1);
}

private void CommandersHornAction(Game game, Card selectedCard, int newCommanderHorns){
Side side = getSide(game);
ArrayList<Card> effectedCards = getEffectedCards(side, selectedCard.getPlace());
for (Card card : effectedCards)
if (!card.isHero() && !(card.getIndex() == selectedCard.getIndex()))
card.setTotalCommanderHorns(card.getTotalCommanderHorns() + newCommanderHorns);
}
}
29 changes: 29 additions & 0 deletions Decoy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package model.ability;

import model.Card;
import model.Game;
import model.Place;
import model.Side;
import model.ability.Ability;

public class Decoy extends Ability {
public Decoy() {
super("Decoy");
}

// vaghti yek kart decoy ro barmigardonimke agile bode jash hefz mishe?

@Override
public void executeAction(Game game, Card card) {
Side side = getSide(game)
Card returnedCard = SelectCardFromUnitCards(side); //TODO
side.removeFromTable(card);
side.getHand().add(returnedCard);
}

@Override
public void unExecuteAction(Game game, Card card) {
// nothing :)
}

}
80 changes: 80 additions & 0 deletions EditProfileMenuController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package controller;

import javafx.fxml.FXML;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import model.User;
import view.ProfileMenu;

public class EditProfileMenuController {
@FXML
private TextField newUsernameTextField;
@FXML
private TextField newNicknameTextField;
@FXML
private TextField newEmailTextField;
@FXML
private PasswordField oldPasswordTextField;
@FXML
private PasswordField newPasswordTextField;

public void changeUsername() {
String username = newUsernameTextField.getText();
newUsernameTextField.clear();

// TODO valid username
// check validation of username
if(User.getLoggedInUser().getUsername().equals(username)){
// TODO Alert
// alert same
return;
}
User.getLoggedInUser().setUsername(username);
}

public void changeNickname() {
String nickname = newNicknameTextField.getText();
newNicknameTextField.clear();

if(User.getLoggedInUser().getNickname().equals(nickname)){
// TODO Alert
// alert same
return;
}
User.getLoggedInUser().setNickname(nickname);
}

public void changeEmail() {
String email = newEmailTextField.getText();
newEmailTextField.clear();

if(User.getLoggedInUser().getEmail().equals(email)){
// TODO Alert
// alert same
return;
}
User.getLoggedInUser().setEmail(email);
}

public void changePassword() {
String oldPassword = oldPasswordTextField.getText();
String newPassword = newPasswordTextField.getText();
oldPasswordTextField.clear();
newPasswordTextField.clear();

// TODO valid password
// check password is strong or not
if(!User.getLoggedInUser().getPassword().equals(oldPassword)){
// TODO Alert
// alert same
return;
}
User.getLoggedInUser().setPassword(newPassword);
}

public void backToProfileMenu(){
ProfileMenu profileMenu = new ProfileMenu();
// profileMenu.start();
// TODO stage
}
}
Loading