Пример #1
0
 private void OnGangMemberRemoved(Gang gang, Character character)
 {
     if (this.TryGetPlayer(character, out Player player))
     {
         player.Gang = null;
     }
 }
Пример #2
0
        /// <summary>
        /// Get gangs by user ID
        /// </summary>
        /// <param name="guid">GUID</param>
        /// <returns>List og gangs belonging to that user</returns>
        public IEnumerable <Gang> GetGangsByUserGuid(string guid)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                using (var command = new SqlCommand("UserGangs_GetByUserGuid", connection))
                {
                    connection.Open();

                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add("@UserGUID", SqlDbType.NVarChar, 100).Value = guid.ToString();
                    var reader = command.ExecuteReader();

                    var gangList = new List <Gang>();
                    while (reader.Read())
                    {
                        var gang = new Gang();

                        var value = reader.GetOrdinal("gangId");
                        gang.GangId = reader.GetString(value);

                        value     = reader.GetOrdinal("gangName");
                        gang.Name = reader.GetString(value);

                        gangList.Add(gang);
                    }

                    return(gangList);
                }
            }
        }
Пример #3
0
        // Creates Gang, [Then Adds current user as GangMember With Leader Role]
        // TODO: Add current player to gang as leader when gang is created. Maar eerst sessions en inloggen regelen
        public void CreateGang(Gang gang)
        {
            try
            {
                using (SqlConnection conn = _dbConnection.GetConnString())
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[Gang] (name, tag, description, money, income, dateFounded) " +
                                                           "VALUES(@name, @tag, @description, @money, @income, @dateFounded)", conn))
                    {
                        cmd.Parameters.AddWithValue("@name", gang.Name);
                        cmd.Parameters.AddWithValue("@tag", gang.Tag);
                        cmd.Parameters.AddWithValue("@description", gang.Description);
                        cmd.Parameters.AddWithValue("@money", 10);
                        cmd.Parameters.AddWithValue("@income", 1);
                        cmd.Parameters.AddWithValue("dateFounded", DateTime.Now);

                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Пример #4
0
        protected override void OnUnitVisibilityUpdated(Unit target, Visibility visibility)
        {
            switch (visibility)
            {
            case Visibility.Visible:
            {
                target.BroadcastPacket += OnUnitBroadcastPacket;
                target.Updated         += OnUnitUpdated;
                Session.SendPacket(target.EnterPacketBuilder);
                break;
            }

            case Visibility.Invisible:
            {
                target.BroadcastPacket -= OnUnitBroadcastPacket;
                target.Updated         -= OnUnitUpdated;
                Session.SendPacket(target.ExitPacketBuilder);
                break;
            }
            }

            if (Gang.IsMember(target))
            {
                Session.SendPacket(new GangUpdatePacketBuilder(visibility, (Player)target));
            }

            base.OnUnitVisibilityUpdated(target, visibility);
        }
Пример #5
0
        public ActionResult CreateGang(IFormCollection form)
        {
            // AI TaakId
            List <Gang> allGangs = _gangLogic.GetGangs();
            int         autoIncrementHighestId = 1;

            foreach (Gang currentGang in allGangs)
            {
                if (currentGang.GangId > autoIncrementHighestId)
                {
                    autoIncrementHighestId = currentGang.GangId + 1;
                }
            }

            Gang gang = new Gang
            {
                Name        = form["Name"],
                Tag         = form["Tag"],
                Description = form["Description"],
                Players     = new List <Player>(),
                GangId      = autoIncrementHighestId
            };

            _gangLogic.CreateGang(gang);
            return(RedirectToAction("Index"));
        }
Пример #6
0
        public string GenerateImage(Gang gang)
        {
            TacticsImageGenerator generator = new TacticsImageGenerator(300, 300);

            foreach (var ganger in gang.GetAllCombatants())
            {
                bool succes = generator.AddGangerPosition(ganger.Name, (ganger.Hp / ganger.Template.StartingHp) * 100, ganger.Mindset, ganger is Leader);
                var mindset = ganger.Mindset;
                if (!succes)
                {
                    while (mindset != 0)
                    {
                        mindset -= 1;
                        if (generator.AddGangerPosition(ganger.Name, (ganger.Hp / ganger.Template.StartingHp) * 100, ganger.Mindset, ganger is Leader))
                            break;
                    }
                }
            }

            Random rand = new Random();

            Bitmap image = generator.GenerateTacticsImage();
            image.Save(Server.MapPath("~/" + string.Format(tacticImageUrl, gang.Id, string.Empty)), ImageFormat.Png);
            return string.Format(tacticImageUrl, gang.Id, "?" + rand.Next());
        }
Пример #7
0
        public void GangRatingTest()
        {
            var gang = new Gang()
            {
                Gangers = new[]
                {
                    new Ganger()
                    {
                        Experience = 50,
                        Cost       = 50
                    },
                    new Ganger()
                    {
                        Experience = 50,
                        Cost       = 50
                    },
                    new Ganger()
                    {
                        Experience = 50,
                        Cost       = 50
                    },
                    new Ganger()
                    {
                        Experience = 50,
                        Cost       = 50
                    }
                }
            };

            var expected = 400;

            Assert.AreEqual(expected, gang.GangRating);
        }
Пример #8
0
 public static void SendPacketToGang(this IZone zone, Gang gang, Packet packet, long exceptMemberEid = 0L)
 {
     zone.GetGangMembers(gang).Where(player => player.Eid != exceptMemberEid).ForEach(p =>
     {
         p.Session.SendPacket(packet);
     });
 }
Пример #9
0
 private void OnGangMemberJoined(Gang gang, Character character)
 {
     if (this.TryGetPlayer(character, out Player player))
     {
         player.Gang = gang;
     }
 }
        public void UpdateGang(Gang gang)
        {
            Gang gangToUpdate = GetGangWithId(gang.GangId);

            gangToUpdate.Name        = gang.Name;
            gangToUpdate.Tag         = gang.Tag;
            gangToUpdate.Description = gang.Description;
        }
Пример #11
0
        protected override bool IsDetected(Unit target)
        {
            if (Gang.IsMember(target))
            {
                return(true);
            }

            return(base.IsDetected(target));
        }
Пример #12
0
 private void OnGangDisbanded(Gang gang)
 {
     foreach (var player in Players)
     {
         if (player.Gang == gang)
         {
             player.Gang = null;
         }
     }
 }
Пример #13
0
 public Entry(int Id, String Name, String Beschreibung, Klassifikation Klassifikation, int Portion, Schwierigkeit Schwierigkeit, Saison Saison, Gang Gang)
 {
     this.Id             = Id;
     this.Name           = Name;
     this.Beschreibung   = Beschreibung;
     this.Klassifikation = Klassifikation;
     this.Portionen      = Portionen;
     this.Schwierigkeit  = Schwierigkeit;
     this.Saison         = Saison;
     this.Gang           = Gang;
 }
Пример #14
0
        public void GetRandomTerritoryFailureTest()
        {
            _mockDiceRoller.Setup(m => m.RollD66()).Returns(70);
            _mockGangProvider.Setup(m => m.AddGang(It.IsAny <Gang>()))
            .Returns((Gang g) => g);

            var gang = new Gang()
            {
                Gangers = new Ganger[0]
            };

            Assert.Throws <HivemindException>(() => _gangManager.AddGang(gang));
        }
Пример #15
0
        /// <summary>
        /// Add gang
        /// </summary>
        /// <param name="gang">Gang to add</param>
        /// <returns>Added gang</returns>
        public Gang AddGang(Gang gang)
        {
            var addedGang = _gangProvider.AddGang(gang);

            foreach (var ganger in addedGang.Gangers)
            {
                _gangerProvider.AddGanger(ganger);
            }

            InitialGangTerritories(addedGang.GangId);

            return(addedGang);
        }
Пример #16
0
        public IActionResult EditGang(int id, IFormCollection form)
        {
            Gang gang = new Gang()
            {
                Name        = form["Name"],
                Tag         = form["Tag"],
                Description = form["Description"],
                GangId      = id
            };

            _gangLogic.UpdateGang(gang);
            return(RedirectToAction("Index"));
        }
        public Gang GetGangWithId(int id)
        {
            Gang correctGang = null;

            foreach (Gang currentGang in _gangs)
            {
                if (currentGang.GangId == id)
                {
                    correctGang = currentGang;
                }
            }
            return(correctGang);
        }
        // TODO: Fix dit: zorgt dat het uit gangplayerlijst wordt verwijderd, niet uit lijst players
        public void RemovePlayerFromGang(int playerId, int gangId)
        {
            _players.Remove(_players[playerId]);

            Gang correctGang = null;

            foreach (Gang currentGang in _gangs)
            {
                if (currentGang.GangId == gangId)
                {
                    correctGang = currentGang;
                }
            }
        }
        public IEnumerable <Player> GetPlayersInGang(int id)
        {
            Gang correctGang = null;

            foreach (Gang currentGang in _gangs)
            {
                if (currentGang.GangId == id)
                {
                    correctGang = currentGang;
                }
            }

            return(correctGang?.Players);
        }
Пример #20
0
        public static RandomEventResult Generate(Gang gang)
        {
            var randomValue = RandomGenerator.GetForRange(0, 4);

            if (randomValue == 0)
            {
                var ev = _randomEvents[RandomGenerator.GetForRange(0, _randomEvents.Count)];
                if (ev.CanAffectGang(gang))
                {
                    return(new RandomEventResult(ev));
                }
            }
            return(new RandomEventResult());
        }
Пример #21
0
        public void GetRandomTerritoryTest(int roll, TerritoryEnum territoryId)
        {
            _mockDiceRoller.Setup(m => m.RollD66()).Returns(roll);
            _mockGangProvider.Setup(m => m.AddGang(It.IsAny <Gang>()))
            .Returns((Gang g) => g);

            var gang = new Gang()
            {
                Gangers = new Ganger[0]
            };

            var addedGang = _gangManager.AddGang(gang);

            _mockTerritoryProvider.Verify(m => m.GetTerritoryById((int)territoryId), Times.AtLeastOnce);
        }
Пример #22
0
 public Gang CreateGang(long creator, string name)
 {
     using (var db = new Database())
     {
         var gang = new Gang()
         {
             Members = "",
             Name    = name,
             Creator = creator,
             Id      = db.Gangs.Count() + 1
         };
         db.Gangs.Add(gang);
         db.SaveChanges();
         return(gang);
     }
 }
Пример #23
0
        public Gang AddGang([FromBody] Gang gang)
        {
            // TODO: validate request
            // TODO: Assign gang to principal
            var principal = User as ClaimsPrincipal;
            var userId    = principal.Claims.FirstOrDefault(claim => claim.Type == "userId");

            if (userId == null)
            {
                throw new HivemindException("User does not have a user ID");
            }

            var gangEntity = _gangManager.AddGang(gang);

            _gangManager.AssociateGangToUser(gang.GangId, userId.Value);

            return(gangEntity);
        }
Пример #24
0
    private void Attack(Gang gang, AttackDifficulty difficulty)
    {
        var attack = new Attack();

        attack.Target = gang;
        attack.Attacker = null;

        DateTime d1 = new DateTime(1970, 1, 1).ToUniversalTime();
        DateTime d2 = DateTime.UtcNow.AddHours(3 + rand.Next(0, 3));
        DateTime d3 = DateTime.UtcNow;
        TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
        string arrival = ts.TotalMilliseconds.ToString();
        ts = new TimeSpan(d3.Ticks - d1.Ticks);
        string now = ts.TotalMilliseconds.ToString();
        attack.ETA.Value = arrival;

        attack.Indicator = "Zombies";

        int random = rand.Next(2, 5);

        int zombies = random * ((int)difficulty + 1);

        int exposure = gang.Exposure;

        for (int i = 0; i < zombies; i++)
        {
            int exposureOffset = rand.Next(0, 50);
            var combatant = CombatantType.Zombie;

            if (exposure < 55)
                neutType.Value = CombatantType.Zombie;
            else if (exposure < 85)
                neutType.Value = CombatantType.Zombie;
            else if (exposure < 120)
                neutType.Value = CombatantType.Zombie;
            else
                neutType.Value = CombatantType.Zombie;

            neutNode.Attributes.Append(neutType);
            attackNode.AppendChild(neutNode);
        }

        gang.LastAttack = now;
    }
Пример #25
0
        /// <summary>
        /// Update a gang
        /// </summary>
        /// <param name="gang">Gang</param>
        /// <returns>Updated gang</returns>
        public Gang UpdateGang(Gang gang)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                using (var command = new SqlCommand("Gangs_UpdateGang", connection))
                {
                    connection.Open();

                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add("@GangId", SqlDbType.NVarChar, 100).Value = gang.GangId;
                    command.Parameters.Add("@Name", SqlDbType.NVarChar).Value        = gang.Name;
                    command.Parameters.Add("@House", SqlDbType.Int).Value            = (int)gang.GangHouse;
                    command.Parameters.Add("@Credits", SqlDbType.Int).Value          = gang.Credits;
                    command.ExecuteNonQuery();

                    return(GetGangById(gang.GangId));
                }
            }
        }
Пример #26
0
    private void Start()
    {
        _animationController = new MemberAnimationController(this);
        _myGang         = transform.parent.GetComponentInChildren <Gang>();
        _navigator      = GetComponent <NavMeshAgent>();
        _memberRb       = GetComponent <Rigidbody>();
        _memberRenderer = GetComponentInChildren <SkinnedMeshRenderer>();

        _navigator.speed = baseSpeed;
        _memberDelta     = Vector2.zero;

        _downRayLayer = 1 << LayerMask.NameToLayer("Default");

        memState = MemberState.onNav;
        navState = NavigatorState.noPath;

        queuedAnimations = new Queue <GangAnimData>();

        ClosePhysics();
    }
Пример #27
0
        public List <Gang> GetGangs()
        {
            List <Gang> gangs = new List <Gang>();

            try
            {
                using (SqlConnection conn = _dbConnection.GetConnString())
                {
                    conn.Open();
                    using (SqlCommand gangCmd = new SqlCommand("SELECT * FROM [dbo].[Gang];", conn))
                    {
                        using (SqlDataReader gangReader = gangCmd.ExecuteReader())
                        {
                            while (gangReader.Read())
                            {
                                Gang gang = new Gang();
                                gang.GangId      = (int)gangReader["GangID"];
                                gang.Name        = (string)gangReader["name"];
                                gang.Tag         = (string)gangReader["tag"];
                                gang.Description = gangReader["description"]?.ToString();
                                gang.Money       = (decimal)gangReader["money"];
                                gang.Income      = (decimal)gangReader["income"];
                                gang.DateFounded = (DateTime)gangReader["dateFounded"];
                                gangs.Add(gang);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            foreach (Gang currentGang in gangs)
            {
                currentGang.Players = GetPlayersInGang(currentGang.GangId);
            }
            return(gangs);
        }
Пример #28
0
        public void SpendTest(int startingCredits, int spendingAmount, int finalCredits, bool expectSuccess)
        {
            var gangId = "1";
            var gang   = new Gang()
            {
                GangId  = gangId,
                Name    = "TestGang",
                Credits = startingCredits
            };

            _mockGangProvider.Setup(m => m.GetGangById(It.IsAny <string>()))
            .Returns(gang);

            _mockGangProvider.Setup(m => m.UpdateGang(It.IsAny <Gang>()))
            .Returns((Gang g) => g);

            var wasSuccessful = _gangManager.Spend(gangId, spendingAmount);

            Assert.AreEqual(expectSuccess, wasSuccessful);
            Assert.AreEqual(finalCredits, gang.Credits);
        }
Пример #29
0
        private Gang GetGangFromReader(SqlDataReader reader)
        {
            var gang = new Gang();

            if (reader.Read())
            {
                var value = reader.GetOrdinal("gangId");
                gang.GangId = reader.GetString(value);

                value     = reader.GetOrdinal("gangName");
                gang.Name = reader.GetString(value);

                value          = reader.GetOrdinal("house");
                gang.GangHouse = (GangHouse)reader.GetInt32(value);

                value        = reader.GetOrdinal("credits");
                gang.Credits = reader.GetInt32(value);
            }

            return(gang);
        }
Пример #30
0
        public static Gang CreateGang(ulong leaderId, ulong guildId, string name)
        {
            Expression <Func <Gang, bool> > expression = x => x.Name.ToLower() == name.ToLower() && x.GuildId == guildId;

            if (DEABot.Gangs.Find(expression).Limit(1).Any())
            {
                throw new Exception($"There is already a gang by the name {name}.");
            }
            if (name.Length > Config.GANG_NAME_CHAR_LIMIT)
            {
                throw new Exception($"The length of a gang name may not be longer than {Config.GANG_NAME_CHAR_LIMIT} characters.");
            }
            var createdGang = new Gang()
            {
                GuildId  = guildId,
                LeaderId = leaderId,
                Name     = name
            };

            DEABot.Gangs.InsertOne(createdGang);
            return(createdGang);
        }
Пример #31
0
        /// <summary>
        /// Add a gang
        /// </summary>
        /// <param name="gang">Gang</param>
        /// <returns>Added gang</returns>
        public Gang AddGang(Gang gang)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                using (var command = new SqlCommand("Gangs_AddGang", connection))
                {
                    connection.Open();

                    command.CommandType = CommandType.StoredProcedure;
                    var gangId = command.Parameters.Add("@GangId", SqlDbType.NVarChar, 100);
                    gangId.Direction = ParameterDirection.Output;
                    command.Parameters.Add("@GangName", SqlDbType.NVarChar).Value = gang.Name;
                    command.Parameters.Add("@House", SqlDbType.Int).Value         = (int)gang.GangHouse;
                    command.Parameters.Add("@Credits", SqlDbType.Int).Value       = (int)gang.Credits;
                    command.ExecuteNonQuery();

                    gang.GangId = (string)gangId.Value;

                    return(gang);
                }
            }
        }
Пример #32
0
        public void AddGangTest()
        {
            _mockDiceRoller.Setup(d => d.RollD66()).Returns(11);

            var gang = new Gang()
            {
                Name    = "New Gang",
                Gangers = new[]
                {
                    new Ganger()
                    {
                        Name = "Ganger 1"
                    },
                    new Ganger()
                    {
                        Name = "Ganger 2"
                    },
                    new Ganger()
                    {
                        Name = "Ganger 3"
                    }
                }
            };

            _mockGangProvider.Setup(m => m.AddGang(It.IsAny <Gang>()))
            .Returns((Gang g) =>
            {
                g.GangId = "AAAA-BBBB-CCCC";
                return(g);
            });

            var addedGang = _gangManager.AddGang(gang);

            _mockGangProvider.Verify(m => m.AddGang(gang), Times.Once);
            Assert.AreEqual("AAAA-BBBB-CCCC", addedGang.GangId);
            _mockGangerProvider.Verify(m => m.AddGanger(It.IsAny <Ganger>()), Times.Exactly(3));
            _mockTerritoryProvider.Verify(m => m.AddGangTerritory(It.Is <GangTerritory>(gt => gt.GangId == gang.GangId)), Times.Exactly(5));
        }
Пример #33
0
        public bool HandleArrivedAttacks(Gang gang)
        {
            DateTime d2 = DateTime.UtcNow;
            TimeSpan ts = new TimeSpan(d2.Ticks - startTime.Ticks);
            double dateNow = ts.TotalMilliseconds;
            var toBeDeleted = new List<Attack>();
            foreach (Attack attack in gang.IncomingAttacks)
            {
                if (System.Convert.ToDouble(attack.ETA) < dateNow)
                {
                    attackResolver.ResolveAttack(attack);

                    toBeDeleted.Add(attack);
                    NhSession.Save(attack);
                }
            }
            foreach (Attack attack in toBeDeleted)
            {
                gang.IncomingAttacks.Remove(attack);
                NhSession.Save(gang);
            }
            return true;
        }
Пример #34
0
 private string GetStatusImage(Gang gang)
 {
     return "Content/LastStandImages/StatusImage" + gang.Status + ".jpg?";
 }
Пример #35
0
 private void HandleCasualties(Attack attack, Gang gang)
 {
     foreach (Combatant casualty in graveyard)
     {
         if (gang.Members.Contains(casualty) && casualty is Gangmember)
         {
             Gangmember ganger = (Gangmember) casualty;
             casualty.Destroyed = true;
             gang.Members.Remove(ganger);
             gang.Graveyard.Add(ganger);
         }
         else if (casualty == gang.Leader) //ouch!
         {
             gang.Leader.Destroyed = true;
             //remove leader:
         }
     }
 }
Пример #36
0
        private void Attack(Gang gang, AttackDifficulty difficulty, ISession NhSession)
        {
            var attack = new Attack();
            attack.Name = "Zombie attack";
            attack.Target = gang;
            attack.Attacker = null;

            DateTime d1 = new DateTime(1970, 1, 1).ToUniversalTime();
            DateTime d2 = DateTime.UtcNow.ToUniversalTime().AddHours(3 + rand.Next(0, 3));
            DateTime d3 = DateTime.UtcNow.ToUniversalTime();
            TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
            var arrival = ts.TotalMilliseconds;
            ts = new TimeSpan(d3.Ticks - d1.Ticks);
            var now = ts.TotalMilliseconds;
            attack.ETA = arrival;

            attack.Indicator = "Zombies";

            int random = rand.Next(2, 5);

            int zombies = random * ((int)difficulty + 1);

            int exposure = gang.Exposure;

            for (int i = 0; i < zombies; i++)
            {
                int exposureOffset = rand.Next(0, 50);
                var combatant = CombatantType.Zombie;

                if (exposure < 55)
                    combatant = CombatantType.Zombie;
                else if (exposure < 85)
                    combatant = CombatantType.PlagueZombie;
                else if (exposure < 120)
                    combatant = CombatantType.BloodZombie;
                else
                    combatant = CombatantType.ZombieLord;

                attack.Combatants.Add(combatant);
            }

            gang.LastAttack = now;
            gang.IncomingAttacks.Add(attack);

            NhSession.Save(gang);
            NhSession.Save(attack);
        }
Пример #37
0
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static int get_domination_time( Gang G = null ) {
			return Num13.maxInt( 180, ((int)( 900 - Num13.round( G.territory.len / GlobalVars.start_state.num_territories * 100, 1 ) * 12 )) );
		}