Прогресс вперед и назад через стол - PullRequest
0 голосов
/ 06 декабря 2018

впервые здесь, на переполнении стека, но определенно нашел здесь много полезной информации!

В настоящее время я пытаюсь выяснить, как выбрать следующий элемент или предыдущий элемент в таблице на основетекущий выбор.

Моя текущая таблица выглядит следующим образом:

maleSkins = { 7,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,
        36,37,43,44,45,46,47,48,49,51,52,57,58,59,60,61,66,67,72,73,80,82,83,
        84,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,
        112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,132,
        133,134,135,136,137,142,143,144,146,147,153,154,156,159,160,161,162,
        168,170,173,174,175,176,177,179,180,181,182,183,184,185,186,187,188,
        189,200,202,203,204,206,210,212,213,217,220,221,222,223,227,228,229,
        230,234,235,236,239,240,241,242,247,248,249,250,252,254,258,259,260,261,262 }

femaleSkins = { 9,10,11,12,13,31,38,39,40,41,53,54,55,56,69,76,77,88,89,90,91,92,
        93,129,130,131,138,139,140,141,145,148,151,152,157,190,191,192,193,195,
        196,197,198,199,201,207,211,214,215,216,218,219,224,225,226,232,233,237,238,243,244,245,246,251,256,257 }

Выбор по умолчанию «7» в таблице maleSkins, и я буду использовать таблицу femaleSkins, когда они выбирают «female»для их пола.

В настоящее время мой вызов функции выглядит следующим образом

function selSkin(button,state)
if button ~= "left" and state ~= "up" then
    return
end
if source == createChar.maleButt then
    femaleSkin = false
    maleSkin = true
elseif source == createChar.femaleButt then
    maleSkin = false
    femaleSkin = true
end
if source == createChar.nextSkin then
    if maleSkin == true then
        newModel = table.concat(maleSkins,)
    elseif femaleSkin == true then
    end
elseif source == createChar.prevSkin then
    if maleSkin == true then
    elseif femaleSkin == true then
    end
end
end

Итак, внутри «createChar.nextSkin» и «createChar.prevSkin» я пытаюсь разобратьсятаблица основана на текущем скине, но я не уверен, что делать дальше.

Я был бы рад, если бы кто-нибудь дал мне строительные блоки для этого, а остальное я сам соберу!

(Примечание: предопределенные переменные, которые я буду использовать, чтобы это произошло)

maleSkin = true
femaleSkin = true
curSkin = 7
newModel = nil

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Прежде всего, добро пожаловать в переполнение стека:)

Небольшая вещь, которую я заметил: у вас есть две переменные для хранения, если персонаж мужской или женский.Это учитывает 4 комбинации, 2 из которых не имеют смысла.С тем же успехом можно использовать только одну переменную, скажем, maleSkin, а когда она ложная, вместо нее вы используете женский скин.В качестве альтернативы, вы могли бы просто сделать skinType = 'male' и skinType = 'female' (строки интернов Lua, так что это так же быстро, как сравнение целых чисел)

сейчас, если вы не планируете иметь несколько миллионов скинов или больше, выможно просто перебрать таблицу, чтобы найти текущий скин, а затем использовать предыдущий.

function skinOffset(skin, skinList, offset)
  for i,current_skin in ipairs(skinList) do
    if current_skin == skin then
      return skinList[i + offset]
    else
  end
end

Теперь, чтобы получить следующий скин, вы можете сделать skinOffset(curSkin, maleSkins, 1), а для предыдущего skinOffset(curSkin, femaleSkins, -1).

0 голосов
/ 06 декабря 2018

Дополнительно сохраните индекс таблицы в глобальной переменной.Есть несколько способов, например skinIndex = 1, ваш код может выглядеть следующим образом:

if source == createChar.nextSkin then
  newModel = maleSkin and maleSkins[skinIndex + 1] or femaleSkins[skinIndex + 1]
elseif source == createChar.prevSkin then
  newModel = maleSkin and maleSkins[skinIndex - 1] or femaleSkins[skinIndex - 1]
end

Но вы должны остерегаться skinIndex <1 или> #maleSkins / #femaleSkins

...