Пример #1
0
        void CreateInfo8()
        {
            Tabler tabler = Control.Create <Tabler>();

            tabler.SetDefaultCellMargin(new Margin(0, 0, 30, 0));
            listViewer.AddChild(tabler, 80);

            Label costLabel = Control.Create <Label>();

            costLabel.CtrlSizeChangeMode = ControlSizeChangeMode.FitContentSize;
            costLabel.Height             = 25;
            costLabel.Text = "房费:";
            tabler.AddChild(costLabel, 0, 0);
            tabler.SetCellMargin(0, 0, new Margin(10, 0, 10, 0));

            costinfo                    = Control.Create <CostInfo>();
            costinfo.MatchType          = MatchType.None;
            costinfo.CtrlSizeChangeMode = ControlSizeChangeMode.FitContentSize;
            costinfo.Height             = 25;
            tabler.AddChild(costinfo, 0, 1);

            tabler.EnableTableLineAutoAdjustRichSize(0, true, LineDir.HORIZONTAL);

            //
            tabler = Control.Create <Tabler>();
            listViewer.AddChild(tabler, 280);
        }
Пример #2
0
    private CostInfo handleSameCostCostInfos(CostInfo bestInfo, List <CostInfo> allCostInfos)
    {
        CostInfo pickedInfo = bestInfo;

        List <CostInfo> sameCosts = new List <CostInfo>();

        foreach (CostInfo info in allCostInfos)
        {
            if (info.Cost == bestInfo.Cost)
            {
                sameCosts.Add(info);
            }
        }

        if (sameCosts.Count > 1)
        {
            float smallestAngleDiff = 9999f;

            foreach (CostInfo info in sameCosts)
            {
                float angleDiff = Vector2.Angle(prevMoveDir, info.Node.IncomingDir);

                if (angleDiff < smallestAngleDiff)
                {
                    smallestAngleDiff = angleDiff;
                    pickedInfo        = info;
                }
            }
        }

        return(pickedInfo);
    }
Пример #3
0
        private GuildPrivateGoods LoadGuildPrivateGoodsFromXml(SecurityElement element)
        {
            GuildPrivateGoods goods = new GuildPrivateGoods {
                GoodsId                = StrParser.ParseHexInt(element.Attribute("Id"), 0),
                GoodsName              = StrParser.ParseStr(element.Attribute("Name"), ""),
                GoodsIconId            = StrParser.ParseHexInt(element.Attribute("IconId"), 0),
                GoodsDesc              = StrParser.ParseStr(element.Attribute("Desc"), ""),
                OpenTime               = StrParser.ParseDateTime(element.Attribute("StartTime")),
                CloseTime              = StrParser.ParseDateTime(element.Attribute("EndTime")),
                ResetType              = TypeNameContainer <_TimeDurationType> .Parse(element.Attribute("ResetType"), 0),
                BuyLimitCountPerCircle = StrParser.ParseDecInt(element.Attribute("BuyLimitCountPerCircle"), 0),
                BatchPurchase          = StrParser.ParseBool(element.Attribute("BatchPurchase"), false),
                ShowIndex              = StrParser.ParseDecInt(element.Attribute("ShowIndex"), 0)
            };

            if (element.Children != null)
            {
                foreach (SecurityElement element2 in element.Children)
                {
                    string tag = element2.Tag;
                    if (tag != null)
                    {
                        if (tag == "CostInfo")
                        {
                            CostInfo item = new CostInfo {
                                BuyCount = StrParser.ParseDecInt(element2.Attribute("BuyCount"), 0)
                            };
                            if (element2.Children != null)
                            {
                                foreach (SecurityElement element3 in element2.Children)
                                {
                                    if (element3.Tag == "Cost")
                                    {
                                        item.Costs.Add(Cost.LoadFromXml(element3));
                                    }
                                }
                            }
                            goods.Costinfos.Add(item);
                        }
                        else if (tag == "Reward")
                        {
                            goods.Rewards.Add(Reward.LoadFromXml(element2));
                        }
                        else if (tag == "Limit")
                        {
                            LimitInfo info2 = new LimitInfo {
                                LimitType  = TypeNameContainer <_LimitType> .Parse(element2.Attribute("Type"), 0),
                                LimitValue = StrParser.ParseDecInt(element2.Attribute("Value"), 0)
                            };
                            goods.LimitInfos.Add(info2);
                        }
                    }
                }
            }
            return(goods);
        }
Пример #4
0
            public CostInfo(CostInfo cost_info)
            {
                m_CostCountMax   = cost_info.m_CostCountMax;
                m_CostCountUsing = cost_info.m_CostCountUsing;

                for (MasterDataDefineLabel.ElementType element_idx = MasterDataDefineLabel.ElementType.NONE; element_idx < MasterDataDefineLabel.ElementType.MAX; element_idx++)
                {
                    m_ElementCounts[(int)element_idx] = cost_info.m_ElementCounts[(int)element_idx];
                }
            }
Пример #5
0
 public void ExportPDF()
 {
     if (AnimalCosts != null && AnimalCosts.Count() != 0)
     {
         DocumentManager.ExportDataPDF(CostInfo.ConvertToList(AnimalCosts), "Export zvířata");
     }
     else
     {
         MessageBox.Show("Žádná data pro export.");
     }
 }
Пример #6
0
        public bool Optimize(Phase p, CostInfo subOptimal)
        {
            var exist     = _at.TryGetValue(p, out var curCostInfo);
            var isUpdated = !exist || subOptimal.Cost < curCostInfo.Cost;

            if (isUpdated)
            {
                _at[p] = subOptimal;
            }
            return(isUpdated); // optimized?
        }
Пример #7
0
        /// <summary>
        /// 水电费修改页面
        /// </summary>
        /// <param name="ID"></param>
        /// <returns></returns>
        public ActionResult CostUpdate(int ID)
        {
            CostInfo costInfo = CostInfoService.GetCostInfoByID(ID);

            ViewBag.RsolveDate  = costInfo.RsolveDate.ToString("yyyy'-'MM'-'dd");
            ViewBag.RsubmitDate = costInfo.RsubmitDate.ToString("yyyy'-'MM'-'dd");

            ViewBag.costInfo = costInfo;

            return(View());
        }
Пример #8
0
    private LookaheadNode runawayBehaviour(List <LookaheadNode> possibleNodes)
    {
        Tank targetTank = controller.TargetTank;
        Tank selfTank   = controller.SelfTank;

        float dist = (targetTank.transform.position - selfTank.transform.position).magnitude;

        float maxRange            = selfTank.Hull.GetMaxRange() * 1.5f;
        bool  onlyCloser          = maxRange < dist;
        bool  allWeaponsReloading = selfTank.Hull.IsAllWeaponsReloading();

        List <CostInfo> nodeCosts  = new List <CostInfo>();
        bool            withFilter = true;

        while (nodeCosts.Count == 0)
        {
            foreach (LookaheadNode node in possibleNodes)
            {
                WeaponPart notUsed;
                int        targetTime = AIUtility.CalcMinTimeForAimerToHitAimee(targetTank.StateInfo, node.TankInfo, targetTank.Hull.GetAllWeapons(), out notUsed);

                Vector2 incomingDir = node.GetNodeOneStepAfterRoot().IncomingDir;

                int   cost       = targetTime;
                float futureDist = ((Vector2)targetTank.transform.position - node.TankInfo.Pos).magnitude;
                if (!withFilter || ((onlyCloser && dist > futureDist) || (!onlyCloser && futureDist < maxRange) || allWeaponsReloading))
                {
                    nodeCosts.Add(new CostInfo(node, cost));
                }
            }

            withFilter = false;
        }

        CombatDebugHandler.Instance.RegisterObject("maneuver_runaway_cost_infos", nodeCosts);

        CostInfo bestInfo = null;

        foreach (CostInfo info in nodeCosts)
        {
            if (bestInfo == null || bestInfo.Cost < info.Cost)
            {
                bestInfo = info;
            }
        }

        bestInfo = handleSameCostCostInfos(bestInfo, nodeCosts);

        CombatDebugHandler.Instance.RegisterObject("maneuver_best_node", bestInfo.Node);

        return(bestInfo.Node.GetNodeOneStepAfterRoot());
    }
Пример #9
0
        public void CreateItemTest()
        {
            // Arrange
            Guid         accountId;
            Guid         typeId;
            const string accountName = "ExpenseManagerAccount01";
            const string typeName    = "Food";
            var          account     = new AccountModel
            {
                Badges = new List <AccountBadgeModel>(),
                Costs  = new List <CostInfoModel>(),
                Name   = accountName
            };
            var type = new CostTypeModel
            {
                Name         = typeName,
                CostInfoList = new EditableList <CostInfoModel>(),
                Account      = account
            };

            using (
                var db =
                    new ExpenseDbContext(
                        Effort.DbConnectionFactory.CreatePersistent(TestInstaller.ExpenseManagerTestDbConnection)))
            {
                db.Accounts.Add(account);
                db.CostTypes.Add(type);
                db.SaveChanges();
                accountId = account.Id;
                typeId    = type.Id;
            }

            var item = new CostInfo()
            {
                Description = "bread",
                AccountId   = accountId,
                TypeId      = typeId,
                IsIncome    = true,
                Money       = 25,
                Created     = DateTime.Now
            };

            // Act
            var createdId = _expenseFacade.CreateItem(item);

            // Assert
            var createdItem = GetItemById(createdId);

            Assert.That(createdItem != null, "Item was not created.");
        }
Пример #10
0
        /// <summary>
        /// DTO添加水电费信息
        /// </summary>
        /// <param name="inputentity"></param>
        /// <returns></returns>
        public bool DTOAdd(CostInfoInputDTO inputentity)
        {
            //AutoMapper转换
            CostInfo dataModel = Mapper.Map <CostInfoInputDTO, CostInfo>(inputentity);

            dataModel.CostID = CreateOrderCode();
            if (costInfoDAL.AddAndSaveChange(dataModel) > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #11
0
        private CostInfo _getActiveSkillCost(GlobalDefine.PartyCharaIndex member_index, int active_skill_no)
        {
            CostInfo ret_val = null;

            CharaOnce chara_once = BattleParam.m_PlayerParty.getPartyMember(member_index, CharaParty.CharaCondition.EXIST);

            if (chara_once != null)
            {
                uint active_skill_fix_id = (active_skill_no == 0) ? chara_once.m_CharaMasterDataParam.skill_active0 : chara_once.m_CharaMasterDataParam.skill_active1;
                MasterDataSkillActive master_data_skill_active = BattleParam.m_MasterDataCache.useSkillActive(active_skill_fix_id);
                if (master_data_skill_active != null)
                {
                    ret_val = new CostInfo(master_data_skill_active.cost1, master_data_skill_active.cost2, master_data_skill_active.cost3, master_data_skill_active.cost4, master_data_skill_active.cost5);
                }
            }

            return(ret_val);
        }
Пример #12
0
        /// <summary>
        /// DTO更新数据
        /// </summary>
        /// <param name="inputEntity"></param>
        /// <returns></returns>
        public int DTOUpdate(CostInfoUpdateInputDTO inputEntity, out int outID)
        {
            //先查 AsNoTracking() 不追踪
            outID = 0;
            CostInfo checkmodel = costInfoDAL.LoadEntities(u => u.CostID == inputEntity.CostID).AsNoTracking().FirstOrDefault();

            if (checkmodel != null)
            {
                //AutoMap转换
                CostInfo dataModel = Mapper.Map <CostInfoUpdateInputDTO, CostInfo>(inputEntity);
                ////修改数据
                dataModel.ID     = checkmodel.ID;//把ID赋值,让EF知道应该修改哪条数据
                dataModel.HousID = checkmodel.HousID;
                outID            = dataModel.ID;
                return(costInfoDAL.EditAndSaveChange(dataModel));
            }
            else
            {
                return(0);
            }
        }
Пример #13
0
        /// <summary>
        /// 根据ID删除数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool Delete(Array id)
        {
            foreach (var item in id)
            {
                int ID = Convert.ToInt32(item);
                //先查
                CostInfo entity = costInfoDAL.LoadEntities(u => u.ID == ID).FirstOrDefault();
                if (entity != null)
                {
                    //打标记
                    costInfoDAL.DeleteFlag(entity);
                }
            }

            if (unitOfWork.SaveChanges() > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #14
0
 public void Set(int x, int y, Tool tool, CostInfo cost)
 => Set(new Phase(x, y, tool), cost);
Пример #15
0
 public void Set(Phase p, CostInfo cost) => _at[p] = cost;
Пример #16
0
    private LookaheadNode goingForItBehaviour(List <LookaheadNode> possibleNodes)
    {
        Tank selfTank   = controller.SelfTank;
        Tank targetTank = controller.TargetTank;

        List <CostInfo> nodeCosts = new List <CostInfo>();

        bool        overlapNodeExists = false;
        Vector2     diffVec           = targetTank.transform.position - selfTank.transform.position;
        List <bool> overlaps          = new List <bool>();

        foreach (LookaheadNode node in possibleNodes)
        {
            bool nodeOverlaps = false;
            foreach (WeaponPart part in selfTank.Hull.GetAllWeapons())
            {
                if (node.HasOverlappedTargetWithWeapon(targetTank.transform.position, part))
                {
                    overlapNodeExists = true;
                    nodeOverlaps      = true;
                    break;
                }
            }

            overlaps.Add(nodeOverlaps);
        }
        Debug.Assert(possibleNodes.Count == overlaps.Count, "Possible nodes and overlap count don't match. Should never happen");

        for (int i = 0; i < possibleNodes.Count; ++i)
        {
            LookaheadNode node = possibleNodes[i];

            WeaponPart notUsed;
            int        targetTime = AIUtility.CalcMinTimeForAimerToHitAimee(targetTank.StateInfo, node.TankInfo, targetTank.Hull.GetAllWeapons(), out notUsed);
            int        selfTime   = AIUtility.CalcMinTimeForAimerToHitAimee(node.TankInfo, targetTank.StateInfo, selfTank.Hull.GetAllWeapons(), out notUsed);

            int cost = targetTime - selfTime;

            bool overlapCondition = true;
            if (overlapNodeExists)
            {
                overlapCondition = overlaps[i];
            }

            if (overlapCondition)
            {
                nodeCosts.Add(new CostInfo(node, cost));
            }
        }

        CombatDebugHandler.Instance.RegisterObject("maneuver_going_cost_infos", nodeCosts);

        CostInfo bestInfo = null;

        foreach (CostInfo info in nodeCosts)
        {
            if (bestInfo == null || info.Cost > bestInfo.Cost)
            {
                bestInfo = info;
            }
        }

        bestInfo = handleSameCostCostInfos(bestInfo, nodeCosts);

        CombatDebugHandler.Instance.RegisterObject("maneuver_best_node", bestInfo.Node);

        return(bestInfo.Node.GetNodeOneStepAfterRoot());
    }
Пример #17
0
    public override void execThink(ref int dest_hand_index, ref int dest_field_index, PanelInfo panel_info)
    {
        m_HandIndex = (m_HandIndex + 1) % panel_info.m_HandElements.Length;

        int[] work_field_cost_empty_count = new int[panel_info.m_FieldElements.Length];
        for (int field_idx = 0; field_idx < work_field_cost_empty_count.Length; field_idx++)
        {
            work_field_cost_empty_count[field_idx] = panel_info.m_FieldElements[field_idx].m_CostCountMax - panel_info.m_FieldElements[field_idx].m_CostCountUsing;
        }

        // 置きたい属性などの指定が何もない場合は、右側から埋めていく
        if (m_SkillOrder.IsNullOrEmpty())
        {
            // 置きたい属性が無い場合は、優先順位が低い場(右側優先)に適当なパネルを置く
            for (int field_idx = panel_info.m_FieldElements.Length - 1; field_idx >= 0; field_idx--)
            {
                CostInfo field_cost_info = panel_info.m_FieldElements[field_idx];
                if (field_cost_info.m_CostCountUsing < field_cost_info.m_CostCountMax)
                {
                    dest_hand_index  = m_HandIndex;
                    dest_field_index = field_idx;
                    return;
                }
            }
        }

        // 優先的に置きたい属性があればそれを置く
        for (int skill_order_idx = 0; skill_order_idx < m_SkillOrder.Length; skill_order_idx++)
        {
            CostInfo skill_cost_info = m_SkillOrder[skill_order_idx];
            if (skill_cost_info != null && skill_cost_info.m_CostCountUsing > 0)
            {
                // このスキルが既に成立済みかチェックし、成立済みならスキップ(TODO:同じスキルを2回以上成立させたい場合はどうするか)
                bool is_formed = false;
                for (int field_idx = 0; field_idx < panel_info.m_FieldElements.Length; field_idx++)
                {
                    CostInfo field_cost_info = panel_info.m_FieldElements[field_idx];
                    bool     is_formed2      = true;
                    for (MasterDataDefineLabel.ElementType element_idx = MasterDataDefineLabel.ElementType.NONE + 1; element_idx < MasterDataDefineLabel.ElementType.MAX; element_idx++)
                    {
                        int field_cost_count = field_cost_info.getCostCount(element_idx);
                        int skill_cost_count = skill_cost_info.getCostCount(element_idx);

                        if (field_cost_count < skill_cost_count)
                        {
                            is_formed2 = false;
                            break;
                        }
                    }

                    if (is_formed2)
                    {
                        is_formed = true;
                        break;
                    }
                }

                if (is_formed)
                {
                    continue;
                }

                // まだこのスキルは成立していないのでどこにパネルを出すか決める
                // スキル成立までの手数が一番少ないところに出す。
                CostInfo[] skill_request_cost_infos     = new CostInfo[panel_info.m_FieldElements.Length]; // 各場でスキルが後何枚パネルを必要としているかの情報
                int        min_skill_request_cost_count = 999;                                             // 最小の必要枚数
                {
                    for (int field_idx = 0; field_idx < panel_info.m_FieldElements.Length; field_idx++)
                    {
                        CostInfo field_cost_info = panel_info.m_FieldElements[field_idx];
                        if (field_cost_info.m_CostCountUsing < field_cost_info.m_CostCountMax)
                        {
                            CostInfo skill_request_cost_info = new CostInfo(skill_cost_info);

                            for (MasterDataDefineLabel.ElementType element_idx = MasterDataDefineLabel.ElementType.NONE + 1; element_idx < MasterDataDefineLabel.ElementType.MAX; element_idx++)
                            {
                                int field_cost_count = field_cost_info.getCostCount(element_idx);
                                skill_request_cost_info.addCost(element_idx, -field_cost_count);

                                skill_request_cost_infos[field_idx] = skill_request_cost_info;
                            }

                            if (skill_request_cost_info.m_CostCountUsing >= 0 &&
                                skill_request_cost_info.m_CostCountUsing < min_skill_request_cost_count)
                            {
                                min_skill_request_cost_count = skill_request_cost_info.m_CostCountUsing;
                            }
                        }
                    }
                }

                for (int boost_idx = 0; boost_idx <= 1; boost_idx++)
                {
                    bool is_boost = (boost_idx == 0) ? true : false; // BOOST場を優先
                    for (int field_idx = 0; field_idx < panel_info.m_FieldElements.Length; field_idx++)
                    {
                        if (panel_info.m_IsBoosts[field_idx] == is_boost)
                        {
                            CostInfo field_cost_info = panel_info.m_FieldElements[field_idx];
                            if (field_cost_info.m_CostCountUsing < field_cost_info.m_CostCountMax)
                            {
                                CostInfo skill_request_cost_info = skill_request_cost_infos[field_idx];
                                if (skill_request_cost_info != null &&
                                    skill_request_cost_info.m_CostCountUsing == min_skill_request_cost_count
                                    )
                                {
                                    if (work_field_cost_empty_count[field_idx] >= skill_request_cost_info.m_CostCountUsing)    // スキルを成立させるために場に十分に空きがあるかどうか
                                    {
                                        // 必要枚数が一番多い属性を優先的に出す
                                        for (int element_count = 5; element_count >= 1; element_count--)
                                        {
                                            for (MasterDataDefineLabel.ElementType element_idx = MasterDataDefineLabel.ElementType.NONE + 1; element_idx < MasterDataDefineLabel.ElementType.MAX; element_idx++)
                                            {
                                                if (skill_request_cost_info.getCostCount(element_idx) == element_count)
                                                {
                                                    for (int hand_idx = 0; hand_idx < panel_info.m_HandElements.Length; hand_idx++)
                                                    {
                                                        int wrk_hand_idx = (m_HandIndex + hand_idx) % panel_info.m_HandElements.Length;
                                                        if (panel_info.m_HandElements[wrk_hand_idx] == element_idx)
                                                        {
                                                            dest_hand_index  = wrk_hand_idx;
                                                            dest_field_index = field_idx;
                                                            return;
                                                        }
                                                    }
                                                }
                                            }
                                        }

                                        // パネルを置ける領域数を、このスキルが使用する予定数分減らしておく
                                        {
                                            int max_reserve_cost_count = 5 - skill_order_idx;   // 優先順位が高いスキルほど多く予約できる
                                            if (max_reserve_cost_count > 0)
                                            {
                                                int reserve_cost_count = skill_cost_info.m_CostCountUsing;
                                                if (reserve_cost_count > max_reserve_cost_count)
                                                {
                                                    reserve_cost_count = max_reserve_cost_count;
                                                }
                                                work_field_cost_empty_count[field_idx] -= reserve_cost_count;
                                            }
                                        }

                                        // 二重ループから一気に抜ける
                                        boost_idx = 2;
                                        field_idx = panel_info.m_FieldElements.Length;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        // 置ける属性が無かった場合、優先順位が低い場(ブースト以外優先、右側優先)に適当なパネルを置く
        for (int boost_idx = 0; boost_idx <= 1; boost_idx++)
        {
            bool is_boost = (boost_idx == 0) ? false : true; // BOOST以外を優先
            for (int field_idx = panel_info.m_FieldElements.Length - 1; field_idx >= 0; field_idx--)
            {
                if (panel_info.m_IsBoosts[field_idx] == is_boost)
                {
                    CostInfo field_cost_info = panel_info.m_FieldElements[field_idx];
                    if (field_cost_info.m_CostCountUsing < field_cost_info.m_CostCountMax)
                    {
                        dest_hand_index  = m_HandIndex;
                        dest_field_index = field_idx;
                        return;
                    }
                }
            }
        }
    }
Пример #18
0
        /// <summary>
        /// スキル効果を適用
        /// </summary>
        /// <param name="skill_type"></param>
        /// <param name="passive_skill_master"></param>
        /// <param name="member_index"></param>
        /// <param name="is_link_member"></param>
        /// <param name="dest_param_ai"></param>
        public void applySkill(MasterDataDefineLabel.AutoPlaySkillType skill_type, GlobalDefine.PartyCharaIndex member_index, bool is_link_member)
        {
            CostInfo cost_info         = null;
            int      work_panel_plus   = 0;
            bool     work_is_resurrect = false;
            int      skip_on_hands     = 0;

            switch (skill_type)
            {
            case MasterDataDefineLabel.AutoPlaySkillType.SKILL1_SELF:
                cost_info = _getActiveSkillCost(member_index, 0);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL1_LEADER:
                cost_info = _getActiveSkillCost(GlobalDefine.PartyCharaIndex.LEADER, 0);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL2_SELF:
                cost_info = _getActiveSkillCost(member_index, 1);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL2_LEADER:
                cost_info = _getActiveSkillCost(GlobalDefine.PartyCharaIndex.LEADER, 1);
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_NAUGHT:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_FIRE:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_WATER:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_LIGHT:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_DARK:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_WIND:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_HEAL:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL);
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.TRY_RESURRECT:
                work_is_resurrect = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL1_SELF:
                m_SkipOnSkillFormeds[0, (int)member_index] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL1_LEADER:
                m_SkipOnSkillFormeds[0, (int)GlobalDefine.PartyCharaIndex.LEADER] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL2_SELF:
                m_SkipOnSkillFormeds[1, (int)member_index] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL2_LEADER:
                m_SkipOnSkillFormeds[1, (int)GlobalDefine.PartyCharaIndex.LEADER] = true;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_1:
                skip_on_hands = 1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_2:
                skip_on_hands = 2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_3:
                skip_on_hands = 3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_4:
                skip_on_hands = 4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_5:
                skip_on_hands = 5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_6:
                skip_on_hands = 6;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_1:
                work_panel_plus = 1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_2:
                work_panel_plus = 2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_3:
                work_panel_plus = 3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_4:
                work_panel_plus = 4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_5:
                work_panel_plus = 5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_6:
                work_panel_plus = 6;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_7:
                work_panel_plus = 7;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_8:
                work_panel_plus = 8;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_9:
                work_panel_plus = 9;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_10:
                work_panel_plus = 10;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_1:
                work_panel_plus = -1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_2:
                work_panel_plus = -2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_3:
                work_panel_plus = -3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_4:
                work_panel_plus = -4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_5:
                work_panel_plus = -5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_6:
                work_panel_plus = -6;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_7:
                work_panel_plus = -7;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_8:
                work_panel_plus = -8;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_9:
                work_panel_plus = -9;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_10:
                work_panel_plus = -10;
                break;
            }

            if (cost_info != null)
            {
                int link_idx = (is_link_member ? 1 : 0);
                for (int skill_idx = 0; skill_idx < m_SkillCosts.GetLength(2); skill_idx++)
                {
                    if (m_SkillCosts[link_idx, (int)member_index, skill_idx] == null)
                    {
                        SkillCost skill_cost = new SkillCost();
                        skill_cost.m_CostInfo = cost_info;
                        m_SkillCosts[link_idx, (int)member_index, skill_idx] = skill_cost;
                        break;
                    }
                }
            }

            m_PanelPutCount += work_panel_plus;

            m_IsTryResurrect |= work_is_resurrect;

            if (m_SkipOnHands == 0)
            {
                m_SkipOnHands = skip_on_hands;
            }
        }
 /// <summary>
 /// Updates existing cost info
 /// </summary>
 /// <param name="updatedCostInfo">updated cost info</param>
 public void UpdateItem(CostInfo updatedCostInfo)
 {
     _costInfoService.UpdateCostInfo(updatedCostInfo);
 }
Пример #20
0
 public TransactionInfo(string hash, CostInfo cost, bool success)
 {
     Hash    = hash;
     Cost    = cost;
     Success = success;
 }
 /// <summary>
 /// Creates new cost info object in databse
 /// </summary>
 /// <param name="costInfo"></param>
 public Guid CreateItem(CostInfo costInfo)
 {
     return(_costInfoService.CreateCostInfo(costInfo));
 }