//This constructor converts the enums into delegates. public MovementAndMethod(PossibleMovements ctorMovement, PossibleTriggers ctorTrigger, bool canBeUsedInMidair) { //Define the trigger switch (ctorTrigger) { case PossibleTriggers.LeftMouseClick: actionTrigger = new MethodToAction(CheckLeftClick); break; case PossibleTriggers.RightMouseClick: actionTrigger = new MethodToAction(CheckRightClick); break; case PossibleTriggers.ShiftPlusLeftClick: actionTrigger = new MethodToAction(CheckShiftPlusLeftClick); break; case PossibleTriggers.ShiftPlusRightClick: actionTrigger = new MethodToAction(CheckShiftPlusRightClick); break; default: Debug.LogError("Invalid trigger"); break; } //Define the movement. (Has to be used for animations) attackEnumVal = ctorMovement; //Used for extraneous cases. attackKey = attackEnumVal.ToString(); //Midair thing. canBeUsedWhileMidair = canBeUsedInMidair; }
protected override void UpdatePossibleMovements() { base.UpdatePossibleMovements(); if (_isFirstMove) { if (OwnerPlayer == PlayerType.Black) { PossibleMovements.Add(string.Concat(Position, Position[0], Convert.ToChar(Position[1] - 2))); } else { PossibleMovements.Add(string.Concat(Position, Position[0], Convert.ToChar(Position[1] + 2))); } } }
public bool MoveNode(Point startPosition, Point endPosition, EventHandler onCompleteEvent, float timer) { var moving = OccupiedTiles.ContainsKey(startPosition); var collision = CheckMovementCollision(startPosition, endPosition); var validMove = !moving && !collision; if (validMove) { var node = ValueAt(startPosition); RemoveNode(startPosition); AddNode(endPosition, node); var movingEntity = new ExpiringKey(timer) { OnCompleteEvent = onCompleteEvent }; foreach (var position in PossibleMovements.PositionsToCheck(startPosition, endPosition)) { OccupiedTiles[position] = movingEntity; } OccupiedTiles[startPosition] = movingEntity; MovingEntities[movingEntity] = node; } return(validMove); }