312 lines
10 KiB
Lua
312 lines
10 KiB
Lua
|
-------------------------------------------------------------------------------------------------------------
|
||
|
---------------------------------- SCENARIO SCORES --------------------------------------------------
|
||
|
-------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
ScenarioScores =
|
||
|
{
|
||
|
emptyScore = "",
|
||
|
emptyAverage = "-",
|
||
|
}
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:getWindow()
|
||
|
local ui = getUI("ui:interface:r2ed_scenario_scores")
|
||
|
assert(ui)
|
||
|
return ui
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
|
||
|
function ScenarioScores:initScenarioScores()
|
||
|
|
||
|
end
|
||
|
|
||
|
function ScenarioScores:initScenarioScoresOLD()
|
||
|
|
||
|
local ui = self:getWindow()
|
||
|
|
||
|
local noRatingsGr = ui:find("no_ratings")
|
||
|
assert(noRatingsGr)
|
||
|
|
||
|
local ratingsGr = ui:find("ratings")
|
||
|
assert(ratingsGr)
|
||
|
|
||
|
local averagesGr = ui:find("average_ratings")
|
||
|
assert(averagesGr)
|
||
|
|
||
|
noRatingsGr.active= not isInRingMode()
|
||
|
if isInRingMode() then
|
||
|
|
||
|
local isDm = false
|
||
|
if r2.Mode == "DM" or r2.Mode == "AnimationModeDm" then isDm = true end
|
||
|
|
||
|
local header = r2.getScenarioHeader()
|
||
|
local seeAverages = (isDm or r2.hasCharacterSameCharacterIdMd5(tostring(header.CreatorMD5)))
|
||
|
ratingsGr.active = not seeAverages
|
||
|
averagesGr.active = seeAverages
|
||
|
else
|
||
|
ratingsGr.active = false
|
||
|
averagesGr.active = false
|
||
|
end
|
||
|
|
||
|
if isInRingMode() then
|
||
|
|
||
|
if ratingsGr.active then
|
||
|
if game.getScenarioScores then
|
||
|
game.getScenarioScores()
|
||
|
end
|
||
|
|
||
|
local rateFunUI = ratingsGr:find("fun_rate"):find("edit_rate"):find("eb")
|
||
|
rateFunUI.input_string= self.emptyScore
|
||
|
|
||
|
local rateDifficultyUI = ratingsGr:find("diff_rate"):find("edit_rate"):find("eb")
|
||
|
rateDifficultyUI.input_string= self.emptyScore
|
||
|
|
||
|
local rateAccessibilityUI = ratingsGr:find("access_rate"):find("edit_rate"):find("eb")
|
||
|
rateAccessibilityUI.input_string= self.emptyScore
|
||
|
|
||
|
local rateOriginalityUI = ratingsGr:find("originality_rate"):find("edit_rate"):find("eb")
|
||
|
rateOriginalityUI.input_string= self.emptyScore
|
||
|
|
||
|
local rateDirectionUI = ratingsGr:find("direction_rate"):find("edit_rate"):find("eb")
|
||
|
rateDirectionUI.input_string= self.emptyScore
|
||
|
|
||
|
else
|
||
|
if game.getSessionAverageScores then
|
||
|
game.getSessionAverageScores()
|
||
|
end
|
||
|
|
||
|
local rateFunUI = averagesGr:find("fun_rate"):find("score_text")
|
||
|
rateFunUI.hardtext= self.emptyAverage
|
||
|
|
||
|
local rateDifficultyUI = averagesGr:find("diff_rate"):find("score_text")
|
||
|
rateDifficultyUI.hardtext= self.emptyAverage
|
||
|
|
||
|
local rateAccessibilityUI = averagesGr:find("access_rate"):find("score_text")
|
||
|
rateAccessibilityUI.hardtext= self.emptyAverage
|
||
|
|
||
|
local rateOriginalityUI = averagesGr:find("originality_rate"):find("score_text")
|
||
|
rateOriginalityUI.hardtext= self.emptyAverage
|
||
|
|
||
|
local rateDirectionUI = averagesGr:find("direction_rate"):find("score_text")
|
||
|
rateDirectionUI.hardtext= self.emptyAverage
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- windows title
|
||
|
if ratingsGr.active then
|
||
|
ui.uc_title = i18n.get("uiR2EDMyScenarioScores")
|
||
|
else
|
||
|
ui.uc_title = i18n.get("uiR2EDScenarioScores")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:onScenarioScoresReceived(scores)
|
||
|
|
||
|
self:fill(scores)
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:onAverageScoresReceived(averages)
|
||
|
|
||
|
self:fillAverages(averages)
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:onScenarioAverageScoresReceived(averages)
|
||
|
|
||
|
self:fillScenarioAverages(averages)
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:fill(scores)
|
||
|
|
||
|
local ui = self:getWindow()
|
||
|
local ratingsGr = ui:find("ratings")
|
||
|
assert(ratingsGr)
|
||
|
|
||
|
local rateFunUI = ratingsGr:find("fun_rate"):find("edit_rate"):find("eb")
|
||
|
if scores.ScenarioRated==0 then
|
||
|
rateFunUI.input_string= tostring(self.emptyScore)
|
||
|
else
|
||
|
rateFunUI.input_string= tostring(scores.RateFun)
|
||
|
end
|
||
|
|
||
|
local rateDifficultyUI = ratingsGr:find("diff_rate"):find("edit_rate"):find("eb")
|
||
|
if scores.ScenarioRated==0 then
|
||
|
rateDifficultyUI.input_string= tostring(self.emptyScore)
|
||
|
else
|
||
|
rateDifficultyUI.input_string= tostring(scores.RateDifficulty)
|
||
|
end
|
||
|
|
||
|
local rateAccessibilityUI = ratingsGr:find("access_rate"):find("edit_rate"):find("eb")
|
||
|
if scores.ScenarioRated==0 then
|
||
|
rateAccessibilityUI.input_string= tostring(self.emptyScore)
|
||
|
else
|
||
|
rateAccessibilityUI.input_string= tostring(scores.RateAccessibility)
|
||
|
end
|
||
|
|
||
|
local rateOriginalityUI = ratingsGr:find("originality_rate"):find("edit_rate"):find("eb")
|
||
|
if scores.ScenarioRated==0 then
|
||
|
rateOriginalityUI.input_string= tostring(self.emptyScore)
|
||
|
else
|
||
|
rateOriginalityUI.input_string= tostring(scores.RateOriginality)
|
||
|
end
|
||
|
|
||
|
local rateDirectionUI = ratingsGr:find("direction_rate"):find("edit_rate"):find("eb")
|
||
|
if scores.ScenarioRated==0 then
|
||
|
rateDirectionUI.input_string= tostring(self.emptyScore)
|
||
|
else
|
||
|
rateDirectionUI.input_string= tostring(scores.RateDirection)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:fillAverages(averages)
|
||
|
|
||
|
local ui = self:getWindow()
|
||
|
local averagesGr = ui:find("average_ratings")
|
||
|
assert(averagesGr)
|
||
|
|
||
|
local rateFunUI = averagesGr:find("fun_rate"):find("score_text")
|
||
|
if averages.ScenarioRated==0 then
|
||
|
rateFunUI.hardtext= self.emptyAverage
|
||
|
else
|
||
|
rateFunUI.hardtext= tostring(math.min(100, averages.RateFun))
|
||
|
end
|
||
|
|
||
|
local rateDifficultyUI = averagesGr:find("diff_rate"):find("score_text")
|
||
|
if averages.ScenarioRated==0 then
|
||
|
rateDifficultyUI.hardtext= self.emptyAverage
|
||
|
else
|
||
|
rateDifficultyUI.hardtext= tostring(math.min(100, averages.RateDifficulty))
|
||
|
end
|
||
|
|
||
|
local rateAccessibilityUI = averagesGr:find("access_rate"):find("score_text")
|
||
|
if averages.ScenarioRated==0 then
|
||
|
rateAccessibilityUI.hardtext= self.emptyAverage
|
||
|
else
|
||
|
rateAccessibilityUI.hardtext= tostring(math.min(100, averages.RateAccessibility))
|
||
|
end
|
||
|
|
||
|
local rateOriginalityUI = averagesGr:find("originality_rate"):find("score_text")
|
||
|
if averages.ScenarioRated==0 then
|
||
|
rateOriginalityUI.hardtext= self.emptyAverage
|
||
|
else
|
||
|
rateOriginalityUI.hardtext= tostring(math.min(100, averages.RateOriginality))
|
||
|
end
|
||
|
|
||
|
local rateDirectionUI = averagesGr:find("direction_rate"):find("score_text")
|
||
|
if averages.ScenarioRated==0 then
|
||
|
rateDirectionUI.hardtext= self.emptyAverage
|
||
|
else
|
||
|
rateDirectionUI.hardtext= tostring(math.min(100, averages.RateDirection))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:fillScenarioAverages(averages)
|
||
|
|
||
|
local ui = getUI("ui:interface:ring_scenario_loading_window")--self:getWindow()
|
||
|
assert(ui)
|
||
|
|
||
|
local rateFunUI = ui:find("FunRating")
|
||
|
rateFunUI.hardtext= tostring(math.min(100, averages.RateFun))
|
||
|
|
||
|
local rateDifficultyUI = ui:find("DifficultyRating")
|
||
|
rateDifficultyUI.hardtext= tostring(math.min(100, averages.RateDifficulty))
|
||
|
|
||
|
local rateAccessibilityUI = ui:find("AccessibilityRating")
|
||
|
rateAccessibilityUI.hardtext= tostring(math.min(100, averages.RateAccessibility))
|
||
|
|
||
|
local rateOriginalityUI = ui:find("OriginalityRating")
|
||
|
rateOriginalityUI.hardtext= tostring(math.min(100, averages.RateOriginality))
|
||
|
|
||
|
local rateDirectionUI = ui:find("DirectionRating")
|
||
|
rateDirectionUI.hardtext= tostring(math.min(100, averages.RateDirection))
|
||
|
|
||
|
local rrpTotal = ui:find("RRPTotal")
|
||
|
rrpTotal.hardtext= tostring(math.min(100, averages.RRPTotal))
|
||
|
|
||
|
local rollouts = ui:find("rollouts")
|
||
|
local deltaH = 40
|
||
|
ui:invalidateCoords()
|
||
|
ui:updateCoords()
|
||
|
local newHReal = rollouts.h_real
|
||
|
-- must resize the parent
|
||
|
local newH = newHReal + deltaH
|
||
|
local yOffset = newH - ui.h
|
||
|
--propertySheet.h = newH
|
||
|
ui.y = ui.y + yOffset / 2
|
||
|
ui.pop_min_h = newH
|
||
|
ui.pop_max_h = newH
|
||
|
ui:invalidateCoords()
|
||
|
ui:updateCoords()
|
||
|
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:limitRating()
|
||
|
|
||
|
local editBox = getUICaller()
|
||
|
local rating = editBox.input_string
|
||
|
|
||
|
if rating~="" and tonumber(rating) > 100 then
|
||
|
editBox.input_string = tostring(100)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--------------------------------------------------------------------------------------------------------------
|
||
|
--
|
||
|
function ScenarioScores:updateScores()
|
||
|
|
||
|
local ui = self:getWindow()
|
||
|
|
||
|
local rateFunUI = ui:find("fun_rate"):find("edit_rate"):find("eb")
|
||
|
local rateFun = 0
|
||
|
if rateFunUI.input_string~="" and rateFunUI.input_string~=self.emptyScore then
|
||
|
rateFun = math.min(100, tonumber(rateFunUI.input_string))
|
||
|
end
|
||
|
|
||
|
local rateDifficultyUI = ui:find("diff_rate"):find("edit_rate"):find("eb")
|
||
|
local rateDifficulty = 0
|
||
|
if rateDifficultyUI.input_string~=self.emptyScore then
|
||
|
rateDifficulty = math.min(100, tonumber(rateDifficultyUI.input_string))
|
||
|
end
|
||
|
|
||
|
local rateAccessibilityUI = ui:find("access_rate"):find("edit_rate"):find("eb")
|
||
|
local rateAccessibility = 0
|
||
|
if rateAccessibilityUI.input_string~=self.emptyScore then
|
||
|
rateAccessibility = math.min(100, tonumber(rateAccessibilityUI.input_string))
|
||
|
end
|
||
|
|
||
|
local rateOriginalityUI = ui:find("originality_rate"):find("edit_rate"):find("eb")
|
||
|
local rateOriginality = 0
|
||
|
if rateOriginalityUI.input_string~=self.emptyScore then
|
||
|
rateOriginality = math.min(100, tonumber(rateOriginalityUI.input_string))
|
||
|
end
|
||
|
|
||
|
local rateDirectionUI = ui:find("direction_rate"):find("edit_rate"):find("eb")
|
||
|
local rateDirection = 0
|
||
|
if rateDirectionUI.input_string~=self.emptyScore then
|
||
|
rateDirection = math.min(100, tonumber(rateDirectionUI.input_string))
|
||
|
end
|
||
|
|
||
|
if game.updateScenarioScores then
|
||
|
game.updateScenarioScores(rateFun, rateDifficulty, rateAccessibility, rateOriginality, rateDirection)
|
||
|
end
|
||
|
|
||
|
ui.active=false
|
||
|
end
|
||
|
|