示例#1
0
    public float NextTurn(int d, int turn)
    {
        Cell                c;
        MOVELIST            dir  = (MOVELIST)d;
        BARBARIAN_MOVE_TYPE type = DecideMove(dir, out c);

        ExecuteMove(c, type);

        if (type == BARBARIAN_MOVE_TYPE.INVALID)
        {
            return(0.01f);
        }
        return(VisualTurn(type, c, turn));
    }
示例#2
0
    public void ChangeSprite(MOVELIST dir, int occupant)
    {
        Sprite currentGraphic = new Sprite();


        switch (dir)
        {
        case MOVELIST.M_LEFT:
            currentGraphic = moveLeft;
            if (occupant == 1)
            {
                currentGraphic = attack;
            }
            butLeft.image.sprite = currentGraphic;
            break;

        case MOVELIST.M_FORWARD:
            currentGraphic = moveForward;
            if (occupant == 1)
            {
                currentGraphic = attack;
            }
            butForward.image.sprite = currentGraphic;
            break;

        case MOVELIST.M_RIGHT:
            currentGraphic = moveRight;
            if (occupant == 1)
            {
                currentGraphic = attack;
            }
            butRight.image.sprite = currentGraphic;
            break;

        case MOVELIST.M_BACK:
            currentGraphic = moveBack;
            if (occupant == 1)
            {
                currentGraphic = attack;
            }
            butBack.image.sprite = currentGraphic;
            break;

        case MOVELIST.S_STOMP:
            //TODO: Implement stomp UI
            break;
        }
    }
示例#3
0
    private BARBARIAN_MOVE_TYPE DecideMove(MOVELIST dir, out Cell c)
    {
        switch (dir)
        {
        case MOVELIST.M_LEFT:
            c = map.CellAtPoint(cell.x - 1, cell.y);
            break;

        case MOVELIST.M_FORWARD:
            c = map.CellAtPoint(cell.x, cell.y + 1);
            break;

        case MOVELIST.M_RIGHT:
            c = map.CellAtPoint(cell.x + 1, cell.y);
            break;

        case MOVELIST.M_BACK:
            c = map.CellAtPoint(cell.x, cell.y - 1);
            break;

        case MOVELIST.S_STOMP:
            c = cell;
            return(BARBARIAN_MOVE_TYPE.SPELL_STOMP);

        default:
            c = cell;
            break;
        }

        if (c == null)
        {
            // Something went wrong.
            return(BARBARIAN_MOVE_TYPE.INVALID);
        }

        if (c.type == 666)
        {
            // Probably out of bounds.
            return(BARBARIAN_MOVE_TYPE.INVALID);
        }

        if (c.type == 5)
        {
            return(BARBARIAN_MOVE_TYPE.FINISH);
        }

        if (c.occupant == 1)
        {
            // Occupied tile that (can be attacked).
            return(BARBARIAN_MOVE_TYPE.ATTACK);
        }

        if ((c.type == 0 || c.type == 4) && c.occupant == 0)
        {
            // Empty ground tile.
            return(BARBARIAN_MOVE_TYPE.MOVE);
        }
        else
        {
            // Some garbage.
            return(BARBARIAN_MOVE_TYPE.INVALID);
        }
    }