예제 #1
0
    public int vikings_def(Drakkar joueur)
    {
        int result = joueur.viking.number * joueur.viking.def
                     + joueur.merc_moyens.number * joueur.merc_moyens.def;

        return(result);
    }
예제 #2
0
    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);
    }
예제 #3
0
 public void defeat(Drakkar joueur)
 {
     //TODO Urgal
     if (joueur.viking.number < joueur.min_members)
     {
         SoundManager.PlayBruitage("echec");
         UImanager.defeat();
         Application.Quit();
     }
 }
예제 #4
0
 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);
     }
 }
예제 #5
0
    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;
    }
예제 #6
0
    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;
    }
예제 #7
0
    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);
            }
        }
    }
예제 #8
0
    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;
    }
예제 #9
0
    //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);
        }
    }
예제 #10
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;
        }
    }
예제 #11
0
    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);
    }
예제 #12
0
    // 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;
        //}
    }
예제 #13
0
    //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);
    }
예제 #14
0
 public void DecreaseMinMembers(Drakkar drakkar, int subValue)
 {
     drakkar.min_members -= subValue;
     drakkar.gold        -= costDecrease;
 }
예제 #15
0
 public int vikings_inti(Drakkar joueur, Villes town)
 {
     {
         return(joueur.viking.number * (joueur.viking.intimidate));
     }
 }
예제 #16
0
 public int vikings_moral(Drakkar joueur, Villes town)
 {
     return(joueur.viking.number * (joueur.viking.moral));
 }
예제 #17
0
 public void recrutEspion(Drakkar drakkar, Espion espion, int costEspion)
 {
     drakkar.gold -= costEspion;
     drakkar.espion_list.Add(espion);
 }