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); }
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); }
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); }
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); }