public void Digg(Point point) { var cell = _cellModule.Get(point.X, point.Y); _list.Add(new DiggInfo { Cell = cell, RemainingTime = 1f }); }
public virtual void Move() { if (!IsDigging) { var stayCurrPos = true; var curToken = _cellModule.Get(X, Y).Type; bool curState; Cell nextToken; if (curToken == CellType.Ladder || (curToken == CellType.RopeBar && YOffset == 0f)) { //ladder & bar curState = true; //ok to move (on ladder or bar) } else if (YOffset < 0) { //no ladder && yOffset < 0 ==> falling curState = false; } else if (Y < _cellModule.Bottom) { //no laddr && y < maxTileY && yOffset >= 0 nextToken = _cellModule[X, Y + 1]; if (nextToken.IsEmpty) { curState = false; } else if (nextToken.Any(CellType.Block, CellType.Ladder, CellType.Solid)) { curState = true; } else if (_guardModule.IsGuardAt(X, Y + 1)) { curState = true; } else { curState = false; } } else { // no laddr && y == maxTileY curState = true; } if (!curState) { stayCurrPos = (Y >= _cellModule.Bottom || _cellModule[X, Y + 1].Any(CellType.Block, CellType.Solid) || _guardModule.IsGuardAt(X, Y + 1)); MoveStep(CharacterAction.Fall, stayCurrPos); return; } } }