public int vikings_def(Drakkar joueur) { int result = joueur.viking.number * joueur.viking.def + joueur.merc_moyens.number * joueur.merc_moyens.def; return(result); }
public void victory(Drakkar joueur) { //TODO Urgal SoundManager.PlayBruitage("victory"); int score = (int)Math.Floor((double)joueur.gold / (joueur.viking.number + 1)); UImanager.victory(score); }
public void defeat(Drakkar joueur) { //TODO Urgal if (joueur.viking.number < joueur.min_members) { SoundManager.PlayBruitage("echec"); UImanager.defeat(); Application.Quit(); } }
public void partir(Drakkar joueur) { if (joueur.min_members < joueur.viking.number) { //TODO Urgal //END GAME pop-up victoire SoundManager.PlayBruitage("victory"); int score = (int)Math.Floor((double)joueur.gold / (joueur.viking.number + 1)); victory(joueur); } }
void Awake() { //Urgal : liaison avec UIMainSceneManager UImanager = GameObject.Find("Canvas").GetComponent <UIMainSceneManager>(); // init gameName ici avec les input du joueur // init du drakkar Soldat viking = new Soldat(3, 3, 2, 1, 40, "Vikings"); Soldat merc = new Soldat(1, 1, 0, 0, 0, "Mercenaires"); drakkar = new Drakkar(gameName, 0, viking, merc, 8); UImanager.drakkar = drakkar; }
public void disapplyEvent(Events ev, Drakkar drakkar) { Soldat Vikings = drakkar.viking; Soldat Merc = drakkar.merc_moyens; Vikings.atk -= ev.modifAtk; Vikings.def -= ev.modifDef; Vikings.moral -= ev.modifMoral; Vikings.intimidate -= ev.modifIntim; Vikings.number -= ev.soldiermodifier.number; Merc.atk -= ev.modifAtk; Merc.def -= ev.modifDef; Merc.moral -= ev.modifMoral; Merc.intimidate -= ev.modifIntim; Merc.number -= ev.soldiermodifier.number; }
public void BattleRoyale(Drakkar joueur) { //TODO Urgal SoundManager.PlayBruitage("pillage"); Soldat garderoyale = new Soldat(7, 8, 100, 0, 100, "garderoyale"); Soldat no_one = new Soldat(0, 0, 0, 0, 0, "personne"); Villes roi = new Villes("roi", 0, 0, garderoyale, 0, 0, 0, no_one, no_one, 0); bool end = false; int initialSoldiersNumber = joueur.viking.number; int initialMercenaireNumber = joueur.merc_moyens.number; while (!end) { int attaque_joueur = vikings_atk(joueur, roi); if (attaque_joueur >= garni_def(roi)) { joueur.gold += 999999; //TODO Urgal : victoire totale end = true; } //diminution de la garnison roi.garnison.number = (int)Math.Floor((float)attaque_joueur / (roi.garnison.def)); //fin du tour des vikings, tour de la garnison int attaque_garni = garni_atk(roi); if (attaque_garni > vikings_def(joueur)) { //TODO Urgal : le joueur Game Over end = true; } else if (attaque_garni > joueur.merc_moyens.number * joueur.merc_moyens.def) { //cas du rekt des merc ou de pas de merc attaque_garni -= joueur.merc_moyens.number * joueur.merc_moyens.def; joueur.merc_moyens.number = 0; //diminution de l'équipage joueur.viking.number = (int)Math.Floor((float)attaque_garni / joueur.viking.def); } else { //diminution de l'équipage joueur.merc_moyens.number = (int)Math.Floor((float)attaque_garni / joueur.merc_moyens.def); } } }
public void applyEvent(Events ev, Drakkar drakkar) { CurrentEventTurn = ev.nbRound; Soldat Vikings = drakkar.viking; Soldat Merc = drakkar.merc_moyens; Vikings.atk += ev.modifAtk; Vikings.def += ev.modifDef; Vikings.moral += ev.modifMoral; Vikings.intimidate += ev.modifIntim; Vikings.number += ev.soldiermodifier.number; Merc.atk += ev.modifAtk; Merc.def += ev.modifDef; Merc.moral += ev.modifMoral; Merc.intimidate += ev.modifIntim; Merc.number += ev.soldiermodifier.number; }
//débuts des fonctions auxilliaires de calcul coté vikings public int vikings_atk(Drakkar joueur, Villes town) { switch (town.fortification) { case 0: return(joueur.viking.number * joueur.viking.atk + joueur.merc_moyens.number * joueur.merc_moyens.atk);; case 1: return(joueur.viking.number * (joueur.viking.atk - 1) + joueur.merc_moyens.number * 0); case 2: return(joueur.viking.number * (joueur.viking.atk - 2) + joueur.merc_moyens.number * 0); default: return(0); } }
// METTRE CA DANS LE GAME MANAGER // valeur propre à chaque espion, donc pas en attribut ici // int costEspion = 1; /* = un prix à déterminer en fonction des carac. de l'espion */ // Debug.Log("NEED UNE FONCTION DU PRIX"); // if (drakkar.espion_list.Count != drakkar.espion_list.Capacity) // peut etre mettre chaque costStat dans la classe public void UpgradeStat(Drakkar drakkar, string _stat, int upValue) { // potentiellement refaire le systeme de switch if (_stat == "atk") { drakkar.viking.atk += upValue; drakkar.gold -= costAtkUp; } else if (_stat == "def") { drakkar.viking.def += upValue; drakkar.gold -= costDefUp; } else if (_stat == "moral") { drakkar.viking.moral += upValue; drakkar.gold -= costMoralUp; } else if (_stat == "intimidate") { drakkar.viking.intimidate += upValue; drakkar.gold -= costIntimidateUp; } }
public void Espionnage(Drakkar joueur, Espion spy, Villes town, Time time) { if (town.perception > spy.discretion) { time.max_turn -= 1; if (town.capture > spy.fuite) { //Urgal : delete espion joueur.delEspion(spy); UIManager.DrawSpyResult(0, ResultType.DEADSPY, spy, town); } else { getinfo(town, spy, time); //todo faire la distinction de cas } } else { getinfo(town, spy, time); } timeScript.updateTurn(gameManager); }
// Je considère qu'on gère dans le GameManager le fait qu'on vérifie si le joueur a assez d'argent pour cliquer sur le bouton public void recrutSoldat(Drakkar drakkar, string _name, int n) { // potentiellement refaire le systeme de switch if (drakkar.viking.namePerso == _name) { drakkar.viking.add(n); drakkar.gold -= costViking; } //else if (drakkar.merc_faibles.name == _name) //{ // drakkar.merc_faibles.add(n); // drakkar.gold -= costMercFai; //} else if (drakkar.merc_moyens.namePerso == _name) { drakkar.merc_moyens.add(n); drakkar.gold -= costMercMoy; } //else if (drakkar.merc_forts.name == _name) //{ // drakkar.merc_forts.add(n); // drakkar.gold -= costMercFor; //} }
//résolution public void Pillage(Drakkar joueur, Villes town, Time time) { SoundManager.PlayBruitage("pillage"); time.max_turn -= 1; time.raidcount += 1; town.fear += 0.05f; town.productivity = 0.95f; town.raided = time.currentTurn; bool end = false; //Urgal : print pertes humaines int initialSoldiersNumber = joueur.viking.number; int initialMercenaireNumber = joueur.merc_moyens.number; while (!end) { int attaque_joueur = vikings_atk(joueur, town); //tour des vikings if (attaque_joueur >= garni_def(town)) { town.knights.number = 0; town.garnison.number = 0; town.is_knights = false; town.is_trebuchet = false; joueur.gold += town.gold; //Urgal : victoire UIManager.DrawPillageResult(town.gold, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGEWIN, town); town.gold = 0; end = true; } else if (attaque_joueur >= town.knights.number * town.knights.def) { //cas du rekt des chevaliers ou de pas de chevaliers attaque_joueur -= town.knights.number * (town.knights.def); town.knights.number = 0; town.is_knights = false; if (attaque_joueur > 0) { //diminution de la garnison town.garnison.number -= (int)Math.Floor((float)attaque_joueur / (town.garnison.def)); if (vikings_inti(joueur, town) > garni_moral(town)) { joueur.gold += town.gold; //Urgal : cas ou la ville se rend UIManager.DrawPillageResult(town.gold, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGESURRENDER, town); town.gold = 0; end = true; } //sinon on continue } else if (vikings_inti(joueur, town) > garni_moral(town)) { joueur.gold += town.gold; //Urgal : cas ou plus d'attaque restante, mais les defenseurs se rendent quand même UIManager.DrawPillageResult(town.gold, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGEWIN, town); town.gold = 0; end = true; } //sinon on continue } else { //cas ou les knights se font pas tous peter //diminution de la garnison town.knights.number -= (int)Math.Floor((float)attaque_joueur / (town.knights.def)); if (vikings_inti(joueur, town) > garni_moral(town)) { end = true; joueur.gold += town.gold; //Urgal : cas où la ville se rend UIManager.DrawPillageResult(town.gold, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGESURRENDER, town); town.gold = 0; } //sinon on continue } //fin du tour des vikings, tour de la garnison // uniquement si !end if (!end) { int attaque_garni = garni_atk(town); if (attaque_garni >= vikings_def(joueur)) { //Urgal : le joueur Game Over UIManager.DrawPillageResult(0, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGEGAMEOVER, town); end = true; } else if (attaque_garni > joueur.merc_moyens.number * joueur.merc_moyens.def) { //cas du rekt des merc ou de pas de merc attaque_garni -= joueur.merc_moyens.number * joueur.merc_moyens.def; joueur.merc_moyens.number = 0; if (attaque_joueur > 0) { //diminution de l'équipage joueur.viking.number -= (int)Math.Floor((float)attaque_garni / joueur.viking.def); if (garni_inti(town) > vikings_moral(joueur, town)) { end = true; //Urgal : cas ou les vikings se barrent UIManager.DrawPillageResult(town.gold, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGELOST, town); } //sinon on continue } else if (garni_inti(town) > vikings_moral(joueur, town)) { end = true; //Urgal : cas ou les vikings se barrent UIManager.DrawPillageResult(town.gold, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGELOST, town); } //sinon on continue } else { //diminution de l'équipage joueur.merc_moyens.number -= (int)Math.Floor((float)attaque_garni / joueur.merc_moyens.def); if (garni_inti(town) > vikings_moral(joueur, town)) { end = true; //Urgal : cas ou les vikings se barrent UIManager.DrawPillageResult(town.gold, initialSoldiersNumber - joueur.viking.number, initialMercenaireNumber - joueur.merc_moyens.number, ResultType.PILLAGELOST, town); } } } //sinon on continue* } timeScript.updateTurn(gameManager); }
public void DecreaseMinMembers(Drakkar drakkar, int subValue) { drakkar.min_members -= subValue; drakkar.gold -= costDecrease; }
public int vikings_inti(Drakkar joueur, Villes town) { { return(joueur.viking.number * (joueur.viking.intimidate)); } }
public int vikings_moral(Drakkar joueur, Villes town) { return(joueur.viking.number * (joueur.viking.moral)); }
public void recrutEspion(Drakkar drakkar, Espion espion, int costEspion) { drakkar.gold -= costEspion; drakkar.espion_list.Add(espion); }