Пример #1
0
        public void Digg(Point point)
        {
            var cell = _cellModule.Get(point.X, point.Y);

            _list.Add(new DiggInfo
            {
                Cell          = cell,
                RemainingTime = 1f
            });
        }
Пример #2
0
        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;
                }
            }
        }