Перейти к контенту

Уроки по модостроению


Zeka1996Korneev

Рекомендуемые сообщения

(изменено)

@Clayman, Функции я бы написал малость по другому. В таком плане :

local lvtab = setmetatable({}, {__index = function (t,k) t[k] = {} return t[k] end})function GetLevelsVertexes(level)    local i = 0    local graph = game_graph()    local sim = alife()    while graph:valid_vertex_id(i) do        local v = graph:vertex(i)        local data = lvtab[sim:level_name(v:level_id())]        data[#data+1] = v:level_vertex_id()        i = i+1    end    return lvtab[level]end

Это раза в 3 быстрее (простое кеширование глобальных функций и методов).

Да и setmetatable позволяет, элегантнее что-ли, автоматизировать заполнение lvtab.

 

 

 

@Clayman, сорри. Я не правильно понял задачу. Прочитал ещё раз внимательнее.

Ведь нужно при каждом вызове функции обновлять данные для определенной локации?

Тогда никаких внешних таблиц не нужно. Все проще, и ещё малость быстрее.

function GetLevelsVertexes(level)    local t = {}    local i = 0    local graph = game_graph()    local sim = alife()    while graph:valid_vertex_id(i) do        local v = graph:vertex(i)        local ln = sim:level_name(v:level_id())        if ln == level then            t[#t+1] = v:level_vertex_id()        end        i = i+1    end    return tend

 

 

Изменено пользователем BFG
  • Нравится 2
  • Полезно 2

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...