Example #1
0
    static void AddPointToStartFrom(double startDirectionChangeChance)
    {
        maxLength--;
        if (maxLength <= 0)
        {
            return;
        }
        var chosenDirection = currentDirection;
        List <Direct.Direction> directionPossibilities = null;

        if (MathHelper.RandomChance(chanceToVaryFromDirection))
        {
            directionPossibilities = Direct.FullNeighborsOfWithout(currentDirection);
            chosenDirection        = ListHelper.RandomElementInList(directionPossibilities);
        }
        last = PointHelper.PointInDirection(last, chosenDirection);

        foreach (var p in PointHelper.PointsInDistanceAround(last, 4))
        {
            Map.AddWaterAt(p);
        }


        if (MathHelper.RandomChance(startDirectionChangeChance))
        {
            directionPossibilities     = Direct.FullNeighborsOfWithout(currentDirection);
            currentDirection           = ListHelper.RandomElementInList(directionPossibilities);
            startDirectionChangeChance = changeDirectionModifier * -1 * 15;
        }

        startDirectionChangeChance += changeDirectionModifier;

        AddPointToStartFrom(startDirectionChangeChance);
    }
Example #2
0
    public static void MakeRiver(Point start)
    {
        //decide one main start direction (startDir)
        //each point in start trail gets to add one point to the start trail in either startDir or either of startDir's neighbors
        //each point also has a slowly increasing chance to modify startDir to one of startDir's neighbors

        currentDirection = Direct.RandomFullDirection();

        last = start;
        AddPointToStartFrom(0);
    }
Example #3
0
 public static Point PointInDirection(Point point, Direct.Direction direction) => PointInDirectionBy(point, direction, 1);
Example #4
0
 public static Point PointInDirectionBy(Point point, Direct.Direction direction, int moveBy) => PointOffsetBy(point, PointExbandedBy(Direct.DirectionPointMap[direction], moveBy));
Example #5
0
 static void MoveAntInDirection(AntMemory ant, Direct.Direction direction)
 {
     Map.AddGroundAt(ant.Location);
     ant.Location = PointHelper.PointInDirection(ant.Location, direction);
     Map.AddAntAt(ant.Location);
 }