UserInfoView.lua 25.3 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691
local UserInfoView = dialog.uinode("ui/UserInfoLayer.csb",import(".BaseView"))

local title_list = {};

local _index = 1;
local _has_mj_show = false;
local _record_scroll_len = 0;

function UserInfoView:ctor()
    UserInfoView.super.ctor(self);
end

function UserInfoView:show(uid)
    local scene = cc.Director:getInstance():getRunningScene()
    local inst = UserInfoView:create();
    inst.uid = uid;
    scene:addChild(inst, dialog.ZORDER_APP);

    inst:setContentSize(cc.size(display.width,display.height));
    ccui.Helper:doLayout(inst); 

    inst.scrollView = inst:getChildByName("panel"):getChildByName("panel_3"):getChildByName("ScrollView");
    inst.recordScrollView = inst:getChildByName("panel"):getChildByName("panel_1"):getChildByName("ScrollView");

    inst.layer = cc.Layer:create();
    inst:addChild(inst.layer,1);
    registerScriptTouchEvent(inst.layer,handler(inst,inst.onTouchBegin),handler(inst,inst.onTouchMove),handler(inst,inst.onTouchEnd));

    UmengHelper.onEvent("user_center");

    for i=1,3 do
        inst:getChildByName("panel"):getChildByName("panel_"..i):setVisible(false);
    end
    if IS_TV == 1 then
        inst:getChildByName("panel"):getChildByName("btn_close"):setVisible(false);
    end

    _index = 1;
    title_list = {};
    _has_mj_show = false;

    LoadingManager.showDataLoading();
    EventListener.addEventListener(inst,EnumEvent.USER_INFO,handler(inst,inst.onUserInfoCallBack));
    UserModel.getUserInfo(uid);

    return inst;
end

function UserInfoView:onUserInfoCallBack(eve)
    EventListener.removeCustomEventListeners(self);
    LoadingManager.removeDataLoading();
    local user_info = eve.data;
    self:showUserInfo(user_info);
end

function UserInfoView:showUserInfo(user_info)
    local panel_1 = self:getChildByName("panel"):getChildByName("panel_1");

    self.panel_head = panel_1:getChildByName("head"):getChildByName("panel");
    self.headContainer = self.panel_head:getChildByName("head");
    local head;
    if user_info.user_show.head_url ~= "" then
        head = HeadImageSprite:create(user_info.user_show.head_url,76,76);
    else
        head = NodeManager.getHeadSprite("head_"..user_info.user_show.head..".png");
    end
    self.headContainer:addChild(head);

    self.btn_head = self.panel_head:getChildByName("btn");
    self.btn_head:loadTextureNormal("res/headframe/"..user_info.user_show.head_frame..".png");
    self.btn_head:loadTexturePressed("res/headframe/"..user_info.user_show.head_frame..".png");
    
    self.panel_nick = panel_1:getChildByName("panel_nick");
    self.btn_nick = self.panel_nick:getChildByName("btn_nick");
    self.txt_nick = self.panel_nick:getChildByName("txt_nick");

    if self.uid == UserModel.user_info.uid then
        self.panel_head.fn = handler(self,self.onChangeHead);
        self.btn_head:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type,handler(self,self.onChangeHead))end);

        self.panel_nick.fn = handler(self,self.onChangeNick);
        self.btn_nick:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type,self.panel_nick.fn)end);
        if UserModel.login_type ~= 0 then
            self.btn_nick:setVisible(false);
        end
    else
        self.btn_nick:setVisible(false);
    end
    
    panel_1:getChildByName("txt_id"):setString(user_info.user_show.uid%100000000000);
    if StringUtil.GetUTFLen(user_info.user_show.nick) > 10 then
        self.txt_nick:setString(StringUtil.getMaxLenString(user_info.user_show.nick,10).."...");
    else
        self.txt_nick:setString(user_info.user_show.nick);
    end

    local charm = user_info.charm-1000000000;
    local score = user_info.score - 1000000000;
    panel_1:getChildByName("txt_charm"):setString(charm);
    panel_1:getChildByName("txt_score"):setString(score);
    panel_1:getChildByName("txt_achievement"):setString(user_info.achievement_cnt);

    local scoreInfo = ScoreInfo.getInfoByScore(score);
    panel_1:getChildByName("txt_lv"):setString("Lv."..scoreInfo.level);
    panel_1:getChildByName("txt_title"):setString(scoreInfo.name);

    _record_scroll_len = 270;
    if user_info.mj_beishu > 0 then
        _has_mj_show = true;
        _record_scroll_len = _record_scroll_len+75;
        self.recordScrollView:setInnerContainerSize(cc.size(810,_record_scroll_len));
    end
    self:showDdzRecord(user_info);
    self:showMjRecord(user_info);
    self:showGdRecord(user_info);
    self:showNNRecord(user_info);

    self:init();
    self:updateTabState();
end

function UserInfoView:showDdzRecord(user_info)
    local winNum = user_info.ddz_win_cnt;
    local ddz_cnt = user_info.ddz_cnt;
    local rate = 0;
    if ddz_cnt ~= 0 then
        rate = math.floor(winNum*100/ddz_cnt);
    end

    local item = self.recordScrollView:getChildByName("item_ddz");
    item:getChildByName("txt_num"):setString(ddz_cnt);
    item:getChildByName("txt_rate"):setString(rate.."%");
    item:getChildByName("txt_beishu"):setString(user_info.ddz_beishu.."倍");
    item:setPositionY(_record_scroll_len - (62+10));
end

function UserInfoView:showMjRecord(user_info)
    local winNum = user_info.mj_win_cnt;
    local mj_cnt = user_info.mj_cnt;
    local rate = 0;
    if mj_cnt ~= 0 then
        rate = math.floor(winNum*100/mj_cnt);
    end

    local item = self.recordScrollView:getChildByName("item_mj");
    item:getChildByName("txt_num"):setString(mj_cnt);
    item:getChildByName("txt_rate"):setString(rate.."%");

    if user_info.mj_beishu == 0 then
        item:getChildByName("txt_fan"):setString("0番");
    else
        local mj_beishu = user_info.mj_beishu;
        local fan_shu = 0;
        while(mj_beishu > 1) do
            fan_shu = fan_shu + 1;
            mj_beishu = mj_beishu/2;
        end
        item:getChildByName("txt_fan"):setString(fan_shu.."番");
    end
    item:getChildByName("txt_beishu"):setString("("..user_info.mj_beishu.."倍)");
    item:setPositionY(_record_scroll_len - (2*(62+2)+10));

    if _has_mj_show then
        local pengList = {};
        for i,v in pairs(user_info.mj_bei_shu_show.mj_key_peng) do
            pengList[#pengList+1] = {suit=(v.suit+1),point=v.point,cnt=3};
        end
        for i,v in pairs(user_info.mj_bei_shu_show.mj_key_gang) do
            pengList[#pengList+1] = {suit=(v.suit+1),point=v.point,cnt=4};
        end

        local MahjongTool = require("core.mahjong.MahjongTool");
        local MjItem5 = require("app.views.mahjong.MjItem5");
        local mj_show = self.recordScrollView:getChildByName("mj_show");
        for i,v in ipairs(pengList) do
            local pengItem = cc.CSLoader:createNode("res/ui/mahjong/MahjongPeng_1.csb");
            pengItem:setScale(0.6);
            pengItem:setPosition(cc.p((i-1)*(205+3)*0.6,0));
            mj_show:addChild(pengItem);
            if v.cnt == 3 then
                pengItem:getChildByName("item_4"):setVisible(false);
            end
            for ii=1,v.cnt do
                local suit_name = MahjongTool.getSuitName(v.suit);
                local sp = cc.Sprite:createWithSpriteFrameName(suit_name.."_"..v.point..".png");
                pengItem:getChildByName("item_"..ii):getChildByName("img"):setSpriteFrame(sp:getSpriteFrame());
                pengItem:getChildByName("item_"..ii):getChildByName("mask"):setVisible(false);
            end
        end

        local peng_len = #pengList*(205+3)*0.6;
        if peng_len > 0 then
            peng_len = peng_len + 20;
        end
        local mjList = {};
        for i,v in ipairs(user_info.mj_bei_shu_show.mj_key) do
            mjList[#mjList+1] = {suit=v.suit+1,point=v.point};
        end
        for i,v in ipairs(mjList) do
            local card = MjItem5:create(v,0.6);
            card:getChildByName("mask"):setVisible(false);
            if i == #mjList and (#pengList*3+#mjList)==14 then
                card:setPosition(cc.p(peng_len+(i-1)*70*0.6+10,0));
            else
                card:setPosition(cc.p(peng_len+(i-1)*70*0.6,0));
            end
            mj_show:addChild(card);
        end
        mj_show:setPositionY(mj_show:getPositionY()+75);
    end
end

function UserInfoView:showGdRecord(user_info)
    local winNum = user_info.gd_win_cnt;
    local gd_cnt = user_info.gd_cnt;
    local rate = 0;
    if gd_cnt ~= 0 then
        rate = math.floor(winNum*100/gd_cnt);
    end

    local PokerTool = require("core.poker.PokerTool");
    local item = self.recordScrollView:getChildByName("item_gd");
    item:getChildByName("txt_num"):setString(gd_cnt);
    item:getChildByName("txt_rate"):setString(rate.."%");
    if user_info.gd_beishu == 0 then
        item:getChildByName("txt_beishu"):setString(PokerTool.getPokerName(2));
    else
        item:getChildByName("txt_beishu"):setString(PokerTool.getPokerName(user_info.gd_beishu));
    end
    if _has_mj_show then
        item:setPositionY(_record_scroll_len - (3*(62+2)+10+75));
    else
        item:setPositionY(_record_scroll_len - (3*(62+2)+10));
    end
end

function UserInfoView:showNNRecord(user_info)
    local winNum = user_info.nn_win_cnt;
    local nn_cnt = user_info.nn_cnt;
    local rate = 0;
    if nn_cnt ~= 0 then
        rate = math.floor(winNum*100/nn_cnt);
    end

    local item = self.recordScrollView:getChildByName("item_nn");
    item:getChildByName("txt_num"):setString(nn_cnt);
    item:getChildByName("txt_rate"):setString(rate.."%");
    item:getChildByName("txt_beishu"):setString(user_info.nn_beishu.."倍");

    if _has_mj_show then
        item:setPositionY(_record_scroll_len - (4*(62+2)+10+75));
    else
        item:setPositionY(_record_scroll_len - (4*(62+2)+10));
    end
end

function UserInfoView:init()
    if self.uid == UserModel.user_info.uid then
        EventListener.addEventListener(self,EnumEvent.UPDATE_ITEMS,handler(self,self.onUpdateItems));
        EventListener.addEventListener(self,EnumEvent.UPDATE_WIN,handler(self,self.onUpdateWin));
        EventListener.addEventListener(self,EnumEvent.UPDATE_LOST,handler(self,self.onUpdateWin));
        EventListener.addEventListener(self,EnumEvent.UPDATE_SCORE,handler(self,self.onUpdateScore));
        EventListener.addEventListener(self,EnumEvent.NICK_CHANGE_SUCCESS,handler(self,self.nickChanged));
        EventListener.addEventListener(self,EnumEvent.HEAD_CHANGE_SUCCESS,handler(self,self.headChanged));
        EventListener.addEventListener(self,EnumEvent.HEAD_FRAME_CHANGE_SUCCESS,handler(self,self.headFrameChanged));

        title_list[#title_list+1] = {title="个人信息",index=1};
        --title_list[#title_list+1] = {title="角色",index=2};
        title_list[#title_list+1] = {title="道具",index=3};
    else
        title_list[#title_list+1] = {title="个人信息",index=1};
    end

    self.btn_close = self:getChildByName("panel"):getChildByName("btn_close");
    self.btn_close.fn = handler(self,self.onClose);
    self.btn_close:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type,self.btn_close.fn)end);

    self.scrollView_title = self:getChildByName("panel"):getChildByName("ScrollView_title");
    local _y = #title_list*115;
    for i,v in ipairs(title_list) do
        local item = cc.CSLoader:createNode("ui/Activity/ActivityItem.csb");
        if _y < 480 then
            _y = 480;
        end
        item:setPosition(cc.p(10,_y + 5 - i*115));
        item:setTag(i);
        item:setName("item_"..i);
        item:getChildByName("redpoint"):setVisible(false);
        item:getChildByName("flag"):setVisible(false);
        item:getChildByName("txt"):setString(v.title);
        item:getChildByName("bg_2"):getChildByName("txt"):setString(v.title);
        self.scrollView_title:addChild(item);

        local btn = item:getChildByName("btn");
        btn:setSwallowTouches(false);
        btn:setTag(i);
        btn.fn = function()
            self:onTabClick(btn);
        end;
        btn:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, handler(self,self.onTabClick))end);
        self.nodes[#self.nodes+1] = {btn};
    end
    self.scrollView_title:setInnerContainerSize(cc.size(225,_y+10));

    self.nodesCopy = TableUtil.copyTab(self.nodes);
end

function UserInfoView:onTabClick(ref,event)
    if self.isMoved then
        return;
    end

    local tag = tonumber(ref:getTag());
    if _index ~= tag then
        self:setTab(tag);
    end
end

function UserInfoView:setTab(_tabIndex)
    _index = _tabIndex;
    self:updateTabState();
end

function UserInfoView:updateTabState()
    for i,v in ipairs(title_list) do
        local tab = self.scrollView_title:getChildByName("item_"..i);
        local panel_content = self:getChildByName("panel"):getChildByName("panel_"..v.index);
        local select = tab:getChildByName("bg_2");
        if i == _index then
            select:setVisible(true);
            panel_content:setVisible(true);
            self:updateTabShow();
        else
            select:setVisible(false);
            panel_content:setVisible(false);
        end
    end
end

function UserInfoView:onTouchBegin(event)
    self.begin_touch_pos = self.layer:getParent():convertToWorldSpace(event:getLocation());
    self.isMoved = false;
    return true;
end

function UserInfoView:onTouchMove(event)
    local move_touch_pos = self.layer:getParent():convertToWorldSpace(event:getLocation());
    local _distance = Point.distance(self.begin_touch_pos,move_touch_pos);
    if _distance > 5 then
        self.isMoved = true;
    end
end

function UserInfoView:onTouchEnd(event)
    local p = self.layer:convertToWorldSpace(event:getLocation());
end

function UserInfoView:onChangeHead()
    local scene = cc.Director:getInstance():getRunningScene();
    local reciever = require("app.views.view.UserHeadChangeView"):show();
    scene.keypadManager:addKeypadReceiver(reciever);
end

function UserInfoView:onChangeNick()
    local scene = cc.Director:getInstance():getRunningScene();
    local reciever = require("app.views.view.NickChangeView"):show();
    scene.keypadManager:addKeypadReceiver(reciever);
end

function UserInfoView:updateTabShow()
    if _index == 1 then
        self:updateUserInfoShow();
    elseif _index == #title_list then
        self:updateItems();
    end
end

function UserInfoView:updateUserInfoShow()
    local list_nodes = {};

    if UserModel.login_type == 0 and self.uid == UserModel.user_info.uid then
        list_nodes[#list_nodes+1] = {self.panel_head,self.panel_nick};
    end

    local item_ddz = self.recordScrollView:getChildByName("item_ddz");
    local item_mj = self.recordScrollView:getChildByName("item_mj");
    local item_gd = self.recordScrollView:getChildByName("item_gd");
    local item_nn = self.recordScrollView:getChildByName("item_nn");
    list_nodes[#list_nodes+1] = {item_ddz};
    list_nodes[#list_nodes+1] = {item_mj};
    list_nodes[#list_nodes+1] = {item_gd};
    list_nodes[#list_nodes+1] = {item_nn};

    self.nodes = TableUtil.merge(self.nodesCopy,list_nodes);

    self:updateSelectedState(false);
end

function UserInfoView:updateItems()
    self.scrollView:removeAllChildren();

    self.nodes = {};
    local list_nodes = {};
    local _list = ItemInfo.getItemList();
    local _y = math.floor((#_list-1)/3)*155-2+155;
    if _y < 400 then
        _y = 400;
    end
    for i=0,#_list-1 do
        local info = _list[i+1];
        if info then
            local item = cc.CSLoader:createNode("ui/PropItem.csb");
            item:setPosition(cc.p(20+i%3*255,_y - math.floor(i/3+1)*155));
            self.scrollView:addChild(item);
            item:getChildByName("txt_name"):setString(info.name);
            item:getChildByName("txt_des"):setString(info.describe);
            item:getChildByName("icon"):loadTexture("res/iconsmall/"..info.id..".png");
            local txt_num = item:getChildByName("txt_num");
            local myNum = UserModel.getItemNum(info.id);
            txt_num:setString(myNum);

            local lineNum = math.floor(i/3)+1;
            if not list_nodes[lineNum] then
                list_nodes[lineNum] = {};
            end

            local btn = item:getChildByName("btn");
            btn:setSwallowTouches(false);
            btn.info = info;
            btn.fn = function ()
                self:onBtnClick(btn);
            end;
--            btn:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, handler(self,self.onBtnClick))end);

            local btn_transparent = item:getChildByName("btn_transparent");
            btn_transparent:setSwallowTouches(false);
            btn_transparent.info = info;
            btn_transparent.fn = function ()
                self:onBtnClick(btn_transparent);
            end;
            btn_transparent:addTouchEventListener(function(ref,type) self:onButtonClick(ref,type, handler(self,self.onBtnClick))end);
            
            if myNum > 0 and (info.id == 100005 or info.id == 100006) then
                btn:loadTextureNormal("res/common/btn_bag_use_item.png");
                btn:loadTexturePressed("res/common/btn_bag_use_item.png");
                list_nodes[lineNum][#list_nodes[lineNum]+1] = btn;
            elseif HeadInfo.getHeadFrameInfo(info.id) then
                if UserModel.user_info.head_frame == info.id then
                    btn:loadTextureNormal("res/common/btn_bag_inuse_item.png");
                    btn:loadTexturePressed("res/common/btn_bag_inuse_item.png");
                    list_nodes[lineNum][#list_nodes[lineNum]+1] = btn;
                else
                    local headFrameInfo = HeadInfo.getHeadFrameInfo(info.id);
                    local myScore = UserModel.getScore();
                    local myCharm = UserModel.getCharm();
                    if myScore >= headFrameInfo.needScore and myCharm >= headFrameInfo.needCharm then
                        btn:loadTextureNormal("res/common/btn_bag_use_item.png");
                        btn:loadTexturePressed("res/common/btn_bag_use_item.png");
                        list_nodes[lineNum][#list_nodes[lineNum]+1] = btn;
                    else
                        if headFrameInfo.needScore > 0 and myScore < headFrameInfo.needScore then
                            item:getChildByName("txt_warning"):setString("称号值不足");
                        else
                            item:getChildByName("txt_warning"):setString("魅力值不足");
                        end
                        btn:setVisible(false);
                        list_nodes[lineNum][#list_nodes[lineNum]+1] = btn_transparent;
                    end
                end
            else
                if ItemInfo.isMedal(info.id) then
                    btn:loadTextureNormal("res/common/btn_bag_exchange_item.png");
                    btn:loadTexturePressed("res/common/btn_bag_exchange_item.png");
                else
                    btn:loadTextureNormal("res/common/btn_bag_buy_item.png");
                    btn:loadTexturePressed("res/common/btn_bag_buy_item.png");
                end
                list_nodes[lineNum][#list_nodes[lineNum]+1] = btn;
            end
        end
    end
    self.scrollView:setInnerContainerSize(cc.size(950,_y));

    self.nodes = TableUtil.merge(self.nodesCopy,list_nodes);
    self:updateSelectedState(false);
end

function UserInfoView:onBtnClick(ref,event)
    if self.isMoved then
        return;
    end

    local info = ref.info;
    local myNum = UserModel.getItemNum(info.id);
    if myNum > 0 and (info.id == 100005 or info.id == 100006) then
        --使用道具
        UserModel.useItem(info.id,0,GAME_ID,1);
    elseif HeadInfo.getHeadFrameInfo(info.id) then
        if UserModel.user_info.head_frame == info.id then
            EffectManager.showFntPop("使用中...");
        else
            UserModel.useHeadFrame(info.id);
        end
    else
        if ItemInfo.isMedal(info.id) then
            AppManager.show("ShopRealView");
        else
            --购买道具
            local shopItemInfo = ShopInfo.getShopInfo(info.shopID);
            local myCostNum = UserModel.getItemNum(shopItemInfo.costList[1].id);
            if myCostNum >= shopItemInfo.costList[1].num then
                AppManager.show("ShopExchangeView",{shopID=info.shopID});
            else
                local function okFun()
                    AppManager.show("ShopView",2);
                end
                Alert.showTwo(strings.msg_1003,okFun);
            end
        end
    end
end

--更新金币
function UserInfoView:onUpdateItems()
     self:getChildByName("panel"):getChildByName("panel_1"):getChildByName("txt_charm"):setString(UserModel.getCharm());
     self:updateItems();
end

function UserInfoView:onUpdateWin()
    local winNum = UserModel.getWinNUM();
    local loseNum = UserModel.getLoseNUM();
    local rate = 0;
    if winNum+loseNum ~= 0 then
        rate = math.floor(winNum*100/(winNum+loseNum));
    end
    self:getChildByName("panel"):getChildByName("panel_1"):getChildByName("txt_rate"):setString(rate.."%   ("..winNum.."胜)");
end

function UserInfoView:onUpdateScore()
    local score = UserModel.getScore();
    self:getChildByName("panel"):getChildByName("panel_1"):getChildByName("txt_score"):setString(score);

    local scoreInfo = ScoreInfo.getInfoByScore(score);
    self:getChildByName("panel"):getChildByName("panel_1"):getChildByName("txt_lv"):setString(scoreInfo.level);
    self:getChildByName("panel"):getChildByName("panel_1"):getChildByName("txt_title"):setString(scoreInfo.name);
end

--头像修改
function UserInfoView:headChanged()
    self.headContainer:removeAllChildren();
    local head = NodeManager.getHeadSprite("head_"..UserModel.user_info.head..".png",1);
    self.headContainer:addChild(head);
end

--头像框修改
function UserInfoView:headFrameChanged()
    self.btn_head:loadTextureNormal("res/headframe/"..UserModel.user_info.head_frame..".png");
    self.btn_head:loadTexturePressed("res/headframe/"..UserModel.user_info.head_frame..".png");

    self:updateItems();
end

--昵称修改
function UserInfoView:nickChanged()
    if StringUtil.GetUTFLen(UserModel.user_info.nick) > 10 then
        self.txt_nick:setString(StringUtil.getMaxLenString(UserModel.user_info.nick,10).."...");
    else
        self.txt_nick:setString(UserModel.user_info.nick);
    end
end

function UserInfoView:onClose()
    self:close();
end

--返回键处理函数
function UserInfoView:onKeypadBack()
    self:close();
end

--确认键处理函数
function UserInfoView:onKeypadOk()
    local node = self.nodes[self.nodeIndex][self.selectedIndex];
    if node and node.fn then
        node.fn();
    end
end

--上键处理函数
function UserInfoView:onKeypadUp()
    if self.nodeIndex ~= #self.nodesCopy + 1 then
        UserInfoView.super.onKeypadUp(self,false);
    end

    local node = self.nodes[self.nodeIndex][self.selectedIndex];
    if (_index == 1 and self.nodeIndex >= #self.nodes - 3) or #self.nodesCopy == 1 then
        self:setRecordScrollPosition(node);
    elseif _index == #title_list and self.nodeIndex > #self.nodesCopy then
        if node.fn then
            self:setScrollPosition(node:getParent());
        else
            self:setScrollPosition(node);
        end
    end

    if self.nodeIndex <= #self.nodesCopy and node and node.fn then
        node.fn();
    end
end

--下键处理函数
function UserInfoView:onKeypadDown()
    if self.nodeIndex ~= #self.nodesCopy then
        UserInfoView.super.onKeypadDown(self,false);
    end

    local node = self.nodes[self.nodeIndex][self.selectedIndex];
    if (_index == 1 and self.nodeIndex >= #self.nodes - 3) or #self.nodesCopy == 1 then
        self:setRecordScrollPosition(node);
    elseif _index == #title_list and self.nodeIndex > #self.nodesCopy then
        if node.fn then
            self:setScrollPosition(node:getParent());
        else
            self:setScrollPosition(node);
        end
    end

    if self.nodeIndex <= #self.nodesCopy and node and node.fn then
        node.fn();
    end
end

--左键处理函数
function UserInfoView:onKeypadLeft()
    if self.nodeIndex > #self.nodesCopy and self.selectedIndex == 1 then
        self.nodeIndex = _index;
        self:updateSelectedState(false);
    else
        UserInfoView.super.onKeypadLeft(self,false);
    end
end

--右键处理函数
function UserInfoView:onKeypadRight()
    if self.nodeIndex <= #self.nodesCopy and #self.nodes > #self.nodesCopy then
        self.nodeIndex = #self.nodesCopy + 1;
        self:updateSelectedState(false);
    else
        UserInfoView.super.onKeypadRight(self,false);
    end
end

function UserInfoView:setScrollPosition(node)
    local scrollSize = self.scrollView:getContentSize();

    local _list = ItemInfo.getItemList();
    local len = math.floor((#_list-1)/3)*155+155;
    local currentX = len - (node:getPositionY()+155);
    if currentX > len-scrollSize.height then
        currentX = len-scrollSize.height;
    elseif currentX < 0 then
        currentX = 0;
    end

    local per = 0;
    if len-scrollSize.height > 0 then
        per = currentX*100/(len-scrollSize.height);
    end
    print(len-scrollSize.height,per)
    self.scrollView:scrollToPercentVertical(per,0.5,true);
end

function UserInfoView:setRecordScrollPosition(node)
    local scrollSize = self.recordScrollView:getContentSize();

    local currentX = _record_scroll_len - (node:getPositionY()+62+10);
    if currentX > _record_scroll_len-scrollSize.height then
        currentX = _record_scroll_len-scrollSize.height;
    elseif currentX < 0 then
        currentX = 0;
    end

    local per = 0;
    if _record_scroll_len-scrollSize.height > 0 then
        per = currentX*100/(_record_scroll_len-scrollSize.height);
    end
    print(_record_scroll_len-scrollSize.height,per)
    self.recordScrollView:scrollToPercentVertical(per,0.5,true);
end

return UserInfoView