--CampaignMenu.lua local P = createMenuSheet("CampaignMenu") function P:onShow() P:updateButtons() end function P.updateButtons() P.updateButton(0, P.window:getChild("Mission1Button")) P.updateButton(0, P.window:getChild("Mission1Text")) P.updateButton(1, P.window:getChild("Mission2Button")) P.updateButton(1, P.window:getChild("Mission2Text")) P.updateButton(2, P.window:getChild("Mission3Button")) P.updateButton(2, P.window:getChild("Mission3Text")) P.updateButton(3, P.window:getChild("Mission4Button")) P.updateButton(3, P.window:getChild("Mission4Text")) P.updateButton(4, P.window:getChild("Mission5Button")) P.updateButton(4, P.window:getChild("Mission5Text")) P.updateButton(5, P.window:getChild("Mission6Button")) P.updateButton(5, P.window:getChild("Mission6Text")) P.updateButton(6, P.window:getChild("Mission7Button")) P.updateButton(6, P.window:getChild("Mission7Text")) P.updateButton(7, P.window:getChild("Mission8Button")) P.updateButton(7, P.window:getChild("Mission8Text")) P.updateButton(8, P.window:getChild("Mission9Button")) P.updateButton(8, P.window:getChild("Mission9Text")) if (P.getIndexOfLastFinishedMission() == orxonox.LevelManager:getInstance():getNumberOfCampaignMissions() - 1) then local label = P.window:getChild("CampaignMenuCongratulation") label:setProperty("Visible","True") end end --Updated Buttons der levels function P.updateButton(index, button) --Wenn genuegend Levels vorhanden sind, wird der Butten angezeigt if (P.shouldDisplayButton(index)) then button:setProperty("Visible", "True") --wenn genuegend levels bestanden sind, wird er benutzbar if (P.shouldEnableButton(index)) then button:setProperty("Disabled", "False") end end end function P.Test(e) orxonox.execute("startMainMenu") end function P.shouldDisplayButton(index) local size = orxonox.LevelManager:getInstance():getNumberOfCampaignMissions() return index < size end function P.shouldEnableButton(index) return index <= P.getIndexOfLastFinishedMission() + 1 end function P.getIndexOfLastFinishedMission() local lastMission = orxonox.LevelManager:getInstance():getLastFinishedCampaignMission() if (lastMission and lastMission ~= "") then local size = orxonox.LevelManager:getInstance():getNumberOfCampaignMissions() local index = 0 while index < size do local mission = orxonox.LevelManager:getInstance():getCampaignMission(index) if (mission == lastMission) then return index end index = index + 1 end end return -1 end function P.Mission1Button_clicked(e) P.loadLevel(P.FindLevel(0)) end function P.KeyPressed(e) P.loadLevel(P.FindLevel(0)) end function P.Mission2Button_clicked(e) P.loadLevel(P.FindLevel(1)) end function P.Mission3Button_clicked(e) P.loadLevel(P.FindLevel(2)) end function P.Mission4Button_clicked(e) P.loadLevel(P.FindLevel(3)) end function P.Mission5Button_clicked(e) P.loadLevel(P.FindLevel(4)) end function P.Mission6Button_clicked(e) P.loadLevel(P.FindLevel(5)) end function P.Mission7Button_clicked(e) P.loadLevel(P.FindLevel(6)) end function P.Mission8Button_clicked(e) P.loadLevel(P.FindLevel(7)) end function P.Mission9Button_clicked(e) P.loadLevel(P.FindLevel(8)) end function P.loadLevel(level) orxonox.execute("changeGame " .. level:getXMLFilename()) hideAllMenuSheets() end function P.loadMap() orxonox.execute("changeGame dynamicMatch.oxw") hideAllMenuSheets() end function P.FindLevel(index) local filename = orxonox.LevelManager:getInstance():getCampaignMission(index) local level = nil local templevel = nil local size = orxonox.LevelManager:getInstance():getNumberOfLevels() local index = 0 while index < size do templevel = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index) if(templevel:getXMLFilename()==filename) then level = templevel end index=index+1 end return level end function P.CampaignMenuBackButton_clicked(e) orxonox.execute("startMainMenu") hideMenuSheet("CampaignMenu") end return P