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; } }
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)); }
private bool HasSingleDirection(ValidDirection validDirections) { var validDirectionValue = ((int)validDirections); return(validDirectionValue != 0 && (validDirectionValue & (validDirectionValue - 1)) == 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); }
public static ValidDirection Reverse(this ValidDirection direction) { var directionValue = ((int)direction); if (directionValue > 2) { return((ValidDirection)(directionValue >> 2)); } return((ValidDirection)(directionValue << 2)); }
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; } } }
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)); }
private void RemoveWall(ValidDirection direction, Vector2 <int> currentPoint) { BitMap[currentPoint.X, currentPoint.Z] &= ~direction; }
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; } } }