Как перебрать результаты в наборах? - PullRequest
0 голосов
/ 08 апреля 2020

В моем моде Tabletop Simulator у меня есть сумка, когда что-то в сумку опускается, вызывается функция emptyContents(). Например, я могу бросить 15 кубиков в сумку.

В функции emptyContents() я перебираю объекты в сумке. Но, как вы можете видеть, я должен вставить несколько операторов if, чтобы поймать количество вставленных кубиков, потому что я хочу, чтобы кости появлялись в разных позициях.

Переменная содержимого - это количество кубиков в сумке. .

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
      if i <= 6 then
        self.takeObject(setPosition(5, -3))
      elseif i <= 12 then
        self.takeObject(setPosition(12.4,-5))
      elseif i <= 18 then
        self.takeObject(setPosition(19.8,-7))
      end
    end
end

Как сделать функцию менее статичной c? Потому что теперь мне нужно написать операторы if для каждого набора из 6 кубиков.

1 Ответ

1 голос
/ 08 апреля 2020

возможно, вы можете добавить конфигурацию, подобную этой:

local t = {
    {6, 5, -3},
    {12, 12.4, -5},
    {18, 19.8, -7},
}

function emptyContents()
    contents = self.getObjects()

    for i, _ in ipairs(self.getObjects()) do
        for _, v in ipairs(t) do
            local l, p1, p2 = unpack(v)
            if i <= l then
                self.takeObject(setPosition(p1, p2))
                break
            end
        end
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...