Beispiel #1
0
        /// <summary>
        /// Setzt die Beziehungen zwischen zwei Spielern
        /// </summary>
        /// <param name="userA">Benutzer 1</param>
        /// <param name="userB">Benutzer 2</param>
        /// <param name="state">Beziehungsstatus</param>
        public void setRelation(User userA, User userB, RelationState state)
        {
            RelationHolder[] list2 = new RelationHolder[list.Count];
            this.list.CopyTo(list2);

            foreach (RelationHolder hold in list2)
            {
                if (((userA == hold.userA) && (userB == hold.userB)) || ((userB == hold.userA) && (userA == hold.userB)))
                {
                    list.Remove(hold);
                    RelationHolder holder = new RelationHolder();
                    holder.userA = userA;
                    holder.userB = userB;
                    holder.state = state;
                    list.Add(holder);
                    return;

                }

            }

            //Nicht in der Liste => neu Einfügen;
            RelationHolder holder2 = new RelationHolder();
            holder2.userA = userA;
            holder2.userB = userB;
            holder2.state = state;
            list.Add(holder2);
        }
Beispiel #2
0
 private Station( StationClass type, User UID, string name, string states)
 {
     this.type = type;
     this.uid = UID;
     this.name = name;
     this.states = states;
 }
Beispiel #3
0
 /// <summary>
 /// Erstellt ein neues Schiff
 /// </summary>
 /// <param name="type">Typ des Schiffes</param>
 /// <param name="UID">Der Besitzer des Schiffes</param>
 /// <param name="name">Der Name des Schiffes</param>
 /// <param name="fleet">Die Flotte, in der das Schiff ist</param>
 /// <param name="states">Die Zustände die ein Schiff hat</param>
 public Ship(ShipClass type, User UID, string name, int fleet, string states)
 {
     this.type = type;
     this.uid = UID;
     this.name = name;
     this.fleet = fleet;
     this.states = states;
 }
Beispiel #4
0
 private Troop(int ID, TroopClass type, User UID, string name, int team, string states)
 {
     id = ID;
     this.type = type;
     this.uid = UID;
     this.name = name;
     this.team = team;
     this.states = states;
 }
Beispiel #5
0
 /// <summary>
 /// Liefert alle Updates eines Spielers zurück
 /// </summary>
 /// <param name="user">Spieler</param>
 /// <returns>Alle Updates eines Spielers</returns>
 public List<Update> getUpdates(User user)
 {
     if (updatelist.ContainsKey(user))
     {
         return updatelist[user];
     }
     else
     {
         return new List<Update>();
     }
 }
Beispiel #6
0
        /// <summary>
        /// Fügt einem Spieler einen bestimmten Resourcen Betrag hinzu
        /// </summary>
        /// <param name="user">Benutzer, dem die Resourcen hinzugefügt werden sollen</param>
        /// <param name="resources">Liste der Resourcen</param>
        public void addRes(User user, ResList resources)
        {
            lock (resourceList)
            {

                foreach (KeyValuePair<ResType, double> get in resources)
                {
                    addRes(user, get.Key, get.Value);
                }
            }
        }
Beispiel #7
0
        /// <summary>
        /// Liefert den Beziehungsstatus, der zwischen den beiden angegebenen Spielern besteht
        /// </summary>
        /// <param name="userA">Benutzer 1</param>
        /// <param name="userB">Benutzer 2</param>
        /// <returns>Beziehungsstatus</returns>
        public RelationState getRelation(User userA, User userB)
        {
            foreach (RelationHolder hold in list)
            {
                if (((userA == hold.userA) && (userB == hold.userB)) || ((userB == hold.userA) && (userA == hold.userB)))
                {
                    return hold.state;
                }

            }
            return defaultstate;
        }
Beispiel #8
0
        /// <summary>
        /// Fügt einem Spieler eine Technologie hinzu
        /// </summary>
        /// <param name="user">Spieler</param>
        /// <param name="tech">Technologie</param>
        public void addTech(User user, Tech tech)
        {
            lock (techlist)
            {

                List<Tech> have = getTechs(user);

                if (!have.Contains(tech))
                {
                    techlist[user].Add(tech);

                }

            }
        }
Beispiel #9
0
        /// <summary>
        /// Fügt einem Spieler einen bestimmten Resourcen Betrag hinzu
        /// </summary>
        /// <param name="user">Benutzer, dem die Resourcen hinzugefügt werden sollen</param>
        /// <param name="type">Resourcen Typ</param>
        /// <param name="count">Resourcen Betrag</param>
        public void addRes(User user, ResType type, double count)
        {
            if (count < 0)
            {
                throw new ArgumentException("Der Wert von Count darf nicht kleiner als 0 sein!");
            }

            if (!resourceList.ContainsKey(user))
            {
                addUser(user);
            }

            lock (resourceList)
            {

                resourceList[user][type] += count;
            }
        }
Beispiel #10
0
        /// <summary>
        /// Helferfunktion, die den Resourcengewinn der Spieler regelt
        /// </summary>
        /// <param name="user">Benutzer</param>
        private void fkt_checkRes(User user)
        {
            List<Station> stationList = game.getStations();

            foreach (Station stat in stationList)
            {
                if (stat.Uid == user)
                {
                    ResList gain = stat.Type.create_res;

                    addRes(user, gain);

                }
            }

            List<Planet> planetenList = game.getPlanets();

            foreach (Planet planet in planetenList)
            {
                if (planet.UID == user)
                {
                    ResList gain = planet.type.create_res;

                    addRes(user, gain);

                }
            }

            foreach (KeyValuePair<ResType, double> res in resourceList[user])
            {
                if (res.Value > maxres)
                {
                    resourceList[user][res.Key] = maxres;
                }

            }
        }
Beispiel #11
0
        /// <summary>
        /// Zieht einem Spieler einen bestimmten Resourcen Betrag ab
        /// </summary>
        /// <param name="user">Benutzer, von dem die Resourcen abgezogen werden sollen</param>
        /// <param name="type">Resourcen Typ</param>
        /// <param name="count">Resourcen Betrag</param>
        public void subRes(User user, ResType type, double count)
        {
            if (count < 0)
            {
                throw new ArgumentException("Der Wert von Count darf nicht kleiner als 0 sein!");
            }

            if (!resourceList.ContainsKey(user))
            {
                addUser(user);
            }

            if ((resourceList[user][type] - count) < 0)
            {
                throw new GameException("Der Spieler hat nicht genügend Resourcen");
            }

            lock (resourceList)
            {

                resourceList[user][type] -= count;

            }
        }
Beispiel #12
0
        /// <summary>
        /// Überprüft ob ein Spieler mehr als einen bestimmten Betrag an Resourcen besitzt.
        /// </summary>
        /// <param name="user">Benutzer, für den die abfrage durchgeführt werden soll</param>
        /// <param name="price">ResList Objekt mit den Kosten</param>
        /// <returns>Boolscher Wert, der angibt, ob ein Spieler die benötigten Resouren besitzt</returns>
        public bool haveRes(User user, ResList price)
        {
            ResList have = getResources(user);

            foreach (KeyValuePair<ResType, double> want in price)
            {
                if (want.Value > have[want.Key])
                {
                    return false;
                }

            }

            return true;
        }
Beispiel #13
0
 /// <summary>
 /// Liefert die Resourcen eines Spielers zurück
 /// </summary>
 /// <param name="user">Benutzer für den die Resourcen abgefragt werden sollen</param>
 /// <returns>Die Resourcen in einer ResList. 0 sollte Spieler nicht in der Liste sein.</returns>
 public ResList getResources(User user)
 {
     if (resourceList.ContainsKey(user))
     {
         return resourceList[user];
     }
     else
     {
         return new ResList();
     }
 }
Beispiel #14
0
 /// <summary>
 /// Liefert alle erforschten Technologien eines Spielers zurück 
 /// </summary>
 /// <param name="user">Spieler</param>
 /// <returns>Alle erforschten Technologien</returns>
 public List<Tech> getTechs(User user)
 {
     if ((techlist.ContainsKey(user)) && (techlist[user] != null))
     {
         return techlist[user];
     }
     return new List<Tech>();
 }
Beispiel #15
0
        /// <summary>
        /// Erzeugt ein Dummy Objekt dieser Klasse, um es für Kampfsimulationen einzusetzten.
        /// </summary>
        /// <param name="type">Typ</param>
        /// <param name="name">Name</param>
        /// <returns>Eins Instanz dieser Klasse</returns>
        public static Troop createDummy(TroopClass type, string name)
        {
            User user = new User(0, "Dummy", "0", new Race(0, "Dummy"));
            Troop objekt = new Troop(0, type, user, name, 0, "");
            objekt.power = type.power;
            objekt.power2 = type.power2;
            objekt.power3 = type.power3;
            objekt.power4 = type.power4;
            objekt.resistend1 = type.resistend1;
            objekt.resistend2 = type.resistend2;
            objekt.resistend3 = type.resistend3;
            objekt.resistend4 = type.resistend4;
            objekt.health = type.health;

            objekt.fighterTyp = FighterType.TROOP;

            return objekt;
        }
Beispiel #16
0
        /// <summary>
        /// Überprüft die Updates für einen Spieler
        /// </summary>
        /// <param name="user">Spieler</param>
        private void CheckUpdates(User user)
        {
            List<Ship> listships = game.getShips();
            List<Station> liststations = game.getStations();
            List<Update> updates = getUpdates(user);

            foreach (Ship ship in listships)
            {
                if (ship.Uid == user)
                {
                    ship.power = ship.Type.power;
                    ship.power2 = ship.Type.power2;
                    ship.power3 = ship.Type.power3;
                    ship.power4 = ship.Type.power4;

                    ship.resistend1 = ship.Type.resistend1;
                    ship.resistend2 = ship.Type.resistend2;
                    ship.resistend3 = ship.Type.resistend3;
                    ship.resistend4 = ship.Type.resistend4;

                    ship.speed = ship.Type.speed;

                    foreach (Update update in updates)
                    {
                        if (update.shiptype == ship.Type)
                        {
                            ship.power += update.strength;
                            ship.power2 += update.strength2;
                            ship.power3 += update.strength3;
                            ship.power4 += update.strength4;

                            ship.resistend1 += update.resistend1;
                            ship.resistend2 += update.resistend2;
                            ship.resistend3 += update.resistend3;
                            ship.resistend4 += update.resistend4;

                            ship.speed += update.speed;

                        }

                    }

                }
            }

            foreach (Station station in liststations)
            {
                if (station.Uid == user)
                {
                    station.power = station.Type.power;
                    station.power2 = station.Type.power2;
                    station.power3 = station.Type.power3;
                    station.power4 = station.Type.power4;

                    station.resistend1 = station.Type.resistend1;
                    station.resistend2 = station.Type.resistend2;
                    station.resistend3 = station.Type.resistend3;
                    station.resistend4 = station.Type.resistend4;

                    foreach (Update update in updates)
                    {
                        if (update.stattype == station.Type)
                        {
                            station.power += update.strength;
                            station.power2 += update.strength2;
                            station.power3 += update.strength3;
                            station.power4 += update.strength4;

                            station.resistend1 += update.resistend1;
                            station.resistend2 += update.resistend2;
                            station.resistend3 += update.resistend3;
                            station.resistend4 += update.resistend4;

                        }

                    }

                }
            }

            // Überprüfung ob die Datenbankeinträge passen.

            List<Tech> listtech = main.modulmanager.tech.getTechs(user);

            List<Update> shouldHave = new List<Update>();

            foreach (Tech tech in listtech)
            {
                foreach (Update up in tech.update)
                {
                    shouldHave.Add(up);
                }
            }

            foreach (Update up in shouldHave)
            {
                if (!updates.Contains(up))
                {
                    updatelist[user].Add(up);
                }

            }
        }
Beispiel #17
0
 /// <summary>
 /// Fügt einen Spieler der Liste hinzu
 /// </summary>
 /// <param name="user">Spieler</param>
 public void addUser(User user)
 {
     techlist.Add(user, new List<Tech>());
 }
Beispiel #18
0
        /// <summary>
        /// Subroutine für checkTech
        /// </summary>
        /// <param name="user">Benutzer für den die Überprüfung durchgeführt werden soll</param>
        private void fkt_checkTech(User user)
        {
            if (researchlist.ContainsKey(user))
            {
                List<Forschung> list = researchlist[user];

                foreach (Forschung forschung in list)
                {
                    int finish = forschung.Started + forschung.Tech.time;
                    if (finish <= main.Round)
                    {
                        // Forschung fertig:

                        addTech(user, forschung.Tech);
                        researchlist[user].Remove(forschung);

                    }
                }

            }
        }
Beispiel #19
0
        /// <summary>
        /// Entfert eine Technologie von einem Spieler
        /// </summary>
        /// <param name="user">Spieler</param>
        /// <param name="tech">Technologie</param>
        public void removeTech(User user, Tech tech)
        {
            lock (techlist)
            {

                List<Tech> have = getTechs(user);

                if (have.Contains(tech))
                {
                    techlist[user].Remove(tech);
                }

            }
        }
Beispiel #20
0
 /// <summary>
 /// Überprüft ob ein Spieler eine Technologie besitzt
 /// </summary>
 /// <param name="user">Spieler</param>
 /// <param name="tech">Zu Überprüfende Technologie</param>
 /// <returns>Besitzt ein Spieler eine Technologie</returns>
 public bool haveTech(User user, Tech tech)
 {
     return getTechs(user).Contains(tech);
 }
Beispiel #21
0
 /// <summary>
 /// Fügt einen Spieler der Liste hinzu
 /// </summary>
 /// <param name="user">Spieler</param>
 public void addUser(User user)
 {
     resourceList.Add(user, new ResList());
 }
Beispiel #22
0
 /// <summary>
 /// Erstellt eine neue Forschung
 /// </summary>
 /// <param name="user">Der Benutzer dem die Foschung gehört</param>
 /// <param name="tech">Die Technologie die erforscht wird</param>
 /// <param name="started">Die Zeit wann Sie gestartet wurde</param>
 public Forschung(User user, Tech tech, int started)
 {
     this.user = user;
     this.tech = tech;
     this.started = started;
 }
Beispiel #23
0
 /// <summary>
 /// Liefert alle Forschungen eines Spielers zurück
 /// </summary>
 /// <param name="user">Spieler</param>
 /// <returns>Liste aller Forschungen</returns>
 public List<Forschung> getResearch(User user)
 {
     if (researchlist.ContainsKey(user))
     {
         return researchlist[user];
     }
     else
     {
         return new List<Forschung>();
     }
 }
Beispiel #24
0
 /// <summary>
 /// Liefert eine ganz bestimmte Resource eines Spieler zurück
 /// </summary>
 /// <param name="user">Benutzer für den die Resource abgefragt werden soll</param>
 /// <param name="type">Resourcen Typ</param>
 /// <returns>Anzahl der entsprechenden Resource</returns>
 public double getResource(User user, ResType type)
 {
     if (resourceList.ContainsKey(user))
     {
         ResList list = resourceList[user];
         return list[type];
     }
     return 0;
 }