211 lines
No EOL
9 KiB
Text
211 lines
No EOL
9 KiB
Text
--------------------------------------------------------------------------------
|
|
-- Created: 20.03.2009 ---------------------------------------------------------
|
|
-- Description: profile tab for multiplayer menu -------------------------------
|
|
-- Author: Sergey Pryshchepa ---------------------------------------------------
|
|
-- Mail: peacemaker@gsc-game.kiev.ua -------------------------------------------
|
|
-- (c)GSC Game World 2009 ------------------------------------------------------
|
|
--------------------------------------------------------------------------------
|
|
local ini = ini_file("mp\\rewarding.ltx")
|
|
local awards_xml = CScriptXmlInit()
|
|
|
|
class "mp_profile" (CUIWindow)
|
|
function mp_profile:__init() super()
|
|
awards_xml:ParseFile("ui_mp_awards.xml")
|
|
end
|
|
|
|
function mp_profile:__finalize()
|
|
end
|
|
|
|
function mp_profile:InitControls(x, y, xml, handler)
|
|
self.handler = handler
|
|
self.xml = xml
|
|
self:SetAutoDelete(true)
|
|
xml:InitWindow("tab_profile:main", 0, self)
|
|
|
|
xml:InitStatic("tab_profile:cap_unique_nick", self)
|
|
self.edit_unique_nick = xml:InitEditBox("tab_profile:edit_unique_nick", self)
|
|
handler:Register(self.edit_unique_nick, "edit_unique_nick")
|
|
handler:AddCallback("edit_unique_nick", ui_events.EDIT_TEXT_COMMIT, self.OnEditUniqueNickChanged, self)
|
|
|
|
self.btn_avail = xml:Init3tButton("tab_profile:button_avaliability", self)
|
|
handler:Register(self.btn_avail, "btn_avail")
|
|
handler:AddCallback("btn_avail", ui_events.BUTTON_CLICKED, self.OnEditUniqueNickChanged, self)
|
|
|
|
self.combo_aval_unique_nick = xml:InitComboBox("tab_profile:combo_aval_unique_nick", self)
|
|
handler:Register(self.combo_aval_unique_nick, "combo_aval_unique_nick")
|
|
handler:AddCallback("combo_aval_unique_nick", ui_events.LIST_ITEM_SELECT, self.OnUniqueNickSelect, self)
|
|
handler:AddCallback("combo_aval_unique_nick", ui_events.WINDOW_LBUTTON_DOWN, self.OnUniqueNickSelect, self)
|
|
self.combo_aval_unique_nick:Show(false)
|
|
|
|
self.awards_window = CUIWindow()
|
|
xml:InitWindow("tab_profile:awards_list", 0, self.awards_window)
|
|
self.awards_window:SetAutoDelete(true)
|
|
self:AttachChild(self.awards_window)
|
|
|
|
xml:InitFrameLine("tab_profile:awards_list:header", self.awards_window)
|
|
xml:InitFrame("tab_profile:awards_list:frame", self.awards_window)
|
|
|
|
self.awards_list = xml:InitScrollView("tab_profile:awards_list:list", self.awards_window)
|
|
self.awards = {}
|
|
|
|
-- self.hint_wnd = xml:InitHint("tab_profile:hint_wnd", self)
|
|
|
|
self.best_results_list = CUIWindow()
|
|
xml:InitWindow("tab_profile:best_results_list", 0, self.best_results_list)
|
|
self.best_results_list:SetAutoDelete(true)
|
|
self:AttachChild(self.best_results_list)
|
|
|
|
xml:InitFrameLine("tab_profile:best_results_list:header", self.best_results_list)
|
|
xml:InitFrame("tab_profile:best_results_list:frame", self.best_results_list)
|
|
|
|
self.player_results = {}
|
|
xml:InitStatic("tab_profile:best_results_list:cap_cscore_0", self.best_results_list)
|
|
xml:InitStatic("tab_profile:best_results_list:cap_cscore_1", self.best_results_list)
|
|
xml:InitStatic("tab_profile:best_results_list:cap_cscore_2", self.best_results_list)
|
|
xml:InitStatic("tab_profile:best_results_list:cap_cscore_3", self.best_results_list)
|
|
xml:InitStatic("tab_profile:best_results_list:cap_cscore_4", self.best_results_list)
|
|
xml:InitStatic("tab_profile:best_results_list:cap_cscore_5", self.best_results_list)
|
|
xml:InitStatic("tab_profile:best_results_list:cap_cscore_6", self.best_results_list)
|
|
|
|
self.gs_change_nick_mb_cancel = CUIMessageBoxEx()
|
|
handler:Register(self.gs_change_nick_mb_cancel, "gs_change_nick_mb_cancel")
|
|
handler:AddCallback("gs_change_nick_mb_cancel", ui_events.BUTTON_CLICKED, self.OnCancelChangeUnick, self)
|
|
self.gs_change_nick_mb_cancel:InitMessageBox("message_box_gs_info")
|
|
|
|
self.gs_change_nick_mb = CUIMessageBoxEx()
|
|
handler:Register(self.gs_change_nick_mb, "gs_change_nick_mb")
|
|
self.gs_change_nick_mb:InitMessageBox("message_box_ok")
|
|
end
|
|
|
|
function mp_profile:InitBestScores()
|
|
if(self.handler.owner.profile_store) then
|
|
for i in self.handler.owner.profile_store:get_best_scores() do
|
|
printf("----------> Player best score: id = " ..tostring(i.first) .. ", value = " .. tostring(i.second))
|
|
local score_wnd = self.xml:InitTextWnd("tab_profile:best_results_list:cap_score_"..tostring(i.first), self.best_results_list)
|
|
self.xml:InitTextWnd("tab_profile:best_results_list:cap_cscore_"..tostring(i.first), self.best_results_list)
|
|
-- assert(score_wnd)
|
|
score_wnd:SetText(tostring(i.second))
|
|
end
|
|
else
|
|
abort("Profile not loaded!")
|
|
end
|
|
end
|
|
|
|
function mp_profile:FillRewardsTable()
|
|
if(self.handler.owner.profile_store) then
|
|
local pos = vector2():set(0, 0)
|
|
local field = 1
|
|
local counter = 1
|
|
for i in self.handler.owner.profile_store:get_awards() do
|
|
printf("----------> Player award: id = "..tostring(i.first)..", count = "..tostring(i.second.m_count)..", last_reward_date = "..tostring(i.second.m_last_reward_date))
|
|
local k = math.mod(counter,3)
|
|
if(k==1) then
|
|
field = field + 1
|
|
self.awards[field] = {}
|
|
self.awards[field].field = self.xml:InitStatic("tab_profile:awards_list:field", nil)
|
|
self.awards[field].field = self.xml:InitStatic("tab_profile:awards_list:field", nil)
|
|
self.awards_list:AddWindow(self.awards[field].field, true)
|
|
end
|
|
|
|
local award_name = "award_"..k
|
|
local reward_name = "reward_"..i.first
|
|
|
|
local award_xml_name = ""
|
|
if (i.second.m_count > 0) then
|
|
award_xml_name = "award_"..i.first.."_active"
|
|
-- award_xml_name = "award_0_active"
|
|
self.awards[field][award_name] = awards_xml:InitStatic(award_xml_name, self.awards[field].field)
|
|
local rewards_count = awards_xml:InitTextWnd(award_xml_name..":cap_count", self.awards[field][award_name])
|
|
rewards_count:SetText(tostring(i.second.m_count))
|
|
else
|
|
award_xml_name = "award_"..i.first.."_inactive"
|
|
-- award_xml_name = "award_0_inactive"
|
|
self.awards[field][award_name] = awards_xml:InitStatic(award_xml_name, self.awards[field].field)
|
|
end
|
|
|
|
local tmp = 0
|
|
if(utils.is_widescreen()) then
|
|
tmp = 96+16
|
|
else
|
|
tmp = 121+21
|
|
end
|
|
|
|
if(k==0) then
|
|
pos.x = (tmp)*(3-1)
|
|
else
|
|
pos.x = (tmp)*(k-1)
|
|
end
|
|
self.awards[field][award_name]:SetWndPos(pos)
|
|
counter = counter + 1
|
|
end
|
|
else
|
|
abort("Profile not loaded!")
|
|
end
|
|
end
|
|
|
|
function mp_profile:OnEditUniqueNickChanged()
|
|
self.gs_change_nick_mb_cancel:SetText("ui_mp_gamespy_suggesting_unique_name")
|
|
self.gs_change_nick_mb_cancel:ShowDialog(true)
|
|
self.handler.owner.acc_mgr:suggest_unique_nicks(self.edit_unique_nick:GetText(), suggest_nicks_cb(self, self.OnNickSuggestionComplete))
|
|
self.combo_aval_unique_nick:Show(true);
|
|
self.combo_aval_unique_nick:ClearList()
|
|
end
|
|
|
|
function mp_profile:OnCancelChangeUnick()
|
|
self.handler.owner.acc_mgr:stop_suggest_unique_nicks()
|
|
self.gs_change_nick_mb_cancel:HideDialog()
|
|
self.edit_unique_nick:SetText(self.handler.owner.gs_profile:unique_nick())
|
|
end
|
|
|
|
function mp_profile:OnNickSuggestionComplete(tmp, descr)
|
|
self.gs_change_nick_mb_cancel:HideDialog()
|
|
local new_unique_nick = self.edit_unique_nick:GetText();
|
|
local num = 1
|
|
for i in (self.handler.owner.acc_mgr:get_suggested_unicks()) do
|
|
if(i==new_unique_nick) then
|
|
self.gs_change_nick_mb:InitMessageBox("message_box_gs_changing_unick")
|
|
self.gs_change_nick_mb:SetText("ui_mp_gamespy_changing_unique_nick");
|
|
self.gs_change_nick_mb:ShowDialog(true)
|
|
self.handler.owner.l_mgr:set_unique_nick(new_unique_nick, login_operation_cb(self, self.ChangeNickOperationResult))
|
|
return
|
|
end
|
|
self.combo_aval_unique_nick:AddItem(i, num)
|
|
num = num + 1
|
|
end
|
|
|
|
self.gs_change_nick_mb:InitMessageBox("message_box_ok")
|
|
local first_name = self.combo_aval_unique_nick:GetTextOf(0)
|
|
self.combo_aval_unique_nick:SetText(first_name)
|
|
if (tmp > 0) then
|
|
self.gs_change_nick_mb:SetText("ui_mp_gamespy_verify_nickname_error1")
|
|
else
|
|
self.gs_change_nick_mb:SetText(descr)
|
|
end
|
|
self.edit_unique_nick:SetText(self.handler.owner.gs_profile:unique_nick())
|
|
self.gs_change_nick_mb:ShowDialog(true)
|
|
end
|
|
|
|
function mp_profile:OnUniqueNickSelect()
|
|
self.edit_unique_nick:SetText(self.combo_aval_unique_nick:GetText())
|
|
end
|
|
|
|
function mp_profile:ChangeNickOperationResult(profile, descr)
|
|
self.gs_change_nick_mb:HideDialog()
|
|
self.combo_aval_unique_nick:Show(false)
|
|
self.gs_change_nick_mb:InitMessageBox("message_box_ok")
|
|
if(profile==nil) then
|
|
self.gs_change_nick_mb:SetText(descr)
|
|
else
|
|
self.gs_change_nick_mb:SetText(game.translate_string("ui_st_mp_unique_nickname_change").." "..profile:unique_nick()..".")
|
|
end
|
|
self.edit_unique_nick:SetText(self.handler.owner.gs_profile:unique_nick())
|
|
self.gs_change_nick_mb:ShowDialog(true)
|
|
end
|
|
|
|
function mp_profile:UpdateControls()
|
|
end
|
|
|
|
function mp_profile:OnDraw()
|
|
super():OnDraw()
|
|
self.hint_wnd:OnDraw()
|
|
end |