Как получить значения из объектов внутри объекта

Итак, с помощью сценария я столкнулся с проблемой, которую нигде не видел, и ничего из того, что я пробовал, еще не устранило ее, вот краткое изложение того, что я пытаюсь сделать:

Я программирую менеджера для системы сражений в создаваемой мной игре, он создает объект с определенными свойствами и информацией, необходимой ему для того, чтобы можно было проверить, действует ли состояние по-прежнему. это структура объекта и функция, которая создает объекты:

function state(sId, mId, trns, trn){ 
    this.stateId = sId
    this.memberId = mId
    this.turns = trns
    this.turn = trn
}

function makeState(n, sId, mId, trns, trn) {
    var states = {}
    for (var i = 0; i < n; ++i) {
        states[i] = new state(sId, mId, trns, trn)
    }
    return states
}

Эта функция вызывается в игровом движке всякий раз, когда к одному из участников битвы добавляется состояние ($gameVariables.value(197) возвращает что-то вроде 1*1*1*1*1, $gameVariables.value(196) возвращает число выше 0):

    $.updateStates = function() {
    if ($gameVariables.value(197) != 0){
        var listCreated = false;
        var unformatedData = $gameVariables.value(197);
        var stateData = unformatedData.split("*");
        console.log(stateData);
    }

    if (listCreated == false){
        if ($gameVariables.value(197) != 0){
            var statesobj = makeState(stateData[0], stateData[1], stateData[2], stateData[3], stateData[4]);
            $gameVariables.setValue(197, 0);
            listCreated = true;
            console.log(statesobj);
        }
    } else {
        if ($gameVariables.value(197) != 0){
            statesobj.push(makeState(stateData[0], stateData[1], stateData[2], stateData[3], stateData[4]));
            $gameVariables.setValue(197, 0);
        }

        for (Object.entries(statesobj)) { //check/remove expired states
            console.log(p);
            if ((p.turns + p.turn) <= $gameVariables.value(196)){
                $gameParty.members()[p.memberId - 1].removeState(p.stateId);
                statesobj.splice(p, 1);
            }
        }
    }
};

(обратите внимание, что "проверка / удаление просроченных состояний" полностью испорчена, я пробовал несколько вещей, и это не сработало для справки, в этой части кода P будет текущий объект в основном объекте, который for (...) часть того, что смотрит в настоящее время.)

Проблема в том, что "проверить / удалить устаревшие состояния" вообще не работает, и я не смог выяснить, как заставить его работать, часть об удалении состояний работает, просто код не будет пройти каждый объект в объекте statesobj и получить необходимые значения от каждого объекта состояния в этом объекте, кто-нибудь из вас знает, как я это сделаю? (Движок - rpg Maker Mv, но он использует JavaScript.)

0 ответов

Другие вопросы по тегам