X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=data%2Fscenes%2FClassic.lua;fp=data%2Fscenes%2FClassic.lua;h=62b8a97045b047790e913392fefe46572e3c3143;hp=0000000000000000000000000000000000000000;hb=542e50a284c7f5b144a5c97c17f6d89b2af0175c;hpb=b887538a8ccc1c904f6aa24f0f6dcc23e0cc2f72 diff --git a/data/scenes/Classic.lua b/data/scenes/Classic.lua new file mode 100644 index 0000000..62b8a97 --- /dev/null +++ b/data/scenes/Classic.lua @@ -0,0 +1,974 @@ + +-- Scene: Classic Yoink +-- created by Neil Carter +-- converted to Lua by Charles McGarvey + +-- Scene API: +-- +-- Functions: +-- SetPlayfieldBounds(point1, point2) +-- SetMaximumBounds(point1, point2) +-- ResetTransform() +-- Translate(x, y, z) +-- Scale(x, y, z) or Scale(xyz) +-- Rotate(axis, degree) or Rotate(x, y, z) +-- SetTexture(name) +-- MakeTilemap({width = ..., surface_type = ..., tiles = {}}) +-- MakeBillboard({tile = ..., u_scale = ...}) +-- +-- Globals: +-- detail - level of detail of the scene + + +SetPlayfieldBounds({0, 0, -100}, {1280, 500, 100}) +SetMaximumBounds({-160, 0, -192}, {1440, 480, 224}) + + +-- Left end tower block +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Front + +ResetTransform() +Translate(-5, 0, 5) +Scale(32) +SetTexture("TowerBlock1") +MakeTilemap({ + width = 5, + tiles = { + 2, 2, 2, 2, 2, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 1, 0, 0, 1, 0, + 4, 4, 4, 4, 4 + } +}) + +-- Right side + +ResetTransform() +Rotate('y', 90) +Translate(0, 0, 5) +Scale(32) +MakeTilemap({ + width = 5, + surface_type = 'right', + tiles = { + 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, + 4, 5, 5, 5, 4 + } +}) + +-- Top + +ResetTransform() +Rotate('x', 90) +Translate(-5, 15, 0) +Scale(32) +MakeTilemap({ + width = 5, + surface_type = 'top', + tiles = { + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3 + } +}) + +-- Leftmost background tower block +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Front + +if detail > 1 then + ResetTransform() + Scale(32) + MakeTilemap({ + width = 7, + tiles = { + 2, 2, 2, 2, 2, 2, 2, + 0, 1, 0, 0, 0, 1, 0, + 0, 1, 0, 0, 0, 1, 0, + 0, 1, 0, 0, 6, 1, 0, + 0, 1, 0, 0, 0, 1, 0, + 0, 1, 0, 0, 0, 1, 0, + 0, 1, 0, 0, 0, 1, 0, + 4, 4, 5, 5, 5, 4, 4 + } + }) + + -- Right side + + ResetTransform() + Rotate('y', 90) + Translate(7, 0, 0) + Scale(32) + MakeTilemap({ + width = 6, + tiles = { + 2, 2, 2, 2, 2, 2, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 4, 4, 4, 4, 4, 4 + } + }) + + -- Top + + ResetTransform() + Rotate('x', 90) + Translate(-2, 8, -6) + Scale(32) + MakeTilemap({ + width = 9, + tiles = { + 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3 + } + }) +end + +-- Foreground building with pitched roof +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Left wall + +ResetTransform() +Rotate('y', -90) +Translate(10, 0, 1) +Scale(32) +SetTexture("Building") +MakeTilemap({ + width = 4, + surface_type = 'left', + tiles = { + -1, 9, 11, -1, + 9, 10, 12, 11, + 15, 7, 7, 16, + 3, 5, 6, 4, + 3, 6, 5, 4 + } +}) + +-- Right wall + +ResetTransform() +Rotate('y', -90) +Translate(13, 0, 1) +Scale(32) +MakeTilemap({ + width = 4, + surface_type = 'right', + tiles = { + -1, 9, 11, -1, + 9, 10, 12, 11, + 15, 7, 7, 16, + 3, 5, 6, 4, + 3, 8, 5, 4 + } +}) + +-- Front wall + +ResetTransform() +Translate(10, 0, 5) +Scale(32) +MakeTilemap({ + width = 3, + tiles = { + 15, 7, 16, + 3, 5, 4, + 3, 6, 4 + } +}) + +-- Pitched roof + +ResetTransform() +Rotate('x', 135) +Scale(1, 1.5, 1.5) +Translate(10, 5, 3) +Scale(32) +MakeTilemap({ + width = 3, + tiles = { + 13, 13, 13, + 13, 13, 13 + } +}) + +-- Finial + +ResetTransform() +Translate(10, 5, 3) +Scale(32) +MakeTilemap({ + width = 3, + tiles = { + 18, 18, 18 + } +}) + +-- Cheaty invisible platform + +ResetTransform() +Translate(10, 4, 3) +Scale(32) +MakeTilemap({ + width = 3, + surface_type = 'top', + tiles = { + -1, -1, -1 + } +}) + +-- The ground +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Courtyard + +ResetTransform() +Rotate('x', 90) +Translate(-3, 0, 0) +Scale(32) +SetTexture("Scenery") +MakeTilemap({ + width = 13, + surface_type = 'top', + tiles = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, + -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, + -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, + -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, + -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + } +}) + +-- Front grass + +if detail > 2 then + ResetTransform() + Scale(8, 1, 1) + Translate(1, -0.5, 5) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 8 + }) + + -- Back grass + + ResetTransform() + Scale(8, 1, 1) + Translate(1, -0.5, 1) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 8 + }) + + -- Left grass + + ResetTransform() + Scale(4, 1, 1) + Rotate('y', -90) + Translate(1, -0.5, 1) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 4 + }) + + -- Right grass + + ResetTransform() + Scale(4, 1, 1) + Rotate('y', -90) + Translate(9, -0.5, 1) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 4 + }) + + -- Fence behind house + + ResetTransform() + Scale(11, 1, 1) + Translate(7, 0, 0) + Scale(32) + MakeBillboard({ + tile = 4, + u_scale = 11 + }) +end + +-- Background building with pitched roof +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Front wall + +if detail > 1 then + ResetTransform() + Translate(19, 0, 0) + Scale(32) + SetTexture("Building") + MakeTilemap({ + width = 4, + tiles = { + -1, 9, 11, -1, + 9, 10, 12, 11, + 15, 7, 7, 16, + 3, 6, 5, 4, + 3, 5, 6, 4, + 3, 8, 5, 4 + } + }) + + -- Left wall + + ResetTransform() + Rotate('y', -90) + Translate(19, 0, -3) + Scale(32) + MakeTilemap({ + width = 3, + tiles = { + 15, 1, 16, + 3, 7, 4, + 3, 5, 4, + 3, 0, 4 + } + }) + + -- Right wall + + ResetTransform() + Rotate('y', -90) + Translate(23, 0, -3) + Scale(32) + MakeTilemap({ + width = 3, + tiles = { + 15, 0, 16, + 3, 7, 4, + 3, 6, 4, + 3, 2, 4 + } + }) + + -- Left pitched roof + + ResetTransform() + Rotate('x', 135) + Scale(1, 1.5, 1.5) + Rotate('y', -90) + Translate(21, 6, -3) + Scale(32) + MakeTilemap({ + width = 3, + tiles = { + 13, 13, 13, + 13, 13, 13 + } + }) + + -- Right pitched roof + + ResetTransform() + Rotate('x', -135) + Scale(1, 1.5, 1.5) + Rotate('y', -90) + Translate(21, 6, -3) + Scale(32) + MakeTilemap({ + width = 3, + tiles = { + 13, 13, 13, + 13, 13, 13 + } + }) + + -- Finial + + ResetTransform() + Rotate('y', -90) + Translate(21, 6, -3) + Scale(32) + MakeTilemap({ + width = 3, + tiles = { + 18, 18, 18 + } + }) +end + +-- More ground to the right +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Ground under house + +ResetTransform() +Rotate('x', 90) +Translate(10, 0, 0) +Scale(32) +SetTexture("Scenery") +MakeTilemap({ + width = 3, + surface_type = 'top', + tiles = { + 1, 1, 1, + 1, 1, 1, + -1, -1, -1, + -1, -1, -1, + -1, -1, -1, + -1, -1, -1, + 1, 1, 1 + } +}) + +-- Left part of center courtyard + +ResetTransform() +Rotate('x', 90) +Translate(13, 0, 0) +Scale(32) +MakeTilemap({ + width = 8, + surface_type = 'top', + tiles = { + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, 0, 0 + } +}) + +-- Front grass + +if detail > 2 then + ResetTransform() + Scale(12, 1, 1) + Translate(14, -0.5, 5) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 12 + }) + + -- Back grass + + ResetTransform() + Scale(4, 1, 1) + Translate(14, -0.5, 1) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 4 + }) + + -- Front grass next to door + + ResetTransform() + Translate(13, -0.5, 3) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 1 + }) + + -- Back grass next to door + + ResetTransform() + Translate(13, -0.5, 2) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 1 + }) + + -- Left grass + + ResetTransform() + Rotate('y', -90) + Translate(14, -0.5, 1) + Scale(32) + MakeTilemap({ + width = 4, + tiles = { + 2, -1, 2, 2 + } + }) + + -- Grass left of house + + ResetTransform() + Rotate('y', -90) + Translate(18, -0.5, 0) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 1 + }) + + -- Grass right of house + + ResetTransform() + Rotate('y', -90) + Translate(24, -0.5, 0) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 1 + }) + + -- Front grass in center + + ResetTransform() + Scale(4, 1, 1) + Translate(19, -0.5, 4) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 4 + }) + + -- Back grass in center + + ResetTransform() + Scale(4, 1, 1) + Translate(19, -0.5, 2) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 4 + }) + + -- Left grass in center + + ResetTransform() + Scale(2, 1, 1) + Rotate('y', -90) + Translate(19, -0.5, 2) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 2 + }) + + -- Right grass in center + + ResetTransform() + Scale(2, 1, 1) + Rotate('y', -90) + Translate(23, -0.5, 2) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 2 + }) +end + +-- Right part of center courtyard + +ResetTransform() +Rotate('x', 90) +Translate(21, 0, 0) +Scale(32) +MakeTilemap({ + width = 7, + surface_type = 'top', + tiles = { + 1, 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1 + } +}) + +-- Fence to right of back house + +if detail > 2 then + ResetTransform() + Scale(4, 1, 1) + Translate(24, 0, 0) + Scale(32) + MakeBillboard({ + tile = 4, + u_scale = 4 + }) + + -- Grass in front of fence + + ResetTransform() + Scale(4, 1, 1) + Translate(24, -0.5, 1) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 4 + }) + + -- Grass to left of tower block + + ResetTransform() + Scale(2, 1, 1) + Rotate('y', -90) + Translate(26, -0.5, 5) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 2 + }) + + -- Grass to right of tower block + + ResetTransform() + Scale(2, 1, 1) + Rotate('y', -90) + Translate(35, -0.5, 5) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 2 + }) + + -- Next bit of grass + + ResetTransform() + Scale(5, 1, 1) + Translate(35, -0.5, 5) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 5 + }) + + -- Back grass + + ResetTransform() + Scale(6, 1, 1) + Translate(34, -0.5, 1) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 6 + }) + + -- Extra bit of back grass + + ResetTransform() + Rotate('y', -90) + Translate(34, -0.5, 0) + Scale(32) + MakeBillboard({ + tile = 2, + u_scale = 1 + }) +end + +-- Ground around tower block + +ResetTransform() +Rotate('x', 90) +Translate(28, 0, 4) +Scale(32) +MakeTilemap({ + width = 5, + surface_type = 'top', + tiles = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 + } +}) + +-- Rightmost ground + +ResetTransform() +Rotate('x', 90) +Translate(33, 0, 0) +Scale(32) +MakeTilemap({ + width = 10, + surface_type = 'top', + tiles = { + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, + 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, + 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, + 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, + 0, 1, 1, 1, 1, 1, 1, -1, -1, -1 + } +}) + +-- Right foreground tower block +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Front + +ResetTransform() +Translate(28, 0, 4) +Scale(32) +SetTexture("TowerBlock1") +MakeTilemap({ + width = 5, + tiles = { + 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, + 4, 4, 4, 4, 4 + } +}) + +-- Right side + +ResetTransform() +Rotate('y', 90) +Translate(33, 0, 4) +Scale(32) +MakeTilemap({ + width = 6, + surface_type = 'right', + tiles = { + 2, 2, 2, 2, 2, 2, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 5, 4, 5, 5, 4, 5 + } +}) + +-- Left side + +ResetTransform() +Rotate('y', 90) +Translate(28, 0, 4) +Scale(32) +MakeTilemap({ + width = 6, + surface_type = 'left', + tiles = { + 2, 2, 2, 2, 2, 2, + 0, 1, 6, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 5, 4, 5, 5, 4, 5 + } +}) + +-- Top + +ResetTransform() +Rotate('x', 90) +Translate(28, 7, -2) +Scale(32) +MakeTilemap({ + width = 5, + surface_type = 'top', + tiles = { + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3 + } +}) + +-- Right end tower block +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- Front + +ResetTransform() +Translate(40, 0, 5) +Scale(32) +MakeTilemap({ + width = 5, + tiles = { + 2, 2, 2, 2, 2, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 6, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 6, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 0, 1, 0, 0, 1, + 4, 4, 4, 4, 4 + } +}) + +-- Left side + +ResetTransform() +Rotate('y', 90) +Translate(40, 0, 5) +Scale(32) +MakeTilemap({ + width = 5, + surface_type = 'left', + tiles = { + 2, 2, 2, 2, 2, + 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 4, 5, 5, 5, 4 + } +}) + +-- Top + +ResetTransform() +Rotate('x', 90) +Translate(40, 15, 0) +Scale(32) +MakeTilemap({ + width = 5, + surface_type = 'top', + tiles = { + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3 + } +}) + +-- Background +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +ResetTransform() +Translate(-0.3, -0.17, -900) +Scale(3200, 1600, 1) +SetTexture("BackgroundFar") +MakeBillboard() + +Translate(0, 0, 300) +SetTexture("BackgroundNear") +MakeBillboard({ + blend = detail > 1 and true or false +}) + +-- Trees +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +SetTexture("Trees") + +-- Left courtyard + +if detail > 1 then + ResetTransform() + Scale(96) + Translate(250, -2.5, 16) + MakeBillboard({ + tile = 1 + }) +end + +-- Center courtyard + +ResetTransform() +Scale(96) +Translate(610, -2.5, 85) +MakeBillboard({ + tile = 0 +}) + +ResetTransform() +Scale(96) +Translate(650, -2.5, 115) +MakeBillboard({ + tile = 1 +}) + +-- Right courtyard + +if detail > 1 then + ResetTransform() + Scale(96) + Translate(1080, -2.5, 10) + MakeBillboard({ + tile = 1 + }) + + ResetTransform() + Scale(96) + Translate(1120, -2.5, -15) + MakeBillboard({ + tile = 0 + }) + + ResetTransform() + Scale(96) + Translate(1220, -2.5, -30) + MakeBillboard({ + tile = 1 + }) +end +