diff --git a/data/altres.gif b/data/altres.gif index 77442b8..a137edd 100644 Binary files a/data/altres.gif and b/data/altres.gif differ diff --git a/data/rooms/00.txt b/data/rooms/00.txt index 3c26210..48d0599 100644 --- a/data/rooms/00.txt +++ b/data/rooms/00.txt @@ -47,7 +47,7 @@ actor{ bmp: altres.gif bmp-rect: 0 75 20 33 bmp-offset: 0 39 - pos: 0 30 6 + pos: -1 30 6 size: 1 1 9 movement: CW } @@ -57,7 +57,7 @@ actor{ bmp: altres.gif bmp-rect: 0 75 20 33 bmp-offset: 0 39 - pos: 0 23 6 + pos: -1 23 6 size: 1 1 9 movement: CW } diff --git a/data/rooms/17.txt b/data/rooms/17.txt index a281fcc..a7fdd4c 100644 --- a/data/rooms/17.txt +++ b/data/rooms/17.txt @@ -7,6 +7,7 @@ floor-texture: 0 wall-texture: 0 door-texture: 0 under-door-texture: 0 +exit-xn: 27 exit-yn: 9 actor{ diff --git a/data/rooms/18.txt b/data/rooms/18.txt index 010a2a4..a1ed83e 100644 --- a/data/rooms/18.txt +++ b/data/rooms/18.txt @@ -16,6 +16,18 @@ actor{ bmp: caixes.gif bmp-rect: 0 0 32 32 bmp-offset: 0 32 + pos: 40 48 0 + size: 8 8 8 + orient: YP + flags: PUSHABLE ORIENTABLE + movement: CW +} + +actor{ + name: BOX-A-00 + bmp: caixes.gif + bmp-rect: 0 0 32 32 + bmp-offset: 0 32 pos: 8 24 0 size: 8 8 8 flags: PUSHABLE @@ -23,7 +35,52 @@ actor{ } actor{ - name: BOX-C + name: BOX-A-01 + bmp: caixes.gif + bmp-rect: 0 0 32 32 + bmp-offset: 0 32 + pos: 48 8 0 + size: 8 8 8 + movement: CW +} + +actor{ + name: BOX-A-02 + bmp: caixes.gif + bmp-rect: 0 0 32 32 + bmp-offset: 0 32 + pos: 10 8 0 + size: 8 8 8 + orient: YP + flags: PUSHABLE ORIENTABLE + movement: CW +} + +actor{ + name: BOX-B-00 + bmp: caixes.gif + bmp-rect: 32 0 32 32 + bmp-offset: 0 32 + pos: 40 10 0 + size: 8 8 8 + flags: PUSHABLE + movement: CW +} + +actor{ + name: BOX-B-01 + bmp: caixes.gif + bmp-rect: 32 0 32 32 + bmp-offset: 0 32 + pos: 42 48 8 + size: 8 8 8 + orient: YP + flags: PUSHABLE ORIENTABLE + movement: CW +} + +actor{ + name: BOX-C-00 bmp: caixes.gif bmp-rect: 64 0 32 32 bmp-offset: 0 32 @@ -33,6 +90,18 @@ actor{ movement: CW } +actor{ + name: BOX-C-01 + bmp: caixes.gif + bmp-rect: 64 0 32 32 + bmp-offset: 0 32 + pos: 44 8 8 + size: 8 8 8 + orient: YP + flags: PUSHABLE ORIENTABLE + movement: CW +} + actor{ name: LIFT bmp: altres.gif diff --git a/data/rooms/19.txt b/data/rooms/19.txt index 1baf9dc..811c75c 100644 --- a/data/rooms/19.txt +++ b/data/rooms/19.txt @@ -196,6 +196,20 @@ actor{ movement: CW } +actor{ + name: OBRER + bmp: obrer.gif + bmp-rect: 0 0 24 32 + bmp-offset: -4 37 + pos: 56 16 0 + size: 8 8 8 + orient: XN + anim-wait: 1 + flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: X +} + actor{ name: REIXA-Y bmp: altres.gif diff --git a/data/rooms/27.txt b/data/rooms/27.txt new file mode 100644 index 0000000..8c4653f --- /dev/null +++ b/data/rooms/27.txt @@ -0,0 +1,220 @@ +width: 2 +height: 3 +door-height-xp: 0 +door-height-xn: 0 +color: YELLOW +floor-texture: 10 +wall-texture: 9 +door-texture: 3 +under-door-texture: 9 +exit-xp: 17 +exit-xn: 28 + +actor{ + name: BOX-B + bmp: caixes.gif + bmp-rect: 32 0 32 32 + bmp-offset: 0 32 + pos: 48 8 0 + size: 8 8 8 + flags: PUSHABLE + movement: CW +} + +actor{ + name: CADIRA + bmp: caixes.gif + bmp-rect: 64 96 20 32 + bmp-offset: -7 38 + pos: 16 32 0 + size: 6 5 8 + orient: YP + movement: CW +} + +actor{ + name: CUADRO-00 + bmp: altres.gif + bmp-rect: 66 75 18 32 + bmp-offset: 0 39 + pos: 7 8 6 + size: 1 1 9 + orient: YP + movement: CW +} + +actor{ + name: CUADRO-01 + bmp: altres.gif + bmp-rect: 102 75 18 32 + bmp-offset: 0 39 + pos: 7 48 6 + size: 1 1 9 + orient: YP + movement: CW +} + +actor{ + name: KALLAX-00 + bmp: altres.gif + bmp-rect: 0 48 24 27 + bmp-offset: -8 31 + pos: 16 0 0 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: KALLAX-01 + bmp: altres.gif + bmp-rect: 48 48 24 27 + bmp-offset: -8 31 + pos: 16 0 8 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: KALLAX-02 + bmp: altres.gif + bmp-rect: 24 48 24 27 + bmp-offset: -8 31 + pos: 8 0 0 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: KALLAX-02 + bmp: altres.gif + bmp-rect: 48 48 24 27 + bmp-offset: -8 31 + pos: 40 0 0 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: KALLAX-03 + bmp: altres.gif + bmp-rect: 24 48 24 27 + bmp-offset: -8 31 + pos: 48 0 0 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: KALLAX-04 + bmp: altres.gif + bmp-rect: 96 48 24 27 + bmp-offset: -8 31 + pos: 40 0 8 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: KALLAX-05 + bmp: altres.gif + bmp-rect: 72 48 24 27 + bmp-offset: -8 31 + pos: 48 0 8 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: KALLAX-06 + bmp: altres.gif + bmp-rect: 96 48 24 27 + bmp-offset: -8 31 + pos: 8 0 8 + size: 8 4 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: MESITA + bmp: caixes.gif + bmp-rect: 0 64 32 32 + bmp-offset: 0 32 + pos: 24 0 0 + size: 8 8 4 + movement: CW +} + +actor{ + name: NES + bmp: caixes.gif + bmp-rect: 96 0 32 32 + bmp-offset: -2 33 + pos: 32 0 0 + size: 8 7 6 + flags: PUSHABLE + movement: CW +} + +actor{ + name: ROOMBA + bmp: caixes.gif + bmp-rect: 160 0 32 32 + bmp-offset: 0 34 + pos: 8 56 0 + size: 8 8 2 + orient: XN + flags: REACTIVE MOVING DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: TAULA-A + bmp: caixes.gif + bmp-rect: 128 32 32 32 + bmp-offset: 0 32 + pos: 24 24 0 + size: 8 8 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: TAULA-B + bmp: caixes.gif + bmp-rect: 160 32 32 32 + bmp-offset: 0 32 + pos: 24 32 0 + size: 8 8 8 + orient: YP + flags: ORIENTABLE + movement: CW +} + +actor{ + name: TV + bmp: caixes.gif + bmp-rect: 32 64 32 32 + bmp-offset: -4 34 + pos: 24 0 4 + size: 8 6 8 + flags: PUSHABLE + movement: CW +} diff --git a/data/rooms/28.txt b/data/rooms/28.txt new file mode 100644 index 0000000..54ebb40 --- /dev/null +++ b/data/rooms/28.txt @@ -0,0 +1,281 @@ +width: 3 +height: 3 +door-height-xp: 0 +door-height-yp: 0 +door-height-yn: 0 +color: GREEN +floor-texture: 10 +wall-texture: 3 +door-texture: 1 +under-door-texture: 3 +exit-xp: 27 +exit-yp: 35 +exit-yn: 29 + +actor{ + name: BLOCMATA-00 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 48 48 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-01 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 48 40 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-02 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 40 48 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-03 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 48 16 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-04 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 48 8 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-05 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 40 8 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-06 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 16 8 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-07 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 8 8 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-08 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 8 16 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-09 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 8 40 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-10 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 8 48 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-11 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 16 48 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-12 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 24 24 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-13 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 32 24 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-14 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 32 32 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BLOCMATA-15 + bmp: altres.gif + bmp-rect: 0 133 32 27 + bmp-offset: 0 27 + pos: 24 32 0 + size: 8 8 6 + flags: REACTIVE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: CW +} + +actor{ + name: BUBBLE-00 + bmp: altres.gif + bmp-rect: 20 75 28 26 + bmp-offset: -2 28 + pos: 8 8 6 + size: 8 8 8 + orient: ZP + flags: PUSHABLE MOVING INERTIA + movement: Z +} + +actor{ + name: BUBBLE-01 + bmp: altres.gif + bmp-rect: 20 75 28 26 + bmp-offset: -2 28 + pos: 8 48 31 + size: 8 8 8 + orient: ZP + flags: PUSHABLE MOVING INERTIA + movement: Z +} + +actor{ + name: BUBBLE-02 + bmp: altres.gif + bmp-rect: 20 75 28 26 + bmp-offset: -2 28 + pos: 48 48 23 + size: 8 8 8 + orient: ZP + flags: PUSHABLE MOVING INERTIA + movement: Z +} + +actor{ + name: BUBBLE-03 + bmp: altres.gif + bmp-rect: 20 75 28 26 + bmp-offset: -2 28 + pos: 48 8 15 + size: 8 8 8 + orient: ZP + flags: PUSHABLE MOVING INERTIA + movement: Z +} + +actor{ + name: GAT-BATMAN + bmp: gat.gif + bmp-rect: 0 0 24 28 + bmp-offset: -4 32 + pos: 0 24 0 + size: 8 8 8 + orient: YP + anim-wait: 1 + flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: RAND +} + +actor{ + name: GAT-ROBIN + bmp: gat2.gif + bmp-rect: 0 0 24 28 + bmp-offset: -4 32 + pos: 32 16 0 + size: 8 8 8 + orient: XP + anim-wait: 1 + flags: REACTIVE MOVING ANIMATED ORIENTABLE DEADLY + react-mask: XP XN YP YN ZP ZN + movement: RAND +} diff --git a/data/rooms/29.txt b/data/rooms/29.txt new file mode 100644 index 0000000..5b47f18 --- /dev/null +++ b/data/rooms/29.txt @@ -0,0 +1,13 @@ +width: 0 +height: 3 +door-height-xn: 0 +door-height-yp: 0 +door-height-yn: 0 +color: WHITE +floor-texture: 4 +wall-texture: 2 +door-texture: 0 +under-door-texture: 0 +exit-xn: 31 +exit-yp: 28 +exit-yn: 30 diff --git a/data/rooms/30.txt b/data/rooms/30.txt new file mode 100644 index 0000000..80a5ea9 --- /dev/null +++ b/data/rooms/30.txt @@ -0,0 +1,257 @@ +width: 3 +height: 3 +door-height-yp: 1 +color: CYAN +floor-texture: 11 +wall-texture: 0 +door-texture: 0 +under-door-texture: 0 +exit-yp: 29 + +actor{ + name: PLATF-02 + bmp: caixes.gif + bmp-rect: 96 160 32 32 + bmp-offset: 0 32 + pos: 0 8 16 + size: 8 8 8 + orient: ZP + movement: Z +} + +actor{ + name: PLATF-04 + bmp: caixes.gif + bmp-rect: 96 160 32 32 + bmp-offset: 0 32 + pos: 0 8 0 + size: 8 8 8 + orient: ZP + movement: Z +} + +actor{ + name: PLATH + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 0 56 16 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-00 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 0 16 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-00 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 32 56 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-01 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 24 56 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-02 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 0 24 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-03 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 0 32 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-04 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 0 40 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-05 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 0 48 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: PLATH-06 + bmp: caixes.gif + bmp-rect: 160 128 32 32 + bmp-offset: 0 32 + pos: 0 56 0 + size: 8 8 4 + orient: ZP + movement: Z +} + +actor{ + name: ROOMBA + bmp: caixes.gif + bmp-rect: 160 0 32 32 + bmp-offset: 0 34 + pos: 0 56 4 + size: 8 8 2 + orient: YN + flags: REACTIVE MOVING DEADLY + react-mask: XP XN YP YN ZP ZN + movement: Y +} + +actor{ + name: S-BAG + bmp: objectes.gif + bmp-rect: 145 41 20 25 + bmp-offset: -5 27 + pos: 0 56 20 + size: 4 4 4 + anim-cycle: SEQ + anim-wait: 2 + flags: SPECIAL + movement: CW +} + +actor{ + name: TRANSPA-00 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 48 48 0 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-01 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 48 26 6 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-02 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 48 26 0 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-03 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 48 4 0 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-04 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 48 4 6 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-05 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 48 4 12 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-06 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 24 4 0 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-06 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 24 4 16 + size: 8 8 6 + movement: CW +} + +actor{ + name: TRANSPA-07 + bmp: altres.gif + bmp-rect: 0 160 32 32 + bmp-offset: 0 32 + pos: 24 4 8 + size: 8 8 6 + movement: CW +} + +actor{ + name: TV + bmp: caixes.gif + bmp-rect: 32 64 32 32 + bmp-offset: -4 34 + pos: 0 13 24 + size: 8 6 8 + flags: PUSHABLE GRAVITY + movement: CW +} diff --git a/data/rooms/31.txt b/data/rooms/31.txt new file mode 100644 index 0000000..a102328 --- /dev/null +++ b/data/rooms/31.txt @@ -0,0 +1,11 @@ +width: 2 +height: 2 +door-height-xp: 0 +door-height-yp: 0 +color: PURPLE +floor-texture: 0 +wall-texture: 0 +door-texture: 0 +under-door-texture: 0 +exit-xp: 29 +exit-yp: 32 diff --git a/data/rooms/32.txt b/data/rooms/32.txt new file mode 100644 index 0000000..a1c1f83 --- /dev/null +++ b/data/rooms/32.txt @@ -0,0 +1,11 @@ +width: 2 +height: 2 +door-height-yp: 0 +door-height-yn: 0 +color: CYAN +floor-texture: 0 +wall-texture: 0 +door-texture: 0 +under-door-texture: 0 +exit-yp: 33 +exit-yn: 31 diff --git a/data/rooms/33.txt b/data/rooms/33.txt new file mode 100644 index 0000000..db8ddec --- /dev/null +++ b/data/rooms/33.txt @@ -0,0 +1,13 @@ +width: 2 +height: 2 +door-height-xp: 0 +door-height-yp: 0 +door-height-yn: 0 +color: WHITE +floor-texture: 0 +wall-texture: 0 +door-texture: 0 +under-door-texture: 0 +exit-xp: 35 +exit-yp: 34 +exit-yn: 32 diff --git a/data/rooms/34.txt b/data/rooms/34.txt new file mode 100644 index 0000000..21242c8 --- /dev/null +++ b/data/rooms/34.txt @@ -0,0 +1,9 @@ +width: 2 +height: 2 +door-height-yn: 0 +color: CYAN +floor-texture: 0 +wall-texture: 0 +door-texture: 0 +under-door-texture: 0 +exit-yn: 33 diff --git a/data/rooms/35.txt b/data/rooms/35.txt new file mode 100644 index 0000000..6bc9d6a --- /dev/null +++ b/data/rooms/35.txt @@ -0,0 +1,11 @@ +width: 2 +height: 2 +door-height-xn: 0 +door-height-yn: 0 +color: YELLOW +floor-texture: 0 +wall-texture: 0 +door-texture: 0 +under-door-texture: 0 +exit-xn: 33 +exit-yn: 28 diff --git a/data/templates.txt b/data/templates.txt index 0cbc335..dfc56ef 100644 --- a/data/templates.txt +++ b/data/templates.txt @@ -467,7 +467,7 @@ category{ bmp: obrer.gif bmp-rect: 0 0 24 32 bmp-offset: -4 37 - pos: 48 0 4 + pos: 56 16 0 size: 8 8 8 orient: YP anim-wait: 1 diff --git a/source/actor.cpp b/source/actor.cpp index eb5a4d6..d648edc 100644 --- a/source/actor.cpp +++ b/source/actor.cpp @@ -8,6 +8,7 @@ #include "debug.h" #include "config.h" #include +#include "m_game.h" namespace actor { @@ -756,6 +757,7 @@ namespace actor } break; case MOV_RAND: + act->react_push = (rand()%32)+8; // [RZC 26/09/2024] Hack usant react_push en el moviment RAND per a contar la distancia abans de canviar de direcció switch (rand()%4) { case 0: act->mov_push=PUSH_YP; break; @@ -817,6 +819,14 @@ namespace actor return; } + // [RZC 26/09/2024] Hack usant react_push en el moviment RAND per a contar la distancia abans de canviar de direcció + if (act->movement==MOV_RAND) + { + act->react_push--; + if (act->react_push==0) changeMoving(act); + } + + // [RZC 26/09/2024] Hack usant react_push en les bambolles de café per al dz del moviment de anar pegant botets if (act->movement==MOV_RANDJ) { @@ -1170,7 +1180,7 @@ namespace actor draw::pushSource(); draw::setSource(act->surface); - if (editor::isEditing() && (act==selected)) draw::swapcol(1, room::getColor(1)); // Si està seleccionat, que canvie de color + if (editor::isEditing() && (act==selected) && modules::game::getSection()==modules::game::SECTION_ACTOR) draw::swapcol(1, room::getColor(1)); // Si està seleccionat, que canvie de color draw::stencil::set(act->tag); draw::draw(x, y, act->bmp_rect.w, act->bmp_rect.h, act->bmp_rect.x+ao, act->bmp_rect.y+oo, flip); draw::swapcol(1, room::getColor(0)); // Tornem al color per defecte diff --git a/source/m_editor_templates.cpp b/source/m_editor_templates.cpp index ba947f7..655d523 100644 --- a/source/m_editor_templates.cpp +++ b/source/m_editor_templates.cpp @@ -7,6 +7,7 @@ #include #include "room.h" #include "jutil.h" +#include "m_game.h" #define EDITING_NORMAL 0 #define EDITING_CATEGORY_NAME 1 @@ -146,7 +147,7 @@ namespace modules actor::select(new_act); actor::setFloatingEditing(true); room::editor::modify(); - + modules::game::setSection(modules::game::SECTION_ACTOR); return false; } } else { diff --git a/source/m_game.cpp b/source/m_game.cpp index 00dc30e..25811d6 100644 --- a/source/m_game.cpp +++ b/source/m_game.cpp @@ -12,8 +12,6 @@ namespace modules { namespace game { - enum sections { SECTION_GENERAL, SECTION_ROOM, SECTION_ACTOR }; - std::vector gifs; int treeview_scroll = 0; @@ -275,6 +273,16 @@ namespace modules } } + void setSection(int value) + { + section = value; + } + + const int getSection() + { + return section; + } + int loop() { int return_value = GAME_NONE; @@ -362,6 +370,10 @@ namespace modules actor::select(actor::findByTag(val)); section = SECTION_ACTOR; } + else if (input::mouseX()>=0 && input::mouseX()<320 && input::mouseY()>=0 && input::mouseY()<240) + { + section = SECTION_ROOM; + } } // Si estem jugant, o estem en el editor pero NO en mode edició, pinta els marcadors diff --git a/source/m_game.h b/source/m_game.h index 321a30a..f0c1239 100644 --- a/source/m_game.h +++ b/source/m_game.h @@ -16,9 +16,14 @@ namespace modules #define GAME_EDITOR_BITMAP_POS 6 #define GAME_EDITOR_BITMAP_SIZE 7 + enum sections { SECTION_GENERAL, SECTION_ROOM, SECTION_ACTOR }; + void init(); int loop(); + void setSection(int value); + const int getSection(); + std::vector getGifs(); } } diff --git a/source/room.cpp b/source/room.cpp index 43ae6e1..51a15c0 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -88,30 +88,36 @@ namespace room if (doors & DOOR_YP) { - uint8_t actual_floor = door_height[2]>0?0:floor_type*32; - actor::actor_t *act = actor::create("DOOR_YP1", {24,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[2]*8}); + const int floor_row_tiles = int(floor_surf->w/32); + const uint8_t actual_floor = door_height[2]>0?0:floor_type; + int floor_x = (actual_floor%floor_row_tiles)*32; + int floor_y = int(actual_floor/floor_row_tiles)*16; + actor::actor_t *act = actor::create("DOOR_YP1", {24,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, "floor.gif", {floor_x,floor_y+1,32,15}, {0,15+door_height[2]*8}); act->flags = FLAG_NOEDITOR; actor::setDirty(act, true); - act = actor::create("DOOR_YP2", {32,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[2]*8}); + act = actor::create("DOOR_YP2", {32,(tmax.y+1)*8,0}, {8,8,(door_height[2])*4}, "floor.gif", {floor_x,floor_y+1,32,15}, {0,15+door_height[2]*8}); act->flags = FLAG_NOEDITOR; actor::setDirty(act, true); - act = actor::create("DOOR_YP", {20,(tmax.y+1)*8,1+door_height[2]*4}, {5,4,1}, "doors.gif", {(doors_type%6)*40,(doors_type/6)*59,16,48}, {-16,49}); + act = actor::create("DOOR_YP", {20,(tmax.y+1)*8,1+door_height[2]*4}, {5,4,24}, "doors.gif", {(doors_type%6)*40,(doors_type/6)*59,16,48}, {-16,49}); act->flags = FLAG_NOEDITOR; actor::setDirty(act, true); } if (doors & DOOR_XP) { - uint8_t actual_floor = door_height[0]>0?0:floor_type*32; - actor::actor_t *act = actor::create("DOOR_XP1", {(tmax.x+1)*8,24,0}, {8,8,(door_height[0])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[0]*8}); + const int floor_row_tiles = int(floor_surf->w/32); + const uint8_t actual_floor = door_height[0]>0?0:floor_type; + int floor_x = (actual_floor%floor_row_tiles)*32; + int floor_y = int(actual_floor/floor_row_tiles)*16; + actor::actor_t *act = actor::create("DOOR_XP1", {(tmax.x+1)*8,24,0}, {8,8,(door_height[0])*4}, "floor.gif", {floor_x,floor_y+1,32,15}, {0,15+door_height[0]*8}); act->flags = FLAG_NOEDITOR; actor::setDirty(act, true); - act = actor::create("DOOR_XP2", {(tmax.x+1)*8,32,0}, {8,8,(door_height[0])*4}, "floor.gif", {actual_floor,1,32,15}, {0,15+door_height[0]*8}); + act = actor::create("DOOR_XP2", {(tmax.x+1)*8,32,0}, {8,8,(door_height[0])*4}, "floor.gif", {floor_x,floor_y+1,32,15}, {0,15+door_height[0]*8}); act->flags = FLAG_NOEDITOR; actor::setDirty(act, true); - act = actor::create("DOOR_XP", {(tmax.x+1)*8,20,1+door_height[0]*4}, {8,8,1}, "doors.gif", {(doors_type%6)*40,(doors_type/6)*59,16,48}, {0,49}); + act = actor::create("DOOR_XP", {(tmax.x+1)*8,20,1+door_height[0]*4}, {8,8,24}, "doors.gif", {(doors_type%6)*40,(doors_type/6)*59,16,48}, {0,49}); act->flags = FLAG_NOEDITOR | FLAG_ORIENTABLE; act->orient = PUSH_YP; actor::setDirty(act, true);