-- ----------------------------------------------------------------- -- Init -- ----------------------------------------------------------------- local function prog_init() initModels() sound_playMusic("music/rybky13.ogg") local pokus = getRestartCount() local roompole = createArray(2) WAS_SMALL = 1 WAS_BIG = 2 -- ------------------------------------------------------------- local function prog_init_room() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false switch(pokus){ [1] = function() room.uvod = 2 end, [2] = function() room.uvod = 1 end, default = function() room.uvod = 3 + random(2) end, } if roompole[1] == 0 then room.omotoru = random(50) + 30 else room.omotoru = random(200) + 50 * pokus end room.oklici = 0 room.vypnula = -1 room.zapnula = -1 room.jeli = 0 local who = WAS_SMALL local radius = 0 return function() if small.dir ~= dir_no then who = WAS_SMALL elseif big.dir ~= dir_no then who = WAS_BIG end if klicek.X + 2 == motorek.X and klicek.Y - 2 == motorek.Y then room.vypnula = 0 if room.zapnula == 0 then game_killPlan() room.zapnula = who end roompole[1] = 1 if not klicek:isTalking() then klicek:talk("mot-x-motor", VOLUME_FULL, -1) end if math.mod(game_getCycles(), 3) == 0 then if radius < 30 then radius = radius + 2 end roompole[0] = roompole[0] + 1 pom1 = roompole[0] local left = radius * math.sin(pom1 / 20 * math.pi) local top = radius * math.cos(pom1 / 20 * math.pi) game_setScreenShift(left, top) end else room.zapnula = 0 if room.vypnula == 0 then room.vypnula = who game_killPlan() end if klicek:isTalking() then klicek:killSound() end radius = 0 game_setScreenShift(0, 0) end if no_dialog() and isReady(small) and isReady(big) then if room.omotoru > 0 then room.omotoru = room.omotoru - 1 end if room.omotoru >= 0 and (small.vylezla == 1 or big.vylezla == 1) then room.omotoru = -1 end if room.uvod > 0 then adddel(random(50) + 10) switch(room.uvod){ [1] = function() addm(0, "mot-m-info") addv(random(10), "mot-v-konvencni") end, [2] = function() addm(0, "mot-m-tak") addv(random(10), "mot-v-zavery") end, [3] = function() switch(random(2)){ [0] = function() addm(0, "mot-m-info") end, [1] = function() addm(0, "mot-m-tak") end, } switch(random(2)){ [0] = function() addv(random(10), "mot-v-konvencni") end, [1] = function() addv(random(10), "mot-v-zavery") end, } end, } room.uvod = 0 elseif room.omotoru == 0 then room.omotoru = -1 switch(roompole[1]){ [0] = function() addm(30, "mot-m-akce"..random(3)) addv(random(10), "mot-v-funkce"..random(3)) end, [1] = function() addv(30, "mot-v-znovu"..random(2)) end, } end if room.oklici == 0 and small.dir ~= dir_no and klicisko.dir ~= dir_no and random(100) < 7 then room.oklici = 1 if random(100) < 35 then addv(5, "mot-v-klic") addm(7, "mot-m-ublizit") end elseif room.zapnula > 0 then if room.jeli == 0 then pom1 = 1 else pom1 = random(4) end room.jeli = 1 if pom1 == 1 or pom1 == 2 then switch(room.zapnula){ [WAS_SMALL] = function() addv(random(20) + 10, "mot-v-zvuky"..random(2)) if pom1 == 1 then addm(random(10) + 10, "mot-m-nemuzu"..random(2)) end end, [WAS_BIG] = function() addm(random(20) + 10, "mot-m-zvuky"..random(2)) addv(random(10) + 10, "mot-v-nemuzu"..random(2)) end, } elseif pom1 == 3 then addm(random(30) + 20, "mot-m-mayday") end room.zapnula = -1 elseif room.vypnula > 0 then if room.jeli == 1 or random(100) < 60 then switch(room.vypnula){ [WAS_SMALL] = function() addv(random(10) + 5, "mot-v-konecne"..random(2)) end, [WAS_BIG] = function() addm(random(10) + 5, "mot-m-konecne"..random(2)) end, } end if room.jeli == 1 then room.jeli = 2 end room.vypnula = -1 end end end end -- ------------------------------------------------------------- local function prog_init_klicek() return function() if klicek:isTalking() then if klicek.afaze == 2 then klicek.afaze = 0 else klicek.afaze = klicek.afaze + 1 end elseif klicek.afaze == 1 then klicek.afaze = 2 end klicek:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_small() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false small.vylezla = 0 return function() if small.X == 35 then small.vylezla = 1 end end end -- ------------------------------------------------------------- local function prog_init_big() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false big.vylezla = 0 return function() if big.X == 8 then big.vylezla = 1 end end end -- -------------------- local update_table = {} local subinit subinit = prog_init_room() if subinit then table.insert(update_table, subinit) end subinit = prog_init_klicek() if subinit then table.insert(update_table, subinit) end subinit = prog_init_small() if subinit then table.insert(update_table, subinit) end subinit = prog_init_big() if subinit then table.insert(update_table, subinit) end return update_table end local update_table = prog_init() -- ----------------------------------------------------------------- -- Update -- ----------------------------------------------------------------- function prog_update() for key, subupdate in pairs(update_table) do subupdate() end end