Метатабличный / Говнокод #13425 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
['run'] = function(num, skipt)
        if num > 0 and num <= table.maxn(_G.levels_code.list) then
            if tbl_save._.options.tutorial then
                if ((_G.levels_code.list[num][2] == 1 and _G.levels_code.list[num][1] == 1) or (_G.levels_code.list[num][2] == 1 and _G.levels_code.list[num][1] == 0)) and not skipt then
                    game.Mission.instance():runLevel(fld.levelTutorial, 1)
                    mawidgets._.hud.action.set_lvl(fld.levelTutorial, 1)
                    mawidgets._.tips_widget.action.set('tutorial')
                    _G.widget_type = 'tutorial';
                    mawidgets._.tutorial.texts.tutorial_text:setText("Tutorial1")
                elseif ((_G.levels_code.list[num][2] == 2 and _G.levels_code.list[num][1] == 1) or (_G.levels_code.list[num][2] == 5 and _G.levels_code.list[num][1] == 0)) and not skipt then
                    game.Mission.instance():runLevel(fld.levelTutorial, 2)
                    mawidgets._.hud.action.set_lvl(fld.levelTutorial, 2)
                    mawidgets._.tips_widget.action.set('tutorial')
                    _G.widget_type = 'tutorial';
                    mawidgets._.tutorial.texts.tutorial_text:setText("Tutorial2")
                elseif ((_G.levels_code.list[num][2] == 3 and _G.levels_code.list[num][1] == 1) or (_G.levels_code.list[num][2] == 11 and _G.levels_code.list[num][1] == 0)) and not skipt then
                    game.Mission.instance():runLevel(fld.levelTutorial, 3)
                    mawidgets._.hud.action.set_lvl(fld.levelTutorial, 3)
                    mawidgets._.tips_widget.action.set('tutorial')
                    _G.widget_type = 'tutorial';
                    mawidgets._.tutorial.texts.tutorial_text:setText("Tutorial3")
                elseif ((_G.levels_code.list[num][2] == 5 and _G.levels_code.list[num][1] == 1) or (_G.levels_code.list[num][2] == 15 and _G.levels_code.list[num][1] == 0)) and not skipt then
                    game.Mission.instance():runLevel(fld.levelTutorial, 4)
                    mawidgets._.hud.action.set_lvl(fld.levelTutorial, 4)
                    mawidgets._.tips_widget.action.set('tutorial')
                    _G.widget_type = 'tutorial';
                    mawidgets._.tutorial.texts.tutorial_text:setText("Tutorial4")
                elseif ((_G.levels_code.list[num][2] == 6 and _G.levels_code.list[num][1] == 1) or (_G.levels_code.list[num][2] == 16 and _G.levels_code.list[num][1] == 0)) and not skipt then
                    game.Mission.instance():runLevel(fld.levelTutorial, 5)
                    mawidgets._.hud.action.set_lvl(fld.levelTutorial, 5)
                    mawidgets._.tips_widget.action.set('tutorial')
                    _G.widget_type = 'tutorial';
                    mawidgets._.tutorial.texts.tutorial_text:setText("Tutorial5")
                else
                    mawidgets._.tips_widget.action.set('clear')
                    _G.widget_type = 0;
                    mawidgets._.tutorial.action.hide()
                    if _G.levels_code.list[num][1] == 2 and tbl_save._.options.tutorial_bonus then
                        mawidgets._.tutorial.texts.tutorial_text:setText("Tutorial6")
                    end
                    game.Mission.instance():runLevel(_G.levels_code.list[num][1], _G.levels_code.list[num][2])
                    mawidgets._.hud.action.set_lvl(_G.levels_code.list[num][1], _G.levels_code.list[num][2])
                end
            else
                mawidgets._.tips_widget.action.set('clear')
                tbl_save._.options.tutorial_bonus = false
                data.WriteDataInSlot(tbl_save._)
                mawidgets._.tutorial.action.hide()
                game.Mission.instance():runLevel(_G.levels_code.list[num][1], _G.levels_code.list[num][2])
                mawidgets._.hud.action.set_lvl(_G.levels_code.list[num][1], _G.levels_code.list[num][2])
            end
        else print('_G.levels_code.run -> bad level num: ', num) end
    end;

Игра - головоломка, язык этого гк - Lua, в проекте - ~ 26 000 файлов.
Нет в жизни счастья.

Запостил: krypt krypt, (Updated )

Комментарии (8) RSS

      • Объясняю. Вначале есть игра, набор механик. Потом, когда уже в принципе все готово и понятно как игра работает, где непонятно игроку, резко появляется тутор и меняется и перепиливается много раз, пока все станет ясно последнему среднестатистическому игроку. И в общем понятно что механики уникальны и на один раз. И времени и сил делать что то феншуйное нету, да и незачем.
        Ответить
  • Ну когда код такой наивный, его обычно просто механически отрефакторить. Бывает хуже, когд это в промежуточной стадии и кроме тупых повторений появляется еще наслоения "архитектуры" затрудняющие понимание и навигацию.
    Ответить
    • Нравится, не нравится.. Это не отменят того, что приведённый фрагмент - говнокод
      Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8