Example #1
0
        public void DeletePheromones(int id)
        {
            PheromoneStack pheromoneStack = pheromoneStacks[id];

            foreach (PheromoneStackItem pheromoneStackItem in pheromoneStack.PheromoneItems)
            {
                Pheromone pheromone = pheromoneStackItem.Pheromone;
                pheromone.PheromoneItems.Remove(pheromoneStackItem.PheromoneItem);
                if (pheromone.PheromoneItems.Count == 0)
                {
                    Items.Remove(pheromone.Pos);
                }
            }
            pheromoneStacks.Remove(id);
        }
Example #2
0
        public void UpdatePheromones(int id, float intensity)
        {
            PheromoneStack pheromoneStack = pheromoneStacks[id];

            foreach (PheromoneStackItem pheromoneStackItem in pheromoneStack.PheromoneItems)
            {
                float relativIntensity = pheromoneStackItem.Distance * intensity;
                if (relativIntensity > 1)
                {
                    relativIntensity = 1;
                }
                if (relativIntensity < 0)
                {
                    relativIntensity = 0;
                }
                pheromoneStackItem.PheromoneItem.Intensity = relativIntensity;
            }
        }
Example #3
0
        public int DropPheromones(Player player, Position pos, int range, PheromoneType pheromoneType, float intensity, bool isStatic)
        {
            PheromoneStack pheromoneStack = new PheromoneStack();

            PheromoneStack.pheromoneStackCounter++;
            int counter = PheromoneStack.pheromoneStackCounter;

            pheromoneStacks.Add(counter, pheromoneStack);

            Dictionary <Position, TileWithDistance> tiles = player.Game.Map.EnumerateTiles(pos, range, false);

            foreach (TileWithDistance tileWithDistance in tiles.Values)
            {
                float totaldistance = range - tileWithDistance.Distance;
                float distance      = (totaldistance * 100) / range / 100;

                float relativIntensity = distance * intensity;

                PheromoneStackItem pheromoneStackItem = new PheromoneStackItem();

                Pheromone pheromone;
                pheromone = FindAt(tileWithDistance.Pos);
                if (pheromone == null)
                {
                    pheromone     = new Pheromone();
                    pheromone.Pos = tileWithDistance.Pos;
                    player.Game.Pheromones.Add(pheromone);
                }

                pheromoneStackItem.Pheromone     = pheromone;
                pheromoneStackItem.Distance      = distance;
                pheromoneStackItem.PheromoneItem = pheromone.Deposit(player.PlayerModel.Id, relativIntensity, pheromoneType, isStatic);

                pheromoneStack.PheromoneItems.Add(pheromoneStackItem);
            }

            return(counter);
        }