private void DigRiverGroups()
    {
        for (int i = 0; i < RiverGroups.Count; i++)
        {
            RiverGroup group   = RiverGroups[i];
            River      longest = null;

            //Find longest river in this group
            for (int j = 0; j < group.Rivers.Count; j++)
            {
                River river = group.Rivers[j];
                if (longest == null)
                {
                    longest = river;
                }
                else if (longest.Tiles.Count < river.Tiles.Count)
                {
                    longest = river;
                }
            }

            if (longest != null)
            {
                //Dig out longest path first
                DigRiver(longest);

                for (int j = 0; j < group.Rivers.Count; j++)
                {
                    River river = group.Rivers[j];
                    if (river != longest)
                    {
                        DigRiver(river, longest);
                    }
                }
            }
        }
    }
    private void BuildRiverGroups()
    {
        //loop each tile, checking if it belongs to multiple rivers
        for (var x = 0; x < Width; x++)
        {
            for (var y = 0; y < Height; y++)
            {
                Tile t = Tiles[x, y];

                if (t.Rivers.Count > 1)
                {
                    // multiple rivers == intersection
                    RiverGroup group = null;

                    // Does a rivergroup already exist for this group?
                    for (int n = 0; n < t.Rivers.Count; n++)
                    {
                        River tileriver = t.Rivers[n];
                        for (int i = 0; i < RiverGroups.Count; i++)
                        {
                            for (int j = 0; j < RiverGroups[i].Rivers.Count; j++)
                            {
                                River river = RiverGroups[i].Rivers[j];
                                if (river.ID == tileriver.ID)
                                {
                                    group = RiverGroups[i];
                                }
                                if (group != null)
                                {
                                    break;
                                }
                            }
                            if (group != null)
                            {
                                break;
                            }
                        }
                        if (group != null)
                        {
                            break;
                        }
                    }

                    // existing group found -- add to it
                    if (group != null)
                    {
                        for (int n = 0; n < t.Rivers.Count; n++)
                        {
                            if (!group.Rivers.Contains(t.Rivers[n]))
                            {
                                group.Rivers.Add(t.Rivers[n]);
                            }
                        }
                    }
                    else                       //No existing group found - create a new one
                    {
                        group = new RiverGroup();
                        for (int n = 0; n < t.Rivers.Count; n++)
                        {
                            group.Rivers.Add(t.Rivers[n]);
                        }
                        RiverGroups.Add(group);
                    }
                }
            }
        }
    }
	private void BuildRiverGroups()
	{
		//loop each tile, checking if it belongs to multiple rivers
		for (var x = 0; x < Width; x++) {
			for (var y = 0; y < Height; y++) {
				Tile t = Tiles[x,y];

				if (t.Rivers.Count > 1)
				{
					// multiple rivers == intersection
					RiverGroup group = null;

					// Does a rivergroup already exist for this group?
					for (int n=0; n < t.Rivers.Count; n++)
					{
						River tileriver = t.Rivers[n];
						for (int i = 0; i < RiverGroups.Count; i++)
						{
							for (int j = 0; j < RiverGroups[i].Rivers.Count; j++)
							{
								River river = RiverGroups[i].Rivers[j];
								if (river.ID == tileriver.ID)
								{
									group = RiverGroups[i];
								}
								if (group != null) break;
							}
							if (group != null) break;
						}
						if (group != null) break;
					}

					// existing group found -- add to it
					if (group != null)
					{
						for (int n=0; n < t.Rivers.Count; n++)
						{
							if (!group.Rivers.Contains(t.Rivers[n]))
								group.Rivers.Add(t.Rivers[n]);
						}
					}
					else   //No existing group found - create a new one
					{
						group = new RiverGroup();
						for (int n=0; n < t.Rivers.Count; n++)
						{
							group.Rivers.Add(t.Rivers[n]);
						}
						RiverGroups.Add (group);
					}
				}
			}
		}	
	}
示例#4
0
    private void BuildRiverGroups()
    {
        // Check each tile to see if owned by multiple rivers
        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {
                Tile t = tiles [x, y];

                if (t.rivers.Count > 1)
                {
                    RiverGroup group = null;

                    // Check if a river group already exists for this group
                    for (int n = 0; n < t.rivers.Count; n++)
                    {
                        River tileRiver = t.rivers [n];

                        for (int i = 0; i < riverGroups.Count; i++)
                        {
                            for (int j = 0; j < riverGroups [i].rivers.Count; j++)
                            {
                                River river = riverGroups [i].rivers [j];
                                if (river.ID == tileRiver.ID)
                                {
                                    group = riverGroups [i];
                                }
                                if (group != null)
                                {
                                    break;
                                }
                            }
                            if (group != null)
                            {
                                break;
                            }
                        }
                        if (group != null)
                        {
                            break;
                        }
                    }
                    // Existing group found, add to it
                    if (group != null)
                    {
                        for (int n = 0; n < t.rivers.Count; n++)
                        {
                            if (!group.rivers.Contains(t.rivers [n]))
                            {
                                group.rivers.Add(t.rivers [n]);
                            }
                        }
                    }
                    // No existing group found, create a new one
                    else
                    {
                        group = new RiverGroup();
                        for (int n = 0; n < t.rivers.Count; n++)
                        {
                            group.rivers.Add(t.rivers [n]);
                        }
                        riverGroups.Add(group);
                    }
                }
            }
        }
    }
示例#5
0
    private void BuildRiverGroups()
    {
        //loop each tile, checking if it belongs to multiple rivers
        for (var x = 0; x < _height; x++)
        {
            for (var y = 0; y < _width; y++)
            {
                var c = _cells[x, y];

                if (c.Rivers.Count > 1)
                {
                    // multiple rivers == intersection
                    RiverGroup group = null;

                    // Does a rivergroup already exist for this group?
                    for (var n = 0; n < c.Rivers.Count; n++)
                    {
                        var tileriver = c.Rivers[n];
                        for (var i = 0; i < _riverGroups.Count; i++)
                        {
                            for (var j = 0; j < _riverGroups[i].Rivers.Count; j++)
                            {
                                var river = _riverGroups[i].Rivers[j];
                                if (river.Id == tileriver.Id)
                                {
                                    group = _riverGroups[i];
                                }
                                if (group != null)
                                {
                                    break;
                                }
                            }
                            if (group != null)
                            {
                                break;
                            }
                        }
                        if (group != null)
                        {
                            break;
                        }
                    }

                    // existing group found -- add to it
                    if (group != null)
                    {
                        for (var n = 0; n < c.Rivers.Count; n++)
                        {
                            if (!group.Rivers.Contains(c.Rivers[n]))
                            {
                                group.Rivers.Add(c.Rivers[n]);
                            }
                        }
                    }
                    else   //No existing group found - create a new one
                    {
                        group = new RiverGroup();
                        for (var n = 0; n < c.Rivers.Count; n++)
                        {
                            group.Rivers.Add(c.Rivers[n]);
                        }
                        _riverGroups.Add(group);
                    }
                }
            }
        }
    }