Example #1
0
        public void Move(string key, int yMove, int xMove)
        {
            if (!NameToEntity.ContainsKey(key) || PosToName.ContainsKey(new Position(NameToEntity[key].Pos.Y + yMove, NameToEntity[key].Pos.X + xMove)))
            {
                return;
            }
            Entity   e   = NameToEntity[key];
            Position pos = e.Pos;

            PosToName.Remove(pos);
            NameToEntity.Remove(key);
            e.Pos.Move(yMove, xMove);
            Add(key, e);
            foreach (var k in NameToEntity.Keys)
            {
                if (NameToEntity[k].Faction == e.Faction)
                {
                    NameToEntity[k] = NameToEntity[k].UpdateAlly(pos, e.Pos);
                }
                else
                {
                    NameToEntity[k] = NameToEntity[k].UpdateEnemy(pos, e.Pos);
                }
            }

//            byName[key].Seeker.SetGoal(e.Pos.Y, e.Pos.X);
//            byPosition[e.Pos].Seeker.SetGoal(e.Pos.Y, e.Pos.X);

            //Seeker.GetPath(Y, X);
        }
Example #2
0
        public void MoveDirectly(string key, Position dest)
        {
            if (!NameToEntity.ContainsKey(key) || PosToName.ContainsKey(dest))
            {
                return;
            }
            Entity   e   = NameToEntity[key];
            Position pos = e.Pos;

            PosToName.Remove(pos);
            NameToEntity.Remove(key);
            Add(key, e.UpdateWith(pos: dest));
            foreach (var k in NameToEntity.Keys)
            {
                if (NameToEntity[k].Faction == e.Faction)
                {
                    NameToEntity[k] = NameToEntity[k].UpdateAlly(pos, dest);
                }
                else
                {
                    NameToEntity[k] = NameToEntity[k].UpdateEnemy(pos, dest);
                }
            }
//            byName[key].Seeker.SetGoal(dest.Y, dest.X);
//            byPosition[dest].Seeker.SetGoal(dest.Y, dest.X);

            //Seeker.GetPath(Y, X);
        }
Example #3
0
        public void Add(string key, Entity val)
        {
            Entity v = val.UpdateWith(name: key);

            PosToName.Add(v.Pos, v.Name);
            NameToEntity.Add(key, v);
        }
Example #4
0
        public EntityDictionary(ImmutableDictionary <string, Entity> ents)
        {
            NameToEntity = ents.ToBuilder();
            PosToName    = ImmutableDictionary <Position, string> .Empty.ToBuilder();

            PosToName.AddRange(NameToEntity.ToDictionary(kv => kv.Value.Pos, kv => kv.Key));
        }
Example #5
0
 public bool ContainsExactly(Entity key)
 {
     if (key == null)
     {
         return(false);
     }
     return(NameToEntity.ContainsKey(key.Name) && NameToEntity[key.Name].Equals(key));
 }
Example #6
0
 public bool Contains(Entity key)
 {
     if (key == null)
     {
         return(false);
     }
     return(NameToEntity.ContainsKey(key.Name));
 }
Example #7
0
        public void Remove(Position key)
        {
            Entity e = NameToEntity[PosToName[key]];

            NameToEntity.Remove(e.Name);
            PosToName.Remove(key);
            foreach (var k in NameToEntity.Keys)
            {
                NameToEntity[k] = NameToEntity[k].RemoveAll(e.Pos);
            }
            H.S.Initiative.CancelTurn(e.Name);
        }
Example #8
0
        public void Remove(string key)
        {
            Entity e = NameToEntity[key];

            PosToName.Remove(e.Pos);
            NameToEntity.Remove(key);
            foreach (var k in NameToEntity.Keys)
            {
                NameToEntity[k] = NameToEntity[k].RemoveAll(e.Pos);
            }
            H.S.Initiative.CancelTurn(key);
        }
Example #9
0
        public int Step(string key)
        {
            if (!NameToEntity.ContainsKey(key))
            {
                return(0);
            }
            Entity e = NameToEntity[key];

            if (e.Seeker.Path == null || e.Seeker.Path.Count == 0)
            {
                return(0);
            }
            Position nxt = e.Seeker.Path.First();

            e.Seeker.Path.RemoveAt(0);
            MoveDirectly(key, nxt);
            return(e.Seeker.Path.Count);
        }
Example #10
0
 public ImmutableDictionary <string, Entity> ToImmutable()
 {
     return(NameToEntity.ToImmutable());
 }
Example #11
0
 public void UpdateAll(IEnumerable <Entity> vals)
 {
     NameToEntity.UpdateAll(vals.ToImmutableDictionary(e => e.Name));
     PosToName.UpdateAll(vals.ToImmutableDictionary(e => e.Pos, e => e.Name));
 }
Example #12
0
 public void Add(Entity val)
 {
     PosToName.Add(val.Pos, val.Name);
     NameToEntity.Add(val.Name, val);
 }
Example #13
0
 public bool Contains(string key)
 {
     return(NameToEntity.ContainsKey(key));
 }