-------------------------------------------------------------------------------- -- 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