Пример #1
0
        protected void gvItem_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            log4net.ILog logger = log4net.LogManager.GetLogger("File");
            try
            {
                if (e.NewPageIndex >= 0)
                {
                    gvItemTable.PageIndex = e.NewPageIndex;
                    BindGridWithFilter();
                    AdminBLL            ws    = new AdminBLL();
                    GetItemData         _req  = new GetItemData();
                    GetItemDataResponse _resp = ws.GetItemData(_req);

                    int pageSize = ContextKeys.GRID_PAGE_SIZE;
                    gvItemTable.PageSize   = pageSize;
                    gvItemTable.DataSource = _resp.Item;
                    gvItemTable.DataBind();
                }
            }

            catch (Exception ex)
            {
                logger.Info(ex.Message);
            }
        }
Пример #2
0
 public GetItemDataResponse GetItemData(GetItemData objGetItemDataRequest)
 {
     try
     {
         AdminDAL            objAdminDAL = new AdminDAL();
         GetItemDataResponse ret         = new GetItemDataResponse();
         List <ItemData>     lst         = objAdminDAL.GetItemData(objGetItemDataRequest);
         ret.Item = lst;
         return(ret);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #3
0
        private void BindGridWithFilter()
        {
            log4net.ILog logger = log4net.LogManager.GetLogger("File");
            try
            {
                AdminBLL    ws          = new AdminBLL();
                GetItemData objReq      = new GetItemData();
                string      WhereClause = ReturnWhere();
                if (!string.IsNullOrEmpty(txtItemNo.Text))
                {
                    objReq.Model_No = txtItemNo.Text;
                }
                if (!string.IsNullOrEmpty(txtItemDes.Text))
                {
                    objReq.Item_Description = txtItemDes.Text;
                }
                if (!string.IsNullOrEmpty(txtItemLoggedByName.Text))
                {
                    //objReq.loged_Nric = txtItemLoggedByName.Text;
                }

                if (!string.IsNullOrEmpty(txtItemSignedOutBy.Text))
                {
                    // objReq.Signed_Nric = txtItemSignedOutBy.Text;
                }

                if (!string.IsNullOrEmpty(WhereClause))
                {
                    objReq.WhereClause = WhereClause;
                }

                GetItemDataResponse ret = ws.GetItemData(objReq);
                int pageSize            = ContextKeys.GRID_PAGE_SIZE;
                gvItemTable.PageSize   = pageSize;
                gvItemTable.DataSource = ret.Item;
                gvItemTable.DataBind();
            }
            catch (Exception ex)
            {
                logger.Info(ex.Message);
            }
        }
Пример #4
0
 private void BindGrid()
 {
     log4net.ILog logger = log4net.LogManager.GetLogger("File");
     try
     {
         AdminBLL            ws    = new AdminBLL();
         GetItemData         _req  = new GetItemData();
         GetItemDataResponse _resp = ws.GetItemData(_req);
         int pageSize = ContextKeys.GRID_PAGE_SIZE;
         gvItemTable.PageSize   = pageSize;
         gvItemTable.DataSource = _resp.Item;
         //if (_resp.Item.Count == 0)
         //{
         //    item1.Visible = false;
         //    item2.Visible = false;
         //}
         gvItemTable.DataBind();
     }
     catch (Exception ex)
     {
         logger.Info(ex.Message);
     }
 }
Пример #5
0
        private void BindGridWithFilter()
        {
            log4net.ILog logger = log4net.LogManager.GetLogger("File");
            try
            {
                AdminBLL    ws     = new AdminBLL();
                GetItemData objReq = new GetItemData();
                getLocationIDByName(ddllocation.Text.Trim());
                string WhereClause = ReturnWhere();

                if (!string.IsNullOrEmpty(txtitemno.Text))
                {
                    objReq.Model_No = txtitemno.Text;
                }
                if (!string.IsNullOrEmpty(txtsigninby.Text))
                {
                    objReq.IssuedTo_Name = txtsigninby.Text;
                }
                if (!string.IsNullOrEmpty(ddllocation.Text))
                {
                    objReq.Location_id = SearchLocID.Text;
                }
                if (!string.IsNullOrEmpty(ddlStatus.Text))
                {
                    objReq.Status = ddlStatus.Text;
                }
                if (!string.IsNullOrEmpty(txtsignoutby.Text))
                {
                    objReq.IssuedBy_Name = txtsignoutby.Text;
                }
                if (!string.IsNullOrEmpty(txtdateto.Text))
                {
                    if (!string.IsNullOrEmpty(txtdatefrom.Text))
                    {
                        objReq.loged_Time = txtdatefrom.Text;
                        objReq.loged_Time = txtdatefrom.Text;
                    }
                }
                if (!string.IsNullOrEmpty(txtdatefrom.Text))
                {
                    if (string.IsNullOrEmpty(txtdateto.Text))
                    {
                        objReq.loged_Time = txtdatefrom.Text;
                    }
                }
                //WhereClause by jitendra
                //if (Request.QueryString["Past"] != null)
                //{
                //    WhereClause = WhereClause + " where issuedBy_time  <='" + DateTime.Now.Date + "'";
                //}
                //else
                //{
                //    WhereClause = WhereClause + " where issuedBy_time  >='" + DateTime.Now.Date + "'";
                //}
                //

                if (!string.IsNullOrEmpty(WhereClause))
                {
                    objReq.WhereClause = WhereClause;
                }



                GetItemDataResponse ret = ws.GetItemData(objReq);
                int pageSize            = ContextKeys.GRID_PAGE_SIZE;
                //gvItemTable.PageSize = pageSize;
                //gvItemTable.DataSource = ret.Item;
                //gvItemTable.DataBind();
                gvItemTable1.PageSize   = pageSize;
                gvItemTable1.DataSource = ret.Item;
                gvItemTable1.DataBind();
            }
            catch (Exception ex)
            {
                logger.Info(ex.Message);
            }
        }
Пример #6
0
        void Signout()
        {
            GetItemData objadditemdata = new GetItemData();
            ItemData    Objitemdata    = new ItemData();
            DateTime    datetime;

            cn = a.getconnection();

            String q = txtItemNo.Text;
            // String x = "select Item_no from Item_Manager";
            //SqlCommand cmd3 = new SqlCommand(x, cn);
            //SqlDataAdapter adp = new SqlDataAdapter(cmd3);
            DataSet ds = dal.getdataset("select Item_no from Item_Manager");
            //adp.Fill(ds);
            int count = ds.Tables[0].Rows.Count;

            for (i = 0; i < count; i++)
            {
                String z = ds.Tables[0].Rows[i].ItemArray[0].ToString();
                if (string.Equals(q, z, StringComparison.CurrentCultureIgnoreCase))
                {
                    String q1 = txtsignednric.Text;
                    //String x1 = "select NRICno from UserInformation";
                    //SqlCommand cmd4 = new SqlCommand(x1, cn);
                    //SqlDataAdapter adp4 = new SqlDataAdapter(cmd4);
                    DataSet ds4 = dal.getdataset("select NRICno from UserInformation");
                    // adp4.Fill(ds4);
                    int count1 = ds4.Tables[0].Rows.Count;
                    for (i = 0; i < count1; i++)
                    {
                        String z1 = ds4.Tables[0].Rows[i].ItemArray[0].ToString();
                        if (string.Equals(q1, z1, StringComparison.CurrentCultureIgnoreCase))
                        {
                            //Objitemdata.Item_no = txtItemNo.Text;
                            //Objitemdata.Item_Description =txtItemdescription.Text;
                            //Objitemdata.Item_quantity =txtItemquantity.Text;

                            //Objitemdata.Signed_Nric = subitem();
                            //Objitemdata.Signed_Name =txtsignedname.Text;
                            //Objitemdata.Signed_CompName =txtsignedcompname.Text;
                            //Objitemdata.Signed_Time = DateTime.Now;
                            //Objitemdata.Remarks =txtremark.Text;

                            //Objitemdata.loged_Nric =txtlogednric.Text;
                            //Objitemdata.loged_Name =txtlogedname.Text;
                            //Objitemdata.loged_CompName =txtlogedcompname.Text;
                            //Objitemdata.loged_Time =Convert.ToDateTime(lbllogedtime.Text);

                            //Objitemdata.Found_Nric = txtfoundnric.Text;
                            //Objitemdata.Status = cmbstatus.Text;
                            //Objitemdata.Foundremark = txtfoundremark.Text;


                            AdminBLL ws = new AdminBLL();
                            ws.UpdateItemData(Objitemdata);

                            HttpContext.Current.Items.Add("COMPLETE", "INSERT");
                            Server.Transfer("..//SMSADMIN//AlertUpdateComplete.aspx");
                        }
                    }

                    lblerror.Visible = true;
                    lblerror.Text    = "Invalid NRIC/FIN No. ..!";
                    lblerr3.Visible  = true;
                    throw new Exception();
                }
            }
            lblerror.Visible = true;
            lblerror.Text    = "Item No. Doesn't Exist ..!";
            lblerr2.Visible  = true;
            throw new Exception();
        }
Пример #7
0
        void founditem()
        {
            String      ZipRegex       = "^[0-9]+$";
            GetItemData objadditemdata = new GetItemData();
            ItemData    Objitemdata    = new ItemData();

            //DateTime datetime;
            cn = a.getconnection();

            //if (Regex.IsMatch(txtfoundnric.Text, ZipRegex))
            //    {
            String q3 = txtfoundnric.Text;
            //String x3 = "select NRICno from UserInformation";
            //SqlCommand cmd6 = new SqlCommand(x3, cn);
            //SqlDataAdapter adp6 = new SqlDataAdapter(cmd6);
            DataSet ds6 = dal.getdataset("Select NRICno from UserInformation");
            //adp6.Fill(ds6);
            int count3 = ds6.Tables[0].Rows.Count;

            for (i = 0; i < count3; i++)
            {
                String z3 = ds6.Tables[0].Rows[i].ItemArray[0].ToString();
                if (string.Equals(q3, z3, StringComparison.CurrentCultureIgnoreCase))
                {
                    String v = txtItemNo.Text;
                    //String b = "select Item_no from Item_Manager";
                    //SqlCommand cmd13 = new SqlCommand(b, cn);
                    //SqlDataAdapter adp13 = new SqlDataAdapter(cmd13);

                    DataSet ds13 = dal.getdataset("select Item_no from Item_Manager");
                    // DataSet ds13 = new DataSet();
                    // adp13.Fill(ds13);
                    int count13 = ds13.Tables[0].Rows.Count;
                    for (i = 0; i < count13; i++)
                    {
                        String h = ds13.Tables[0].Rows[i].ItemArray[0].ToString();
                        if (string.Equals(v, h, StringComparison.CurrentCultureIgnoreCase))
                        {
                            //Objitemdata.Model_No = txtItemNo.Text;
                            //Objitemdata.Item_Description = txtItemdescription.Text;
                            //Objitemdata.Item_quantity = txtItemquantity.Text;

                            //Objitemdata.loged_Nric = txtlogednric.Text;
                            //Objitemdata.loged_Name = txtlogedname.Text;
                            //Objitemdata.loged_CompName = txtlogedcompname.Text;
                            //Objitemdata.loged_Time = Convert.ToDateTime(lbllogedtime.Text);

                            //Objitemdata.Signed_Nric = txtsignednric.Text;
                            //Objitemdata.Signed_Name = txtsignedname.Text;
                            //Objitemdata.Signed_CompName = txtsignedcompname.Text;
                            //Objitemdata.Signed_Time = DateTime.Now;
                            //Objitemdata.Remarks = txtremark.Text;

                            //Objitemdata.Found_Nric = txtfoundnric.Text;
                            //Objitemdata.Status = cmbstatus.Text;
                            //Objitemdata.Foundremark = txtfoundremark.Text;

                            //AdminBLL ws = new AdminBLL();
                            //ws.UpdateItemData(Objitemdata);

                            HttpContext.Current.Items.Add("COMPLETE", "INSERT");
                            Server.Transfer("..//SMSADMIN//AlertUpdateComplete.aspx");
                        }
                    }


                    lblerror.Visible = true;
                    lblerror.Text    = "Invalid Item No. ..!";
                    lblerr2.Visible  = true;
                    throw new Exception();
                }
            }
            lblerror.Visible = true;
            lblerror.Text    = "Invalid NRIC/FIN No. ..!";
            lblerr4.Visible  = true;
            throw new Exception();
            //  }
            //else
            //  {
            //    lblerror.Visible = true;
            //    lblerror.Text = "Invalid NRIC/FIN No. ..!";
            //    lblerr4.Visible = true;
            //    throw new Exception();
            //  }
        }
Пример #8
0
    sealed public override void setData(List <object> l, Dictionary <string, int> k)
    {
        id   = (string)l[k["ID"]];
        mode = (string)l[k["MODE"]];

        string[] tarr;

        settingTime = -1;

        string tt = l[k["TIME"]].ToString();

        if (string.IsNullOrEmpty(tt) == false && tt.Contains("/"))
        {
            string[] t2 = tt.Split('/');

            if (t2.Length > 0)
            {
                if (t2[0].Length > 0)
                {
                    int st = 0;
                    int.TryParse(t2[0], out st);
                    settingTime = st;
                }
            }

            if (t2.Length == 2)
            {
                settingAttr2 = t2[1];
            }
        }
        else
        {
            Util.parseObject(l[k["TIME"]], out settingTime, true, -1);
        }

        settingAttr = (l[k["MODE_ATTR"]]).ToString();
        targetPos   = 0;

        switch (mode)
        {
        case MODE.SURVIVAL:

            if (settingAttr2 != null)
            {
                challengeData      = new StageMonsterData();
                challengeData.type = StageMonsterData.Type.UNIT;
                challengeData.id   = "UN5";               // 어차피 화면에는 안보이게 할 거다. 더미나 마찬가지임.
            }
            break;

        case MODE.PROTECT:
            tarr          = settingAttr.Split('/');
            protectObject = new StageMonsterData[tarr.Length];
            for (int i = 0; i < tarr.Length; ++i)
            {
                protectObject[i]      = new StageMonsterData();
                protectObject[i].type = StageMonsterData.Type.NPC;
                string[] tmp = tarr[i].Split(',');
                protectObject[i].id = tmp[0];
                Util.tryFloatParseToXfloat(tmp[1], out protectObject[i].posX, protectObject[i].posX);
                Util.tryFloatParseToXfloat(tmp[2], out protectObject[i].posY, protectObject[i].posY);
                Util.tryFloatParseToXfloat(tmp[3], out protectObject[i].posZ, protectObject[i].posZ);

                if (tmp.Length >= 5)
                {
                    Util.tryFloatParseToXfloat(tmp[4], out protectObject[i].angle, protectObject[i].angle);
                }
                else
                {
                    protectObject[i].angle = -1000;
                }

                if (tmp.Length == 6)
                {
                    protectObject[i].attr = tmp[5];
                }
                else
                {
                    protectObject[i].attr = null;
                }
            }


            if (settingAttr2 != null)
            {
                challengeData      = new StageMonsterData();
                challengeData.type = StageMonsterData.Type.UNIT;
                challengeData.id   = "UN5";               // 어차피 화면에는 안보이게 할 거다. 더미나 마찬가지임.
            }

            break;

        case MODE.SNIPING:

            string str = (l[k["MODE_ATTR"]]).ToString();

            if (str.Contains(","))
            {
                int[] st1 = Util.stringToIntArray(str, ',');
                targetIndex = st1[0];
                targetHpPer = st1[1];
            }
            else
            {
                Util.parseObject(l[k["MODE_ATTR"]], out targetIndex, true, 0);
                targetHpPer = -1000;
            }

            break;

        case MODE.KILLCOUNT:
            tarr             = settingAttr.Split('/');
            killMonsterCount = tarr.Length;
            killMonsterIds   = new string[killMonsterCount];
            killMonsterNum   = new Xint[killMonsterCount];

            for (int i = 0; i < killMonsterCount; ++i)
            {
                string[] t = tarr[i].Split(',');
                killMonsterIds[i] = t[0];
                Util.tryIntParseToXInt(t[1], out killMonsterNum[i], killMonsterNum[i]);
            }

            if (killMonsterIds.Length == 1 && killMonsterIds[0].Equals("TOTAL"))
            {
                mode = MODE.KILLCOUNT2;
            }

            break;

        case MODE.ARRIVE:
//* 목표지점 좌표, 호위NPC ID(옵션),
//* 추격몬스터 ID(옵션), 이동속도(옵션)
//[목표지점/호위NPCID/추격몬스터ID,이동속도N]

//* 목표지점 좌표, 호위NPC ID(옵션),
//* 추격몬스터 ID(옵션), 이동속도(옵션)
//[목표지점/호위NPCID/추격몬스터ID,이동속도N]
            tarr = settingAttr.Split('/');

            Util.tryIntParseToXInt(tarr[0], out targetPos, targetPos);

            if (tarr.Length >= 2)
            {
                if (string.IsNullOrEmpty(tarr[1]) == false)
                {
                    protectObject         = new StageMonsterData[1];
                    protectObject[0]      = new StageMonsterData();
                    protectObject[0].type = StageMonsterData.Type.NPC;
                    string[] tmp = tarr[1].Split(',');
                    protectObject[0].id = tmp[0];

                    if (tmp.Length >= 2)
                    {
                        Util.tryFloatParseToXfloat(tmp[1], out protectObject[0].posX, protectObject[0].posX);
                        Util.tryFloatParseToXfloat(tmp[2], out protectObject[0].posY, protectObject[0].posY);
                        Util.tryFloatParseToXfloat(tmp[3], out protectObject[0].posZ, protectObject[0].posZ);
                    }

                    if (tmp.Length >= 5)
                    {
                        Util.tryFloatParseToXfloat(tmp[4], out protectObject[0].angle, protectObject[0].angle);
                    }
                    else
                    {
                        protectObject[0].angle = -1000;
                    }

                    if (tmp.Length == 6)
                    {
                        Util.tryFloatParseToXfloat(tmp[5], out protectObject[0].checkLine, protectObject[0].checkLine);
                    }
                    else
                    {
                        protectObject[0].checkLine = 300;
                    }
                }

                if (tarr.Length == 3)
                {
                    string[] c = tarr[2].Split(',');
                    chaser      = new StageMonsterData();
                    chaser.type = StageMonsterData.Type.NPC;
                    chaser.id   = c[0];
                    Util.tryFloatParseToXfloat(c[1], out chaser.posX, chaser.posX);
                    Util.tryFloatParseToXfloat(c[2], out chaser.posZ, chaser.posZ);
                    Util.tryFloatParseToXfloat(c[3], out chaser.speed, chaser.speed);
                }
            }

            break;

        case MODE.DESTROY:

//* 목표 오브젝트 지정 (최소 1개 이상)
//* 추격몬스터 ID(옵션), 이동속도(옵션)
//[ID1,ID2,ID3/추격몬스터ID,이동속도N]
//			id,px,py/id,px,py|npcid,px,py,speed
            tarr = settingAttr.Split('|');
            if (tarr.Length == 2)
            {
                string[] c = tarr[1].Split(',');
                chaser      = new StageMonsterData();
                chaser.type = StageMonsterData.Type.NPC;
                chaser.id   = c[0];
                Util.tryFloatParseToXfloat(c[1], out chaser.posX, chaser.posX);
                Util.tryFloatParseToXfloat(c[2], out chaser.posZ, chaser.posZ);
                Util.tryFloatParseToXfloat(c[3], out chaser.speed, chaser.speed);
            }

            tarr = tarr[0].Split('/');
            int len = tarr.Length;

            destroyObject = new StageMonsterData[tarr.Length];
            for (int i = 0; i < len; ++i)
            {
                destroyObject[i]      = new StageMonsterData();
                destroyObject[i].type = StageMonsterData.Type.NPC;
                string[] tmp = tarr[i].Split(',');
                destroyObject[i].id = tmp[0];
                Util.tryFloatParseToXfloat(tmp[1], out destroyObject[i].posX, destroyObject[i].posX);
                Util.tryFloatParseToXfloat(tmp[2], out destroyObject[i].posY, destroyObject[i].posY);
                Util.tryFloatParseToXfloat(tmp[3], out destroyObject[i].posZ, destroyObject[i].posZ);

                if (tmp.Length == 5)
                {
                    Util.tryFloatParseToXfloat(tmp[4], out destroyObject[i].angle, destroyObject[i].angle);
                }
                else
                {
                    destroyObject[i].angle = -1000;
                }
            }

            break;

        case MODE.GETITEM:

            getItemData = new GetItemData();

            tarr = settingAttr.Split('/');
            foreach (string ta in tarr)
            {
                string[] tl = ta.Split(',');
                getItemData.needCount[tl[0]] = 0;
                int needCount = 0;
                int.TryParse(tl[1], out needCount);
                getItemData.needCount[tl[0]]    = needCount;
                getItemData.createChance[tl[0]] = new Dictionary <string, Xint>(StringComparer.Ordinal);

                int monLen = (tl.Length - 2) / 2;
                for (int i = 0; i < monLen; ++i)
                {
                    string unitId = tl[2 + (i * 2)];
                    getItemData.createChance[tl[0]][unitId] = 0;
                    needCount = 0;
                    int.TryParse(tl[2 + (i * 2) + 1], out needCount);
                    getItemData.createChance[tl[0]][unitId] = needCount;
                }
            }

            getItemData.itemIds = new string[getItemData.needCount.Keys.Count];
            getItemData.needCount.Keys.CopyTo(getItemData.itemIds, 0);
            getItemData.itemCount = getItemData.itemIds.Length;


            if (settingAttr2 != null)
            {
                challengeData      = new StageMonsterData();
                challengeData.type = StageMonsterData.Type.UNIT;
                challengeData.id   = "UN5";               // 어차피 화면에는 안보이게 할 거다. 더미나 마찬가지임.
            }

            //GameManager.me.uiManager.uiPlay.lbRoundInfo.text = getItemData.itemIds.ToString() + "획득";

            break;


        case MODE.C_RUN:
            tarr               = settingAttr.Split(',');
            challengeData      = new StageMonsterData();
            challengeData.type = StageMonsterData.Type.NPC;
            challengeData.id   = tarr[0];
            units              = ((string)l[k["MON_HERO_UNIT"]]).Split(',');
            break;

        case MODE.C_SURVIVAL:
            challengeData      = new StageMonsterData();
            challengeData.type = StageMonsterData.Type.UNIT;
            challengeData.id   = "UN5";           // 어차피 화면에는 안보이게 할 거다. 더미나 마찬가지임.
            units = ((string)l[k["MON_HERO_UNIT"]]).Split(',');
            break;

        case MODE.C_HUNT:
            challengeData      = new StageMonsterData();
            challengeData.type = StageMonsterData.Type.UNIT;
            challengeData.id   = "UN5";           // 어차피 화면에는 안보이게 할 거다. 더미나 마찬가지임.
            units = ((string)l[k["MON_HERO_UNIT"]]).Split(',');
            break;


        case MODE.B_TEST:
            challengeData      = new StageMonsterData();
            challengeData.type = StageMonsterData.Type.UNIT;
            challengeData.id   = "UN5";           // 어차피 화면에는 안보이게 할 거다. 더미나 마찬가지임.

            List <string> testUnits = new List <string>();

            string[] f**k = settingAttr.Split('/');
            for (int i = 0; i < f**k.Length; ++i)
            {
                string[] shit = f**k[i].Split(',');
                for (int j = 2; j < shit.Length; ++j)
                {
                    if (testUnits.Contains(shit[j]) == false)
                    {
                        testUnits.Add(shit[j]);
                    }
                }
            }

            units = testUnits.ToArray();
            break;
        }

        string tr = ((string)l[k["REWARD"]]).Trim();

        if (string.IsNullOrEmpty(tr))
        {
            rewards = null;
        }
        else
        {
            rewards = tr.Split('/');
        }

        description = (string)l[k["DESCRIPTION"]];

        description = description.Replace("\\n", "\n");

        cutSceneId = (string)l[k["SCENE_ID"]];
        mapBg      = (string)l[k["MAP_BG"]];

        mapId = Util.stringToIntArray(l[k["MAP_ID"]].ToString(), '/');

        if (mapId == null)
        {
            mapId = new int[1] {
                1
            }
        }
        ;


        mapStartEndPosX = Util.stringToXIntArray((string)l[k["MAP_SIZE"]], ',');
        Util.parseObject(l[k["PLAYER_START_POINT"]], out playerStartPosX, true, 0);
        parseMonsterData((string)l[k["MON_HERO"]], (string)l[k["DEFAULT_MON_UNIT"]], (string)l[k["MON_HERO_UNIT"]], (string)l[k["MON_HERO_SKILL"]], (string)l[k["MON_HERO_AI"]], (string)l[k["DECO"]], (string)l[k["OBJECT"]]);


//		Debug.LogError(id + " " + cutSceneId);
    }

    //parseMonsterData((string)l[k["MON_HERO"]],(string)l[k["DEFAULT_MON_UNIT"]],(string)l[k["MON_HERO_UNIT"]],(string)l[k["MON_HERO_SKILL"]],(string)l[k["MON_HERO_AI"]] );
    void parseMonsterData(string heroStr, string defaultMonUnit, string unitStr, string skillStr, string aiStr, string decoStr, string blockObjectStr)
    {
//* 해당 라운드에 등장하는 언데드히어로 지정 및 초기 위치 설정
//* (언데드히어로ID, 위치,보유SP%,보유MP%) 형식으로 지정 - HP는 무조건 100%, SP/MP는 초반 난이도 조절을 위해 필요
//* (언데드A/언데드B/… ) 형식으로 복수개 지정 가능
//예> 22,30,100,100/23,80,50,50
        int i;

        string[] heroes;

        if (string.IsNullOrEmpty(heroStr))
        {
            heroes = new string[0];
        }
        else
        {
            heroes = heroStr.Split('/');
        }


        string[] heroUnit = null;

        if (unitStr.Trim().Length > 0)
        {
            heroUnit = unitStr.Split('/');
        }

        string[] heroSkill = skillStr.Split('/');
        string[] heroAi    = aiStr.Split('/');

        heroMonsters = new StageMonsterData[heroes.Length];

        for (i = 0; i < heroes.Length; ++i)
        {
            heroMonsters[i]      = new StageMonsterData();
            heroMonsters[i].type = StageMonsterData.Type.HERO;
            string[] tmp = heroes[i].Split(',');
            heroMonsters[i].id = tmp[0];
            Util.tryFloatParseToXfloat(tmp[1], out heroMonsters[i].posX, heroMonsters[i].posX);

            heroMonsters[i].hpPercent = 1.0f;

            Util.tryFloatParseToXfloat(tmp[2], out heroMonsters[i].spPercent, heroMonsters[i].spPercent);
            heroMonsters[i].spPercent *= 0.01f;

            Util.tryFloatParseToXfloat(tmp[3], out heroMonsters[i].mpPercent, heroMonsters[i].mpPercent);
            heroMonsters[i].mpPercent *= 0.01f;


            if (tmp.Length >= 5)
            {
                heroMonsters[i].attr = "H";
            }
            else
            {
                heroMonsters[i].attr = null;
            }


            if (heroUnit == null || i >= heroUnit.Length || string.IsNullOrEmpty(heroUnit[i]))
            {
                heroMonsters[i].units = new string[0];
            }
            else
            {
                heroMonsters[i].units = heroUnit[i].Split(',');                 //heroUnit[i].Split(',');
            }

            if (heroSkill == null || i >= heroSkill.Length || string.IsNullOrEmpty(heroSkill[i]))
            {
                heroMonsters[i].skills = new string[0];
            }
            else
            {
                heroMonsters[i].skills = heroSkill[i].Split(',');
            }


            if (heroAi == null || i >= heroAi.Length || string.IsNullOrEmpty(heroAi[i]))
            {
                heroMonsters[i].ai = new string[0];
            }
            else
            {
                heroMonsters[i].ai = heroAi[i].Split(',');
            }
        }


        if (defaultMonUnit.Equals(String.Empty) == false)
        {
            string[] units = defaultMonUnit.Split('/');
            unitMonsters = new StageMonsterData[units.Length];

            for (i = 0; i < units.Length; ++i)
            {
                unitMonsters[i]      = new StageMonsterData();
                unitMonsters[i].type = StageMonsterData.Type.UNIT;
                string[] tmp = units[i].Split(',');
                unitMonsters[i].id = tmp[0];
                Util.tryFloatParseToXfloat(tmp[1], out unitMonsters[i].posX, unitMonsters[i].posX);
                Util.tryFloatParseToXfloat(tmp[2], out unitMonsters[i].posZ, unitMonsters[i].posZ);

                unitMonsters[i].checkLine = -1000.0f;
                unitMonsters[i].attr      = null;
                unitMonsters[i].angle     = -1;

                switch (tmp.Length)
                {
                case 4:
                    Util.tryFloatParseToXfloat(tmp[3], out unitMonsters[i].checkLine, unitMonsters[i].checkLine);
                    break;

                case 5:
                    Util.tryFloatParseToXfloat(tmp[3], out unitMonsters[i].checkLine, unitMonsters[i].checkLine);
                    Util.tryFloatParseToXfloat(tmp[4], out unitMonsters[i].angle, unitMonsters[i].angle);
                    break;

                case 6:
                    Util.tryFloatParseToXfloat(tmp[3], out unitMonsters[i].checkLine, unitMonsters[i].checkLine);
                    Util.tryFloatParseToXfloat(tmp[4], out unitMonsters[i].angle, unitMonsters[i].angle);
                    unitMonsters[i].attr = ((string)tmp[5]).ToUpper();
                    break;
                }
            }
        }


        if (decoStr.Equals(String.Empty) == false)
        {
            string[] decos = decoStr.Split('/');
            decoObject = new StageMonsterData[decos.Length];

            for (i = 0; i < decos.Length; ++i)
            {
                decoObject[i]      = new StageMonsterData();
                decoObject[i].type = StageMonsterData.Type.NPC;
                string[] tmp = decos[i].Split(',');
                decoObject[i].id = tmp[0];
                Util.tryFloatParseToXfloat(tmp[1], out decoObject[i].posX, decoObject[i].posX);
                Util.tryFloatParseToXfloat(tmp[2], out decoObject[i].posY, decoObject[i].posY);
                Util.tryFloatParseToXfloat(tmp[3], out decoObject[i].posZ, decoObject[i].posZ);
                if (tmp.Length >= 5)
                {
                    Util.tryFloatParseToXfloat(tmp[4], out decoObject[i].angle, decoObject[i].angle);
                }
                else
                {
                    decoObject[i].angle = -1000.0f;
                }

                if (tmp.Length == 6)
                {
                    decoObject[i].attr = tmp[5];
                }
                else
                {
                    decoObject[i].attr = null;
                }
            }
        }


        if (blockObjectStr.Equals(String.Empty) == false)
        {
//			사용 형식은 ‘NPCID1,X좌표,Z좌표,N/NPCID2,X좌표,Z좌표,N….’
//				<N>
//					- 0 : 몬스터 편 오브젝트 / 적은 오브젝트를 무시하고 통과
//					- 1 : 몬스터 편 오브젝트 / 적은 오브젝트를 지나치지 못함
//					(이동 중 오브젝트 앞에서 멈추며, 오브젝트 파괴 시 이동)
//					- 2 : 유저 편 오브젝트 / 유저는 오브젝트를 무시하고 통과
//					- 3 : 유저 편 오브젝트 / 유저는 오브젝트를 지나치지 못함
//					(이동 중 오브젝트 앞에서 멈추며, 오브젝트 파괴 시 이동)

            string[] blocks = blockObjectStr.Split('/');
            blockObject = new StageMonsterData[blocks.Length];

            for (i = 0; i < blockObject.Length; ++i)
            {
                blockObject[i]      = new StageMonsterData();
                blockObject[i].type = StageMonsterData.Type.NPC;

                string[] tmp = blocks[i].Split(',');
                blockObject[i].id = tmp[0];
                Util.tryFloatParseToXfloat(tmp[1], out blockObject[i].posX, blockObject[i].posX);
                Util.tryFloatParseToXfloat(tmp[2], out blockObject[i].posY, blockObject[i].posY);
                Util.tryFloatParseToXfloat(tmp[3], out blockObject[i].posZ, blockObject[i].posZ);

                if (tmp.Length >= 5)
                {
                    float t4 = 0;
                    float.TryParse(tmp[4], out t4);
                    blockObject[i].angle = t4;
                }
                else
                {
                    blockObject[i].angle = -1000.0f;
                }

//				Debug.Log(id);
                blockObject[i].attr = tmp[5];
            }
        }
    }
}