home *** CD-ROM | disk | FTP | other *** search
- -- A level for Enigma
- -- Name: Ibiza!
- -- Filename: ralf02.lua
- -- Copyright: (c) Feb 2003 Ralf Westram
- -- Contact: amgine@reallysoft.de
- -- License: GPL v2.0 or above
-
- randomseed(enigma.GetTicks())
-
- floortile1 = "fl-space"
- floortile2 = "fl-metal"
- floortile3 = "fl-gradient"
- floortile4 = "fl-inverse"
-
-
- walltile = "st-rock5"
- walltile2 = "st-glass"
-
- xw = 5
- yw = 5
-
- levelw = (xw*6)+3
- levelh = (yw*6)+2
- tiles = (xw*yw+1)/2
-
- mask = "1001100101010"
- if random(1,3)==1 then mask = "0101010100101" end
- if random(1,3)==1 then mask = "0101010100110" end
- if random(1,3)==1 then mask = "0100101010101" end
-
- create_world(levelw,levelh)
-
- fill_floor("fl-water")
- draw_border(walltile)
-
- display.SetFollowMode(display.FOLLOW_SCROLLING)
-
- ftilew = 10
- ftileh = 12
- stilew = 5
- stileh = 6
- floorw = (ftilew+2)*2
- floorh = 4*ftileh
- stonew = (stilew+1)*2
- stoneh = 4*stileh
-
- function set_floor_repeated(ftile,x,y)
- local ly = y
- while (ly < levelh) do
- local lx = x
- while (lx < levelw) do
- if lx >= 0 and ly >= 0 then
- if ftile == "fl-gradient" then
- set_floor(ftile,lx,ly,{type=random(1,8)})
- else
- set_floor(ftile,lx,ly)
- end
- end
- lx = lx + floorw
- end
- ly = ly + floorh
- end
- end
- function set_stone_repeated(stile,x,y)
- local ly = y
- while (ly < (levelh-1)) do
- local lx = x
- while (lx < (levelw-1)) do
- if lx > 0 and ly > 0 then
- set_stone(stile,lx,ly)
- end
- lx = lx + stonew
- end
- ly = ly + stoneh
- end
- end
-
- function fill_floor_repeated(ftile,x1,y1,x2,y2)
- for x=x1, x2 do
- for y=y1, y2 do
- set_floor_repeated(ftile,x,y)
- end
- end
- end
- function fill_stone_repeated(stile,x1,y1,x2,y2)
- for x=x1, x2 do
- for y=y1, y2 do
- set_stone_repeated(stile,x,y)
- end
- end
- end
-
- function draw_floor_tile(ftile,x,y,xt,yt)
- set_floor_repeated(ftile,x+xt, y+yt)
- set_floor_repeated(ftile,x+(ftilew-xt-1),y+yt)
- set_floor_repeated(ftile,x+(ftilew-xt-1),y+(ftileh-yt-1))
- set_floor_repeated(ftile,x+xt, y+(ftileh-yt-1))
- end
- function draw_floor_tiles(ftile,x,y,xt1,yt1,xt2,yt2)
- for xt=xt1, xt2 do
- for yt=yt1, yt2 do
- draw_floor_tile(ftile,x,y,xt,yt)
- end
- end
- end
-
- function draw_stone_tile(stile,x,y,xt,yt)
- set_stone_repeated(stile,x+xt, y+yt)
- set_stone_repeated(stile,x+(stilew-xt-1),y+yt)
- set_stone_repeated(stile,x+(stilew-xt-1),y+(stileh-yt-1))
- set_stone_repeated(stile,x+xt, y+(stileh-yt-1))
- end
-
- count = 0
-
- function draw_oxyd_tile(x,y,xt,yt)
- draw_stone_tile("st-fakeoxyd",x,y,xt,yt)
- count = count+1
- if (strsub(mask,count,count)=="1") then
- local d = random(1,4)
- if (d == 1) then oxyd(x+xt,y+yt)
- elseif (d == 2) then oxyd(x+(stilew-xt-1),y+yt)
- elseif (d == 3) then oxyd(x+(stilew-xt-1),y+(stileh-yt-1))
- elseif (d == 4) then oxyd(x+xt, y+(stileh-yt-1))
- end
- end
- end
- function draw_oxyd_tile_repeated(x,y,xt,yt)
- local ly = y
- while (ly < (levelh-1)) do
- local lx = x
- while (lx < (levelw-1)) do
- if lx > 0 and ly > 0 then
- draw_oxyd_tile(lx,ly,xt,yt)
- end
- lx = lx + stonew
- end
- ly = ly + stoneh
- end
- end
-
- -- grobes Muster
- function draw_floor_i(ftile,x,y)
- draw_floor_tiles(ftile,x,y,0,0,1,3)
- draw_floor_tiles(ftile,x,y,2,0,3,1)
- fill_floor_repeated(ftile,x+ftilew/2-1,y,x+ftilew/2,y+ftileh-1)
- end
-
- -- feines Muster
- function draw_floor_i_fein(ftile,x,y)
- draw_floor_tile(ftile,x,y,0,0)
- draw_floor_tile(ftile,x,y,0,1)
- draw_floor_tile(ftile,x,y,1,0)
- fill_floor_repeated(ftile,x+ftilew/2,y,x+ftilew/2,y+ftileh-1)
- end
-
- function draw_stone_i(stile,x,y)
- draw_stone_tile(stile,x,y,0,0)
- draw_stone_tile(stile,x,y,0,1)
- draw_stone_tile(stile,x,y,1,0)
- draw_oxyd_tile_repeated(x,y,1,1)
- fill_stone_repeated(stile,x+2,y,x+2,y+5)
- end
-
- function draw_floor_column(ftile1,ftile2,ftile3,ftile4,x,y)
- draw_floor_i(ftile1,x, y)
- draw_floor_i(ftile2,x, y+ftileh)
- draw_floor_i(ftile3,x, y+ftileh*2)
- draw_floor_i(ftile4,x, y+ftileh*3)
- end
-
- -- starting positions of floor
- x1 = -3
- x2 = x1+(floorw/4)
- y1 = -4
- y2 = y1-(ftileh/2)
-
- draw_floor_column(floortile1,floortile2,floortile3,floortile4,x1,y1)
- draw_floor_column(floortile2,floortile3,floortile4,floortile1,x2,y2)
- draw_floor_column(floortile1,floortile2,floortile3,floortile4,x1+floorw/2,y1)
- draw_floor_column(floortile3,floortile4,floortile1,floortile2,x2+floorw/2,y2)
-
- x3 = 2
- y3 = 1
-
- draw_stone_i(walltile2,x3, y3)
- draw_stone_i(walltile2,x3, y3+stoneh/2)
- draw_stone_i(walltile2,x3+stonew/2,y3+stoneh/4)
- draw_stone_i(walltile2,x3+stonew/2,y3-stoneh/4)
-
- oxyd_shuffle()
- set_actor("ac-blackball", levelw/2+6, levelh/2+0.5, {player=0})
-
-