Exemple #1
0
        public override void AttachEvent(string id)
        {
            switch (id)
            {
            case TextStepper.StepEvent:
                Control.DownButtonClicked += (sender, e) =>
                {
                    if (ValidDirection.HasFlag(StepperValidDirections.Down))
                    {
                        Callback.OnStep(Widget, new StepperEventArgs(StepperDirection.Down));
                    }
                };
                Control.UpButtonClicked += (sender, e) =>
                {
                    if (ValidDirection.HasFlag(StepperValidDirections.Up))
                    {
                        Callback.OnStep(Widget, new StepperEventArgs(StepperDirection.Up));
                    }
                };
                break;

            default:
                base.AttachEvent(id);
                break;
            }
        }
Exemple #2
0
    public bool Walkable(Tile fromTile, Map.Direction directionOfTravel)
    {
        if (validDirections == ValidDirection.None || fromTile.validDirections == ValidDirection.None)
        {
            return(false);
        }

        ValidDirection toDirectionMask   = ValidDirection.None;
        ValidDirection fromDirectionMask = ValidDirection.None;

        switch (directionOfTravel)
        {
        case Map.Direction.North:
            toDirectionMask   = ValidDirection.South;
            fromDirectionMask = ValidDirection.North;
            break;

        case Map.Direction.South:
            toDirectionMask   = ValidDirection.North;
            fromDirectionMask = ValidDirection.South;
            break;

        case Map.Direction.East:
            toDirectionMask   = ValidDirection.West;
            fromDirectionMask = ValidDirection.East;
            break;

        case Map.Direction.West:
            toDirectionMask   = ValidDirection.East;
            fromDirectionMask = ValidDirection.West;
            break;
        }

        return(((validDirections & toDirectionMask) != ValidDirection.None) && ((fromTile.validDirections & fromDirectionMask) != ValidDirection.None));
    }
Exemple #3
0
        private bool HasSingleDirection(ValidDirection validDirections)
        {
            var validDirectionValue = ((int)validDirections);

            return(validDirectionValue != 0 &&
                   (validDirectionValue & (validDirectionValue - 1)) == 0);
        }
Exemple #4
0
    private ValidDirection parseValidDirections(string directions)
    {
        if (directions == null)
        {
            return(ValidDirection.None);
        }

        ValidDirection valid = ValidDirection.None;

        string[] parts = directions.Split(',');
        foreach (var part in parts)
        {
            switch (part)
            {
            case "north":
                valid |= ValidDirection.North;
                break;

            case "south":
                valid |= ValidDirection.South;
                break;

            case "east":
                valid |= ValidDirection.East;
                break;

            case "west":
                valid |= ValidDirection.West;
                break;
            }
        }

        return(valid);
    }
Exemple #5
0
        public static ValidDirection Reverse(this ValidDirection direction)
        {
            var directionValue = ((int)direction);

            if (directionValue > 2)
            {
                return((ValidDirection)(directionValue >> 2));
            }
            return((ValidDirection)(directionValue << 2));
        }
Exemple #6
0
        private ValidDirection GetRandomDirection(ValidDirection validDirections)
        {
            if (HasSingleDirection(validDirections))
            {
                return(validDirections);
            }

            var direction = ValidDirection.None;

            while (direction == ValidDirection.None)
            {
                var bitShift        = _random.Next(0, 4);
                var directionValue  = (1 << bitShift);
                var randomDirection = (ValidDirection)directionValue;
                direction = randomDirection & validDirections;
            }
            return(direction);
        }
 void TextBox_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == Keys.Up)
     {
         if (ValidDirection.HasFlag(StepperValidDirections.Up))
         {
             Callback.OnStep(Widget, new StepperEventArgs(StepperDirection.Up));
             e.Handled = true;
         }
     }
     else if (e.KeyData == Keys.Down)
     {
         if (ValidDirection.HasFlag(StepperValidDirections.Down))
         {
             Callback.OnStep(Widget, new StepperEventArgs(StepperDirection.Down));
             e.Handled = true;
         }
     }
 }
Exemple #8
0
        public static Vector2 <int> NeighborInDirection(this Vector2 <int> currentPoint, ValidDirection direction)
        {
            int ZdirectionValue = (int)(direction & (ValidDirection.North | ValidDirection.South));
            int XdirectionValue = (int)(direction & (ValidDirection.East | ValidDirection.West));

            ZdirectionValue = Math.Sign((ZdirectionValue - 2) * ZdirectionValue);
            XdirectionValue = Math.Sign((XdirectionValue - 3) * XdirectionValue);
            return(new Vector2 <int>(currentPoint.X - XdirectionValue, currentPoint.Z + ZdirectionValue));
        }
Exemple #9
0
 private void RemoveWall(ValidDirection direction, Vector2 <int> currentPoint)
 {
     BitMap[currentPoint.X, currentPoint.Z] &= ~direction;
 }
Exemple #10
0
    private void parseProperties(XElement properties)
    {
        foreach (XElement property in properties.Elements("property"))
        {
            if (property.Attribute("name") == null)
            {
                continue;
            }
            string name  = property.Attribute("name").Value;
            string value = property.Attribute("value").Value;
            switch (name)
            {
            case "exits":
                validDirections = parseValidDirections(value);
                break;

            case "centre-x":
                centreX = Convert.ToSingle(value);
                break;

            case "centre-y":
                centreY = Convert.ToSingle(value);
                break;

            case "east-x":
                eastX = Convert.ToSingle(value);
                break;

            case "east-y":
                eastY = Convert.ToSingle(value);
                break;

            case "west-x":
                westX = Convert.ToSingle(value);
                break;

            case "west-y":
                westY = Convert.ToSingle(value);
                break;

            case "north-x":
                northX = Convert.ToSingle(value);
                break;

            case "north-y":
                northY = Convert.ToSingle(value);
                break;

            case "south-x":
                southX = Convert.ToSingle(value);
                break;

            case "south-y":
                southY = Convert.ToSingle(value);
                break;

            default:
                Debug.Log("Unknown property " + name);
                break;
            }
        }
    }