Exemplo n.º 1
0
        //把此来源链表中所有队员来源添上,前提是所有需要的来源都已经有ID了


        public Boolean FillPlayerInfo(List <AxDrawModelPlayerFrom> aryPlayerFromInfo)
        {
            Boolean bRet = true;

            for (Int32 nCyc = 0; nCyc < aryPlayerFromInfo.Count; nCyc++)
            {
                AxDrawModelPlayerFrom pPlayerFrom = aryPlayerFromInfo[nCyc];

                AxDrawModelModelExport pModelExp = GetModelExport(pPlayerFrom.m_byStageOrder, pPlayerFrom.m_byModelOrder);
                if (pModelExp.m_nTempModelID > 0)
                {
                    pPlayerFrom.m_nTempFromModelID = pModelExp.m_nTempModelID;
                }
                else
                {
                    bRet = false;
                    Debug.Assert(false);
                    //该来源还没有被插入数据库
                    pPlayerFrom.m_nTempFromModelID = 0;
                }
            }

            return(bRet);
        }
Exemplo n.º 2
0
        //创建出只有DrawInfo,没有比赛列表的结构
        public Boolean CreateEventModel()
        {
            m_ModelEvent.RemoveAll();

            //预赛,小组赛
            if (m_eModelUse == EUseEventModel.emModelGroup || m_eModelUse == EUseEventModel.emModelmGtomK || m_eModelUse == EUseEventModel.emModelmGtoK)
            {
                AxDrawModelStage modelStage = new AxDrawModelStage();
                modelStage.m_strStageName = m_StepGroup.GetStageTitle();

                for (Int32 nCyc = 0; nCyc < m_StepGroup.GetGroupCnt(); nCyc++)
                {
                    //每个组除了名字,都一样,所以统一建了一个,每次换名字
                    AxDrawModelModelExport modelExport = new AxDrawModelModelExport();
                    modelExport.m_drawInfo.m_bBogol = m_StepGroup.IsUseBogol();
                    modelExport.m_drawInfo.m_bQual  = true;
                    modelExport.m_drawInfo.m_eType  = EDrawModelType.emTypeRoundRobin;
                    modelExport.m_drawInfo.m_nSize  = m_StepGroup.GetPlayerCntPerGroup();
                    modelExport.m_drawInfo.m_nRank  = m_StepGroup.GetQualCntPerGroup();

                    modelExport.m_drawInfo.m_strTitle = m_StepGroup.GetGroupName(nCyc);
                    modelStage.m_aryModelList.Add(modelExport);
                }

                m_ModelEvent.m_aryStageList.Add(modelStage);

                //如果是单循环赛,在这直接加上名次信息,就完事了
                if (m_eModelUse == EUseEventModel.emModelGroup)
                {
                    for (Int32 nCyc = 0; nCyc < modelStage.m_aryModelList[0].m_drawInfo.m_nRank; nCyc++)
                    {
                        for (Int32 nGroup = 0; nGroup < m_StepGroup.GetGroupCnt(); nGroup++)
                        {
                            AxDrawModelPlayerFrom playerFrom = new AxDrawModelPlayerFrom();
                            playerFrom.m_byStageOrder = 0;
                            playerFrom.m_byModelOrder = (Byte)nGroup;
                            playerFrom.m_byResultRank = (Byte)(nCyc + 1);
                            m_ModelEvent.m_aryEventRank.Add(playerFrom);
                        }
                    }
                }
            }
            else
            if (m_eModelUse == EUseEventModel.emModelmKtoK) //预赛,淘汰赛
            {
                AxDrawModelStage modelStage = new AxDrawModelStage();
                modelStage.m_strStageName = m_StepKnockOut.GetStageTitle();

                for (int nCyc = 0; nCyc < m_StepKnockOut.GetGroupCnt(); nCyc++)
                {
                    //每个组除了名字,都一样,所以统一建了一个,每次换名字
                    AxDrawModelModelExport modelExport = new AxDrawModelModelExport();
                    modelExport.m_drawInfo.m_bBogol   = false;
                    modelExport.m_drawInfo.m_bQual    = true;
                    modelExport.m_drawInfo.m_eType    = EDrawModelType.emTypeKonckOut;
                    modelExport.m_drawInfo.m_nSize    = m_StepKnockOut.GetLayerCntPerGroup();
                    modelExport.m_drawInfo.m_nRank    = m_StepKnockOut.GetQualCntPerGroup();
                    modelExport.m_drawInfo.m_strTitle = m_StepKnockOut.GetGroupName(nCyc);
                    modelStage.m_aryModelList.Add(modelExport);
                }

                m_ModelEvent.m_aryStageList.Add(modelStage);
            }
            else
            if (m_eModelUse == EUseEventModel.emModelKnockOut) //预赛,单淘汰赛
            {
                AxDrawModelStage modelStage = new AxDrawModelStage();
                modelStage.m_strStageName = m_StepKnockSingle.GetStageTitle();

                AxDrawModelModelExport modelExport = new AxDrawModelModelExport();
                modelExport.m_drawInfo.m_bBogol   = false;
                modelExport.m_drawInfo.m_bQual    = false;
                modelExport.m_drawInfo.m_eType    = EDrawModelType.emTypeKonckOut;
                modelExport.m_drawInfo.m_nSize    = m_StepKnockSingle.GetLayerCntPerGroup();
                modelExport.m_drawInfo.m_nRank    = m_StepKnockSingle.GetQualCntPerGroup();
                modelExport.m_drawInfo.m_strTitle = m_StepKnockSingle.GetStageTitle();

                modelStage.m_aryModelList.Add(modelExport);
                m_ModelEvent.m_aryStageList.Add(modelStage);

                //处理最终排名
                for (int nCyc = 0; nCyc < modelExport.m_drawInfo.m_nRank; nCyc++)
                {
                    AxDrawModelPlayerFrom playerFrom = new AxDrawModelPlayerFrom();
                    playerFrom.m_byStageOrder = 0;
                    playerFrom.m_byModelOrder = 0;
                    playerFrom.m_byResultRank = (Byte)(nCyc + 1);
                    m_ModelEvent.m_aryEventRank.Add(playerFrom);
                }
            }

            //决赛, 多组To多淘
            if (m_eModelUse == EUseEventModel.emModelmGtomK)
            {
                AxDrawModelStage modelStageKnock = new AxDrawModelStage();
                modelStageKnock.m_strStageName = m_StepKnockFinal.GetStageTitle();

                //创建所有淘汰赛模型
                Int32 nModelCanUseCnt = m_StepKnockFinal.IsModelUse(3) ? 3 : (m_StepKnockFinal.IsModelUse(2) ? 2 : 1);
                for (Int32 nModel = 1; nModel <= nModelCanUseCnt; nModel++)
                {
                    AxDrawModelModelExport modelExport = new AxDrawModelModelExport();
                    modelExport.m_drawInfo.m_eType    = EDrawModelType.emTypeKonckOut;
                    modelExport.m_drawInfo.m_nSize    = m_StepKnockFinal.GetModelLayer(nModel);
                    modelExport.m_drawInfo.m_nRank    = m_StepKnockFinal.GetModelSize(nModel);
                    modelExport.m_drawInfo.m_bBogol   = false;
                    modelExport.m_drawInfo.m_strTitle = m_StepKnockFinal.GetModelTitle(nModel);

                    Int32 nRankOrder = 1;

                    //循环把晋级的人填入这个结构, 每组里的第几个人
                    for (Int32 nPlayerIndex = m_StepKnockFinal.GetModelPlayerIndexStart(nModel) - 1;
                         nPlayerIndex < m_StepKnockFinal.GetModelPlayerIndexEnd(nModel);
                         nPlayerIndex++)
                    {
                        //从预赛晋级过来了几个组
                        for (Int32 nGroup = 0; nGroup < m_StepKnockFinal.GetGroupFromCnt(); nGroup++)
                        {
                            //处理所有来源
                            AxDrawModelPlayerFrom playerFrom = new AxDrawModelPlayerFrom();
                            playerFrom.m_byStageOrder = 0;                              //第1层的
                            playerFrom.m_byModelOrder = (Byte)nGroup;                   //循环这一层的每个模型
                            playerFrom.m_byResultRank = (Byte)(nPlayerIndex + 1);       //在这一组的排序
                            modelExport.m_aryPlayerFrom.Add(playerFrom);

                            //处理整个赛事最后排名
                            AxDrawModelPlayerFrom rankPlayerFrom = new AxDrawModelPlayerFrom();
                            rankPlayerFrom.m_byStageOrder = 1;                  //固定在第二阶段
                            rankPlayerFrom.m_byModelOrder = (Byte)(nModel - 1); //循环每个淘汰赛
                            rankPlayerFrom.m_byResultRank = (Byte)(nRankOrder++);
                            m_ModelEvent.m_aryEventRank.Add(rankPlayerFrom);
                        }
                    }

                    modelStageKnock.m_aryModelList.Add(modelExport);
                }//for nModel

                m_ModelEvent.m_aryStageList.Add(modelStageKnock);
            }
            //多组To单淘
            else if (m_eModelUse == EUseEventModel.emModelmGtoK)
            {
                AxDrawModelStage modelStageKnock = new AxDrawModelStage();
                modelStageKnock.m_strStageName = m_StepKnockSingle.GetStageTitle();

                AxDrawModelModelExport modelExport = new AxDrawModelModelExport();
                modelExport.m_drawInfo.m_eType    = EDrawModelType.emTypeKonckOut;
                modelExport.m_drawInfo.m_nSize    = m_StepKnockSingle.GetLayerCntPerGroup();
                modelExport.m_drawInfo.m_nRank    = m_StepKnockSingle.GetQualCntPerGroup();
                modelExport.m_drawInfo.m_bBogol   = false;
                modelExport.m_drawInfo.m_strTitle = m_StepKnockSingle.GetStageTitle();

                //处理所有人来源,以组为轮换顺序加入晋级名单
                for (Int32 nPlayerIdx = 0; nPlayerIdx < m_StepGroup.GetQualCntPerGroup(); nPlayerIdx++)
                {
                    for (Int32 nGroup = 0; nGroup < m_StepGroup.GetGroupCnt(); nGroup++)
                    {
                        AxDrawModelPlayerFrom playerFrom = new AxDrawModelPlayerFrom();
                        playerFrom.m_byStageOrder = 0;                          //第1层的
                        playerFrom.m_byModelOrder = (Byte)nGroup;               //循环这一层的每个模型
                        playerFrom.m_byResultRank = (Byte)(nPlayerIdx + 1);     //在这一组的排序
                        modelExport.m_aryPlayerFrom.Add(playerFrom);
                    }
                }

                //处理最后排名输出
                for (Int32 nResultIdx = 0; nResultIdx < m_StepKnockSingle.GetQualCntPerGroup(); nResultIdx++)
                {
                    AxDrawModelPlayerFrom playerFrom = new AxDrawModelPlayerFrom();
                    playerFrom.m_byStageOrder = 1;                      //第2层的
                    playerFrom.m_byModelOrder = 0;                      //循环这一层的每个模型
                    playerFrom.m_byResultRank = (Byte)(nResultIdx + 1); //在这一组的排序
                    m_ModelEvent.m_aryEventRank.Add(playerFrom);
                }

                modelStageKnock.m_aryModelList.Add(modelExport);
                m_ModelEvent.m_aryStageList.Add(modelStageKnock);
            }
            //多淘To淘
            else if (m_eModelUse == EUseEventModel.emModelmKtoK)
            {
                AxDrawModelStage modelStageKnock = new AxDrawModelStage();
                modelStageKnock.m_strStageName = m_StepKnockSingle.GetStageTitle();

                AxDrawModelModelExport modelExport = new AxDrawModelModelExport();
                modelExport.m_drawInfo.m_eType    = EDrawModelType.emTypeKonckOut;
                modelExport.m_drawInfo.m_nSize    = m_StepKnockSingle.GetLayerCntPerGroup();
                modelExport.m_drawInfo.m_nRank    = m_StepKnockSingle.GetQualCntPerGroup();
                modelExport.m_drawInfo.m_bBogol   = false;
                modelExport.m_drawInfo.m_strTitle = m_StepKnockSingle.GetStageTitle();

                //处理所有人来源,以组为轮换顺序加入晋级名单
                for (Int32 nPlayerIdx = 0; nPlayerIdx < m_StepKnockOut.GetQualCntPerGroup(); nPlayerIdx++)
                {
                    for (Int32 nGroup = 0; nGroup < m_StepKnockOut.GetGroupCnt(); nGroup++)
                    {
                        AxDrawModelPlayerFrom playerFrom = new AxDrawModelPlayerFrom();
                        playerFrom.m_byStageOrder = 0;                          //第1层的
                        playerFrom.m_byModelOrder = (Byte)nGroup;               //循环这一层的每个模型
                        playerFrom.m_byResultRank = (Byte)(nPlayerIdx + 1);     //在这一组的排序
                        modelExport.m_aryPlayerFrom.Add(playerFrom);
                    }
                }

                //处理最后排名输出
                for (Int32 nResultIdx = 0; nResultIdx < m_StepKnockSingle.GetQualCntPerGroup(); nResultIdx++)
                {
                    AxDrawModelPlayerFrom playerFrom = new AxDrawModelPlayerFrom();
                    playerFrom.m_byStageOrder = 1;                      //第2层的
                    playerFrom.m_byModelOrder = 0;                      //只有一个淘汰赛模型
                    playerFrom.m_byResultRank = (Byte)(nResultIdx + 1); //在这一组的排序
                    m_ModelEvent.m_aryEventRank.Add(playerFrom);
                }

                modelStageKnock.m_aryModelList.Add(modelExport);
                m_ModelEvent.m_aryStageList.Add(modelStageKnock);
            }

            return(true);
        }