DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T d

⟦1c003d26a⟧ TextFile

    Length: 4604 (0x11fc)
    Types: TextFile
    Names: »draw.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/Sun/Tetris/draw.c« 

TextFile

#include "defs.h"

draw_shadow(shape_no, xpos, ypos, rot, col)
        int     shape_no, xpos, ypos, rot, col;
{
        int     y1;
        int     x1, x2, x3, x4;
        int     t0, t1, t2, t3;
        int     xsize;

        t0 = shape[shape_no].table[0][rot];     /* Bit map of 1st Row */
        t1 = shape[shape_no].table[1][rot];     /* Bit map of 2nd Row */
        t2 = shape[shape_no].table[2][rot];     /* Bit map of 3rd Row */
        t3 = shape[shape_no].table[3][rot];     /* Bit map of 4th Row */

        x1 = xpos * UNIT;       /* Position of 1st column of block grid */
        x2 = x1 + UNIT;         /* Position of 2nd column of block grid */
        x3 = x2 + UNIT;         /* Position of 3rd column of block grid */
        x4 = x3 + UNIT;         /* Position of 4th column of block grid */

        y1 = UHEIGHT * UNIT + SHADOW_OFFSET / 2;
        xsize = UWIDTH * UNIT;

        pw_batch_on(pw);
        pw_rop(pw, 0, y1, xsize, UNIT, CLR, NULL, 0, 0);
        if (t0 & 8 || t1 & 8 || t2 & 8 || t3 & 8)
                pw_rop(pw, x1, y1, UNIT, UNIT, OP, NULL, 0, 0);
        if (t0 & 4 || t1 & 4 || t2 & 4 || t3 & 4)
                pw_rop(pw, x2, y1, UNIT, UNIT, OP, NULL, 0, 0);
        if (t0 & 2 || t1 & 2 || t2 & 2 || t3 & 2)
                pw_rop(pw, x3, y1, UNIT, UNIT, OP, NULL, 0, 0);
        if (t0 & 1 || t1 & 1 || t2 & 1 || t3 & 1)
                pw_rop(pw, x4, y1, UNIT, UNIT, OP, NULL, 0, 0);
        pw_batch_off(pw);
}

show_next()
{
        int     y, y1, xsize;

        y = UHEIGHT * UNIT + SHADOW_HEIGHT;
        xsize = UNIT * UWIDTH;

        pw_batch_on(pw);
        pw_rop(pw, 0, y + UNIT, xsize, NEXT_HEIGHT - UNIT, CLR, NULL, 0, 0);

        pw_text(pw, 5, y + UNIT, PIX_SRC, NULL, "Next block");

        y1 = y / UNIT + 1;
        print_shape(next_no, 5, y1, next_rot, shape[next_no].color);

        pw_batch_off(pw);
}

print_shape(shape_no, x, y, rot, col)
        int     shape_no, x, y, rot, col;
{
        int     x1, x2, x3, x4, y1;
        int     t0, t1, t2, t3;

        t0 = shape[shape_no].table[0][rot];     /* Bit map of 1st Row */
        t1 = shape[shape_no].table[1][rot];     /* Bit map of 2nd Row */
        t2 = shape[shape_no].table[2][rot];     /* Bit map of 3rd Row */
        t3 = shape[shape_no].table[3][rot];     /* Bit map of 4th Row */

        x1 = x * UNIT;          /* Position of 1st column of block grid */
        x2 = x1 + UNIT;         /* Position of 2nd column of block grid */
        x3 = x2 + UNIT;         /* Position of 3rd column of block grid */
        x4 = x3 + UNIT;         /* Position of 4th column of block grid */
        y1 = y * UNIT;          /* Position of 1st row of block grid    */

        if (y > -1) {
                if (t0 & 8)
                        pw_rop(pw, x1, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t0 & 4)
                        pw_rop(pw, x2, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t0 & 2)
                        pw_rop(pw, x3, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t0 & 1)
                        pw_rop(pw, x4, y1, UNIT, UNIT, OP, NULL, 0, 0);
        }
        y1 += UNIT;             /* Position of next row */
        if (y > -2) {
                if (t1 & 8)
                        pw_rop(pw, x1, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t1 & 4)
                        pw_rop(pw, x2, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t1 & 2)
                        pw_rop(pw, x3, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t1 & 1)
                        pw_rop(pw, x4, y1, UNIT, UNIT, OP, NULL, 0, 0);
        }
        y1 += UNIT;             /* Position of next row */
        if (y > -3) {
                if (t2 & 8)
                        pw_rop(pw, x1, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t2 & 4)
                        pw_rop(pw, x2, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t2 & 2)
                        pw_rop(pw, x3, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t2 & 1)
                        pw_rop(pw, x4, y1, UNIT, UNIT, OP, NULL, 0, 0);
        }
        y1 += UNIT;             /* Position of next row */
        if (y > -4) {
                if (t3 & 8)
                        pw_rop(pw, x1, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t3 & 4)
                        pw_rop(pw, x2, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t3 & 2)
                        pw_rop(pw, x3, y1, UNIT, UNIT, OP, NULL, 0, 0);
                if (t3 & 1)
                        pw_rop(pw, x4, y1, UNIT, UNIT, OP, NULL, 0, 0);
        }
}