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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
-- Pipe Elbow ****************************************************************************
pipe_elbow = util.table.deepcopy(data.raw["storage-tank"]["storage-tank"])
pipe_elbow.name = "pipe-elbow"
pipe_elbow.icon = "__Flow Control__/graphics/icon/pipe-elbow.png"
pipe_elbow.minable = data.raw["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"].minable
pipe_elbow.corpse = "small-remnants"
pipe_elbow.max_health = data.raw["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"].max_health
pipe_elbow.resistances = data.raw["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"].resistances
pipe_elbow.fast_replaceable_group = data.raw["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"].fast_replaceable_group
pipe_elbow.collision_box = data.raw["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"].collision_box
pipe_elbow.selection_box = data.raw["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"].selection_box

Пип Еблов.
Factorio mod Flow Control_3.0.3
--Завышеное ЧСВ или самолюбование?

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

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

  • >["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]["pipe"]
    Целый трубопровод.
    Ответить
  • ты питух и пиздабол. я скачал мод. нету там такого. лови защекоин:
    -- Pipe Elbow ****************************************************************************
    pipe_elbow = util.table.deepcopy(data.raw["storage-tank"]["storage-tank"])
    pipe_elbow.name = "pipe-elbow"
    pipe_elbow.icon = "__Flow Control__/graphics/icon/pipe-elbow.png"
    pipe_elbow.minable = data.raw["pipe"]["pipe"].minable
    pipe_elbow.corpse = "small-remnants"
    pipe_elbow.max_health = data.raw["pipe"]["pipe"].max_health
    pipe_elbow.resistances = data.raw["pipe"]["pipe"].resistances
    pipe_elbow.fast_replaceable_group = data.raw["pipe"]["pipe"].fast_replaceable_group
    pipe_elbow.collision_box = data.raw["pipe"]["pipe"].collision_box
    pipe_elbow.selection_box = data.raw["pipe"]["pipe"].selection_box
    Ответить
    • Да я питух и пиздабол. Но это не исключает факта одного.
      Чому синтаксис так скачет data.raw["pipe"]["pipe"].fast_replaceable_group
      Почему не data["raw"]["pipe"]["pipe"]["fast_replaceable_group"]?
      Почему не data.raw.pipe.pipe.fast_replaceable_grou p?
      Причем если глянуть то во всех модах которые я глянул такая хуита.
      Это как писать _G["_G"]._G["_G"]._G._G["_G"]._G["_G"]._G._G["_G"]["_G"]["_G"]._G["_G"]._G._G["_G"]._G._G["_G"]._G["_G"]._G["_G"]._G
      Удобно и привлекательно а главное читаемо.
      Ответить
      • >> Чому синтаксис так скачет data.raw["pipe"]["pipe"].fast_replaceable_group
        все дело в том, как описана таблица data.raw: https://wiki.factorio.com/Data.raw#pipe
        в ней есть некоторые ключи, которые нельзя в коде отобразить. например produce-achievement, луа будет интерпретировать data.raw.produce-achievement как вычитание
        data.raw.produce - achievement
        . потому вcе, что добывается из data.raw по конвеншну тянется через индексатор [].
        а
        fast_replaceable_group
        это уже конкретное проперти з класса entity: https://wiki.factorio.com/Prototype/Entity. потому и юзается как проперти.
        Ответить
        • а зачем дефис? почему не подчеркивание? было бы удобнее
          Ответить
        • Если разрабтчку так хотелось через дефис делать, то сделал бы для этого метатаблицу, чтоб produce-achievement отрабатывало нормально.
          Да жействительно странное решение делать наименование через дефисы
          Ответить
          • Замечу что в "Forth" в словах можно использовать любые непробельные символы.
            Ответить
              • P.S. Угадайте (не подглядывая в документацию), что в "PHP" делает конструкция $$x.
                Ответить
              • В "gforth" есть нестандартное слово "header," для создания определения из строки:
                s" ☑data.raw.produce –— achievement\r\n" header, 
                (:noname) s" Привет" ;
                
                :noname  c" ☑data.raw.produce –— achievement\r\n" find drop execute type ; execute cr cr
                Можно определить специальный синтаксис для всего этого:
                : :"  [char] " parse header, (:noname) ;
                : find"  [char] " parse dup here c! here char+ swap cmove here find ;
                : get"  find" 0= abort" error" execute ;
                
                :" My favourite programming language"  s" Forth" ;
                
                get" My favourite programming language" type
                https://ideone.com/pj88aZ
                Ответить

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

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

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


    8