Пример #1
0
    public void updateCalcedProperty(TowerTemplate tt)
    {
        TowerBase           tb       = tt.tbase;
        TowerBattleProperty property = TowerBattleProperty.genTowerBattleProperty(tt);

        _property.setName(tb.tname);

        if (tb.atkType == eAtkType.MELLE_AOE || tb.atkType == eAtkType.MELLE_POINT)
        {
            string s = "Melee";
            _property.setAtkRange(s);
        }
        else
        {
            string s = string.Format("{0:f1}", property.atkRange * 0.001f);
            _property.setAtkRange(s);
        }

        int atkInteval    = tb.towerModel.atkInterval;
        int actualInteval = (int)(atkInteval / (1.0f + property.atkSpd * 0.01f));

        string ss = string.Format("{0:f1}", actualInteval * 0.001f);

        _property.setAtkSpd(ss, property.atkSpd + "");

        _property.setHit(tb.mingzhong);
        //string s =  string s =string.Format("{0:f2}", x);

        _property.setDamage(property.mainAtk, property.extraAtk);
        _property.setSkill(property.originSkills);
    }
Пример #2
0
    public void init(TowerTemplate towerTemplate, Vector2Int posInCell)
    {
        if (towerTemplate != null)
        {
            this.tt          = towerTemplate;
            this.atkType     = towerTemplate.tbase.atkType;
            this.mainAtk     = towerTemplate.tbase.mainAtk;
            this.extraAtk    = towerTemplate.tbase.extraAtk;
            this.atkInterval = towerTemplate.tbase.towerModel.atkInterval;
            this.atkRange    = towerTemplate.tbase.towerModel.atkRange;
            this.atkPreTime  = towerTemplate.tbase.towerModel.atkPreTime;
            this.mingzhong   = towerTemplate.tbase.mingzhong;
            //this.tt = towerTemplate;

            for (int i = 0; i < towerTemplate.tbase.skills.Count; i++)
            {
                skillComponent.skills [i]        = new SkillState(towerTemplate.tbase.skills[i].skillId, towerTemplate.tbase.skills[i].skillLevel);
                skillComponent.skillCoolDown [i] = 3000;
            }
        }
        this.posInCell = posInCell;
        Vector2Int posLt = MapManager.getInstance().CellToWorld(posInCell.y, posInCell.x);

        //posLt += new Vector2Int (MapManager.TILE_WIDTH * 5,-MapManager.TILE_HEIGHT * 5);
        posXInt     = posLt.x;
        posYInt     = posLt.y;
        atkCoolDown = 1000;
        atkBhvTimer = 0;

        initialized = true;
    }
        public HangingPointLoadCompose(int i, int j, float[,] xLoad, float[,] yLoad, float[,] zLoad, string grp, string linkXY, string linkZ,
                                       HangingPointSettingParas hpSetting, TowerTemplate template, List <StruCalsDicGroup> dicGrps, string pos = null)
        {
            iIndex = i;
            jIndex = j;

            xLineLoad = xLoad;
            yLineLoad = yLoad;
            zLineLoad = zLoad;

            xyLink = linkXY;
            zLink  = linkZ;

            if (pos == null)
            {
                isTensionTower = false;
            }
            else
            {
                isTensionTower = true;
                position       = pos;
            }

            group = grp;

            hpPointsParas = hpSetting;
            towerTemplate = template;

            wireType = towerTemplate.Wires[i];
            wd       = towerTemplate.WorkConditionCombos[j];

            dicGroupOptions = dicGrps;
        }
        public void TestMethod1_NewTemplateReadAndSave()
        {
            var openFileDialog = new Microsoft.Win32.OpenFileDialog()
            {
                Filter = "DLL Files (*.dll)|*.dll"
            };

            if (openFileDialog.ShowDialog() != true)
            {
                return;
            }

            string datPath = openFileDialog.FileName.Substring(0, openFileDialog.FileName.Length - 3) + "dat";

            DES.DesDecrypt(openFileDialog.FileName, datPath, "12345678");


            TowerTemplateReader templateReader = new TowerTemplateReader(TowerTypeEnum.LineTower);
            TowerTemplate       template       = templateReader.Read(datPath);


            string newDatPath = openFileDialog.FileName.Substring(0, openFileDialog.FileName.Length - 4) + "New.dat";
            NewTowerTemplateReader newTemplateReader = new NewTowerTemplateReader(TowerTypeEnum.LineTower);

            newTemplateReader.Save(newDatPath, template);

            TowerTemplate newTemplate = newTemplateReader.Read(newDatPath);
        }
Пример #5
0
        public void ConvertTemplate()
        {
            foreach (var item in Templates)
            {
                string datPath = item.Name.Substring(0, item.Name.Length - 3) + "dat";
                DES.DesDecrypt(item.Name, datPath, "12345678");

                TowerTemplateReader templateReader = new TowerTemplateReader(TowerTypeStringConvert.TowerStringToType(item.TowerType));
                TowerTemplate       template       = templateReader.Read(datPath);

                string dirPath      = datPath.Substring(0, datPath.LastIndexOf('\\'));
                string templateName = datPath.Substring(datPath.LastIndexOf('\\') + 1);

                string newDirPath = dirPath + "\\新模板\\";

                if (!Directory.Exists(newDirPath))
                {
                    Directory.CreateDirectory(newDirPath);
                }

                string newTemplatePath = newDirPath + templateName;

                NewTowerTemplateReader newTemplateReader = new NewTowerTemplateReader(TowerTypeStringConvert.TowerStringToType(item.TowerType));
                newTemplateReader.Save(newTemplatePath, template);
            }
        }
Пример #6
0
//	void RenderComponents(int index, GObject obj){
//		GComponent item = obj.asCom;
//		item.visible = true;
//		GLoader icon = item.GetChild ("icon").asLoader;
//
//		TowerComponent tc = PlayerData.getInstance ().bagComponents [index];
//		if (tc == null) {
//			icon.url = "Equips/empty";
//		} else {
//			icon.url = "Equips/" + tc.cid;
//		}
//		item.onTouchEnd.Add (delegate() {
//			GameManager.getInstance().showDetailAmplifier(tc.cdesp);
//		});
//		item.draggable = true;
//
//		item.onDragStart.Set(delegate(EventContext context) {
//			context.PreventDefault();
//			DragDropManager.inst.StartDrag(item, "Equips/"+tc.cid, (object)(index), (int)context.data);
//			startDragBagItem(index);
//		});
//
//		//string name = PlayerData.getInstance ().bagComponents [index].cname;
//	}

//	void startDragBagItem(int idx){
//		beforeDragPos = tComponents.LocalToGlobal(tComponents.GetChildAt(idx).position);
//		isDropOnSlot = false;
//		//tComponents.GetChildAt(index).visible = false;
//		for (int i = idx+1; i < tComponents.numItems; i++) {
//			Vector2 startPos = tComponents.GetChildAt (i).position;
//			Vector2 endPos = tComponents.GetChildAt (i-1).position;
//			tComponents.GetChildAt (i).TweenMove (endPos,0.3f);
//		}
//		tComponents.RemoveChildAt(idx);
//		nowDragIdx = idx;
//		tComponents.EnsureBoundsCorrect ();
//	}


    void clickTower(EventContext context)
    {
        GComponent item = (GComponent)context.data;
        int        idx  = towers.GetChildIndex(item);

        towerIdx = idx;
        TowerTemplate tt = PlayerData.getInstance().ownedTowers[idx];

        for (int i = 0; i < 4; i++)
        {
            components [i].visible = true;
            if (tt.components [i] == null)
            {
                components[i].setInfo(null);
            }
            else
            {
                components[i].setInfo(tt.components[i]);
            }
        }
        _property.visible = true;
        updateCalcedProperty(tt);

        if (PlayerData.getInstance().guideStage == 14)
        {
            GuideManager.getInstance().showGuideCloseMenu();
            PlayerData.getInstance().guideStage = 15;
        }
    }
Пример #7
0
    public void gainTowerBase(string tid)
    {
        TowerBase     tb = GameStaticData.getInstance().getTowerBase(tid);
        TowerTemplate tt = new TowerTemplate();

        tt.tbase = tb;
        ownedTowers.Add(tt);
    }
Пример #8
0
        public HangingPointLoadComposeBase(int i, int j, string orient, float[,] xLoad, float[,] yLoad, float[,] zLoad, string group, string link,
                                           List <HangingPointParas> pointsParas, HangingPointSettingParas raios, TowerTemplate template, List <StruCalsDicGroup> dicGrps)
        {
            iIndex      = i;
            jIndex      = j;
            orientation = orient;

            xLineLoad = xLoad;
            yLineLoad = yLoad;
            zLineLoad = zLoad;

            if (orient == "X")
            {
                lineLoad = xLoad;
            }
            else if (orient == "Y")
            {
                lineLoad = yLoad;
            }
            else
            {
                lineLoad = zLoad;
            }

            ratioParas    = raios;
            towerTemplate = template;

            wireType = towerTemplate.Wires[i];
            wd       = towerTemplate.WorkConditionCombos[j];

            StruCalsDicGroup dicGroup = new StruCalsDicGroup();

            if (link.Contains("常规"))
            {
                pointParas = pointsParas.Where(item => item.WireType == wireType).First();

                string vStr = pointParas.StringType.Contains("V") ? "V串" : pointParas.StringType;
                dicGroup = dicGrps.Where(item => item.Group == group && item.FixedType == vStr && item.Link == link).First();
            }
            else if (link.Contains("转向"))
            {
                pointParas = pointsParas.Where(item => item.WireType == wireType).First();
                dicGroup   = dicGrps.Where(item => item.Group == group && item.Link == link).First();
            }
            else
            {
                string wCC   = template.WorkConditionCombos[jIndex].WorkConditionCode;
                string array = wCC.Substring(wCC.Length - 1);

                pointParas = pointsParas.Where(item => item.WireType == wireType && item.Array != null && item.Array.Contains(array)).First();
                dicGroup   = dicGrps.Where(item => item.Group == group && item.Link == link).First();
            }

            option         = dicGroup.Options.Where(item => item.Num == pointParas.PointNum).First();
            dicComposeInfo = option.ComposrInfos.Where(item => item.Orientation == orientation).First().PointCompose;
        }
        public static List <WorkConditionComboSpec> ConvertTemplateToSpec(TowerTemplate template, bool isCalculation = false)
        {
            List <WorkConditionComboSpec> listSpec = new List <WorkConditionComboSpec>();

            if (template == null || template.WorkConditionCombos == null)
            {
                return(listSpec);
            }

            foreach (var item in template.WorkConditionCombos)
            {
                WorkConditionComboSpec spec = new WorkConditionComboSpec();

                spec.Index             = item.Index;
                spec.IsCalculate       = item.IsCalculate;
                spec.WorkConditionCode = isCalculation ? item.WorkConditionCode: WorkConditonSetReader.ConvertWorkConditionCode(template.TowerType, item.WorkConditionCode, conditionSet);//

                if (item.TensionAngleCode != null)
                {
                    spec.TensionAngleCode = isCalculation ? item.TensionAngleCode: WorkConditonSetReader.ConvertTensionAngleCode(item.TensionAngleCode);
                }
                if (item.VertialLoadCode != null)
                {
                    spec.VertialLoadCode = isCalculation ? item.VertialLoadCode : WorkConditonSetReader.ConvertVertialLoadCode(item.VertialLoadCode);
                }
                spec.WindDirectionCode = item.WindDirectionCode;
                spec.WorkCode          = item.WorkCode;

                for (int i = 1; i <= item.WireIndexCodes.Count; i++)
                {
                    Type         specType = spec.GetType();
                    PropertyInfo specPro  = specType.GetProperty("Wire" + i.ToString(), BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public);
                    if (specPro != null)
                    {
                        if (isCalculation)
                        {
                            specPro.SetValue(spec, item.WireIndexCodes[i - 1].ToString());
                        }
                        else
                        {
                            string value = WorkConditonSetReader.ConvertWireCodes(template.TowerType, i, item.WorkConditionCode, item.WireIndexCodes, template.WorkConditongs);
                            specPro.SetValue(spec, value);
                        }
                    }
                }

                spec.WorkComment = item.WorkComment;

                listSpec.Add(spec);
            }

            return(listSpec);
        }
        public static void ConvertSpecToWorkCondition(TowerTemplate template, List <WorkConditionComboSpec> workConditionSpecs, bool isCalculation = false)
        {
            List <WorkConditionCombo> workConditions = new List <WorkConditionCombo>();

            WorkConditionComboSpec item;

            //foreach (var item in workConditionSpecs)
            for (int index = 0; index < workConditionSpecs.Count; index++)
            {
                item = workConditionSpecs[index];
                WorkConditionCombo wcc = new WorkConditionCombo();

                wcc.Index             = item.Index;
                wcc.IsCalculate       = item.IsCalculate;
                wcc.WorkConditionCode = isCalculation? template.WorkConditionCombos[index].WorkConditionCode: item.WorkConditionCode;
                if (item.TensionAngleCode != null)
                {
                    wcc.TensionAngleCode = isCalculation ? template.WorkConditionCombos[index].TensionAngleCode : item.TensionAngleCode;
                }
                if (item.VertialLoadCode != null)
                {
                    wcc.VertialLoadCode = isCalculation ? template.WorkConditionCombos[index].VertialLoadCode : item.VertialLoadCode;
                }
                wcc.WindDirectionCode = item.WindDirectionCode;
                wcc.WorkCode          = item.WorkCode;

                //int wireIndexCodesNum = template.WorkConditionCombos[0].WireIndexCodes.Count;
                int wireIndexCodesNum = template.Wires.Count;
                wcc.WireIndexCodes = new List <int>();

                for (int i = 1; i <= wireIndexCodesNum; i++)
                {
                    Type         itemType = item.GetType();
                    PropertyInfo itemPro  = itemType.GetProperty("Wire" + i.ToString(), BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public);
                    if (itemPro != null)
                    {
                        wcc.WireIndexCodes.Add(isCalculation ? template.WorkConditionCombos[index].WireIndexCodes[i - 1]:Convert.ToInt32(itemPro.GetValue(item, null)));
                    }
                }

                wcc.WorkComment = item.WorkComment;

                workConditions.Add(wcc);
            }

            template.WorkConditionCombos = workConditions;
        }
Пример #11
0
//	IEnumerator moveIcon(Vector2 moveTo){
//		while (true) {
//			movingIcon.xy = Vector2.Lerp (movingIcon.xy, moveTo, 0.3f);
//			yield return null;
//			if ((movingIcon.xy - moveTo).magnitude < 1f) {
//				yield break;
//			}
//		}
//	}
//	public void unequip (int componentIdx){
//		if (componentIdx < 0||componentIdx>=4)
//			return;
//		TowerTemplate tt = PlayerData.getInstance ().ownedTowers [towerIdx];
//		TowerComponent equipped = tt.components [componentIdx];
//		if (equipped == null)
//			return;
//		PlayerData.getInstance ().bagComponents.Add (equipped);
//		tComponents.numItems = PlayerData.getInstance ().bagComponents.Count;
//		components [componentIdx].setInfo (null);
//		tt.components [componentIdx] = null;
//
//
//		movingIcon.url = "Equips/" + equipped.cid;
//		movingIcon.xy = components [componentIdx].xy;
//		movingIcon.visible = true;
//		tComponents.GetChildAt (tComponents.numItems-1).visible = false;
//		tComponents.EnsureBoundsCorrect ();
//		movingIcon.TweenMove(this.GlobalToLocal(tComponents.LocalToGlobal(tComponents.GetChildAt(tComponents.numItems-1).xy)),0.3f).OnStart(delegate(GTweener tweener) {
//
//		}).OnUpdate(delegate(GTweener tweener) {
//			movingIcon.InvalidateBatchingState();
//		}).OnComplete(delegate(GTweener tweener) {
//			movingIcon.visible = false;
//			//PlayerData.getInstance ().bagComponents [bagSlot] = equipped;
//			tComponents.GetChildAt (tComponents.numItems-1).visible = true;
//		});
//
//		updateCalcedProperty (tt);
//
//	}

    public void unequip(int componentIdx)
    {
        if (componentIdx < 0 || componentIdx >= 4)
        {
            return;
        }
        TowerTemplate  tt       = PlayerData.getInstance().ownedTowers [towerIdx];
        TowerComponent equipped = tt.components [componentIdx];

        if (equipped == null)
        {
            return;
        }
        PlayerData.getInstance().bagComponents.Add(equipped);
        components [componentIdx].setInfo(null);
        tt.components [componentIdx] = null;
        updateCalcedProperty(tt);
    }
Пример #12
0
    public static Tower createTower(int idx, Vector2Int posInCell, Transform target)
    {
        TowerTemplate tt     = PlayerData.getInstance().getTowerTemplate(idx);
        GameObject    prefab = Resources.Load("Prefabs/tower_base") as GameObject;

        //GameObject viewPrefab = Resources.Load ("Prefabs/towers/"+tt.tbase.tid) as GameObject;
        AnimatorOverrideController animCtrl = Resources.Load("OverrideAnimCtrl/towers/" + tt.tbase.tid) as AnimatorOverrideController;

        GameObject o = GameObject.Instantiate(prefab, target);

        Tower t = o.GetComponent <Tower> ();

        t.GetComponentInChildren <Animator>().runtimeAnimatorController = animCtrl;

        t.init(tt, posInCell);
        BattleManager.getInstance().addTower(t);
        return(t);
    }
Пример #13
0
        public LoadComposeBase(StruCalseBaseParas para, StruLineParas[] lineParas, HangingPointSettingParas hpParas, TowerTemplate template, string tablePath)
        {
            ProcessString  = new List <string>();
            Process2String = new List <string>();

            Paras          = para;
            LineParasArr   = lineParas;
            HPSettingParas = hpParas;
            Template       = template;

            DicGroup = StruLoadComposeDicReader.Read(GetDicPath());
            LoadDics = StruLoadComposeDicReader.DicRead(GetLoadDicPath());

            wireNum          = Template.Wires.Count;
            earthWireNum     = Template.Wires.Where(item => item.Contains("地")).Count();
            workConditionNum = Template.WorkConditongs.Count;

            DataSet ds = ExcelUtils.ReadExcel(tablePath);

            ReadWorkCondition(ds);
            ReadElectricLoad(ds);
        }
        protected void ShowTemplateEditWindow(TowerTemplateStorageInfo templateInfo, bool isReadOnly)
        {
            TowerTemplate template = new TowerTemplate();

            //templateInfo 不是null,需要从project中读取模板
            if (templateInfo != null)
            {
                var proInstance = ProjectUtils.GetInstance();

                string path = isReadOnly ? proInstance.GetGeneralTowerTemplatePath(templateInfo.Name, templateInfo.TowerType)
                    : proInstance.GetProjectlTowerTemplatePath(templateInfo.Name, templateInfo.TowerType);

                NewTowerTemplateReader newTemplateReader = new NewTowerTemplateReader(TowerTypeStringConvert.TowerStringToType(templateInfo.TowerType));
                template = newTemplateReader.Read(path);
            }

            StruTemplateEditViewModel model = ViewModelSource.Create(() => new StruTemplateEditViewModel(template, isReadOnly));

            model.CloseEditTemplateWindowEvent += CloseTemplateEditWindow;
            editWindow             = new StruTemplateEditWindow();
            editWindow.DataContext = model;
            editWindow.ShowDialog();
        }
        public void Save(string path, TowerTemplate template)
        {
            List <string> strs = new List <string>();

            strs.Add("线条://“地”即为地线,“导”即为导线,跳线随导线,且“左”,“右”具有实际意义");

            string wireStr = "";

            foreach (var wire in template.Wires)
            {
                wireStr += wire + "  ";
            }
            strs.Add(wireStr);

            strs.Add("气象条件://大风为第一要素工况,其余随意");
            string wordCdStr = "";

            for (int i = 1; i <= template.WorkConditongs.Count; i++)
            {
                wordCdStr += i.ToString() + "." + template.WorkConditongs[i] + "  ";
            }
            strs.Add(wordCdStr);

            strs.Add("计算工况");
            foreach (var combo in template.WorkConditionCombos)
            {
                EncodeWorkCondition(out string comboStr, combo);
                strs.Add(comboStr);
            }

            if (File.Exists(path))
            {
                File.Delete(path);
            }

            FileUtils.TextSaveByLine(path, strs);
        }
Пример #16
0
    public void updateView(TowerTemplate tt)
    {
        TowerBattleProperty property = TowerBattleProperty.genTowerBattleProperty(tt);

        TowerBase tb = tt.tbase;

        _name.text = tb.tname;

        _cost1.text = tb.cost [0] + "";
        _cost2.text = tb.cost [1] + "";
        _cost3.text = tb.cost [2] + "";

        if (tb.atkType == eAtkType.MELLE_AOE || tb.atkType == eAtkType.MELLE_POINT)
        {
            string s = "Melee";
            _range.text = s;
        }
        else
        {
            string s = getAtkRangeTxt(property.atkRange);
            _range.text = s;
        }

        int atkInteval = tb.towerModel.atkInterval;

        _spd.text = getAtkSpdTxt(atkInteval);



        setHit(tb.mingzhong);
        //setAtkRange(tb.towerModel.atkRange+"");
        //setAtkSpd(tb.towerModel.atkInterval+"");

        setDamage(property.mainAtk, property.extraAtk);
        setSkill(property.originSkills);
    }
Пример #17
0
//	public void changeComponent (int componentIdx, int bagSlot){
//		isDropOnSlot = true;
//		if (towerIdx < 0)
//			return;
//		TowerTemplate tt = PlayerData.getInstance ().ownedTowers [towerIdx];
//		TowerComponent toEquip = PlayerData.getInstance ().bagComponents [bagSlot];
//		TowerComponent equipped = tt.components [componentIdx];
//
//		tt.components [componentIdx] = toEquip;
//		components [componentIdx].setInfo (tt.components[componentIdx]);
//
//		if (equipped != null) {
//
//			movingIcon.url = "Equips/" + equipped.cid;
//			movingIcon.xy = components [componentIdx].xy;
//			movingIcon.visible = true;
//
//
//			PlayerData.getInstance ().bagComponents [bagSlot] = equipped;
//			tComponents.numItems = PlayerData.getInstance ().bagComponents.Count;
//			tComponents.GetChildAt (bagSlot).visible = false;
//			tComponents.EnsureBoundsCorrect ();
//			for (int i = tComponents.numItems-1; i > bagSlot; i--) {
//				Vector2 startPos = tComponents.GetChildAt (i - 1).position;
//				Vector2 endPos = tComponents.GetChildAt (i).position;
//				tComponents.GetChildAt (i).xy = startPos;
//				tComponents.GetChildAt (i).TweenMove (endPos,0.3f);
//			}
//
//			movingIcon.TweenMove(this.GlobalToLocal(beforeDragPos),0.3f).OnStart(delegate(GTweener tweener) {
//
//			}).OnUpdate(delegate(GTweener tweener) {
//				movingIcon.InvalidateBatchingState();
//			}).OnComplete(delegate(GTweener tweener) {
//				movingIcon.visible = false;
//				//PlayerData.getInstance ().bagComponents [bagSlot] = equipped;
//				tComponents.GetChildAt (bagSlot).visible = true;
//			});
//		} else {
//			PlayerData.getInstance ().bagComponents.RemoveAt (bagSlot);
//			tComponents.numItems = PlayerData.getInstance ().bagComponents.Count;
//		}
//		updateCalcedProperty (tt);
//	}

    public void changeComponent(int componentIdx, int bagSlot)
    {
        isDropOnSlot = true;
        if (towerIdx < 0)
        {
            return;
        }
        TowerTemplate  tt       = PlayerData.getInstance().ownedTowers [towerIdx];
        TowerComponent toEquip  = PlayerData.getInstance().bagComponents [bagSlot];
        TowerComponent equipped = tt.components [componentIdx];

        tt.components [componentIdx] = toEquip;
        components [componentIdx].setInfo(tt.components[componentIdx]);

        if (equipped != null)
        {
            PlayerData.getInstance().bagComponents[bagSlot] = equipped;
        }
        else
        {
            PlayerData.getInstance().bagComponents.RemoveAt(bagSlot);
        }
        updateCalcedProperty(tt);
    }
Пример #18
0
    public static TowerBattleProperty genTowerBattleProperty(TowerTemplate tt)
    {
        TowerBase             tb         = tt.tbase;
        List <TowerComponent> components = new List <TowerComponent>();

        foreach (TowerComponent tc in tt.components)
        {
            if (tc == null || tc.cid == null)
            {
                continue;
            }
            components.Add(tc);
        }



        int atkRange = tb.towerModel.atkRange;
        int atkSpeed = tb.atkSpd;


        List <AtkInfo> extraAtk = new List <AtkInfo> ();

        AtkInfo mainAtk = new AtkInfo(tb.mainAtk);

        for (int i = 0; i < tb.extraAtk.Count; i++)
        {
            extraAtk.Add(new AtkInfo(tb.extraAtk[i]));
        }

        List <SkillState> skills = new List <SkillState> ();

        skills.AddRange(tb.skills);

        //List<SkillState> extraSkills = new List<SkillState> ();

        foreach (TowerComponent tc in components)
        {
            foreach (TowerComponentEffect effect in tc.effects)
            {
                switch (effect.type)
                {
                case eTowerComponentEffectType.ATK_CHANGE:
                    mainAtk.damage += effect.x;
                    break;

                case eTowerComponentEffectType.EXTRA_ABILITY:
//
                    string     skillId    = effect.extra;
                    int        skillLevel = effect.x;
                    TowerSkill ts         = GameStaticData.getInstance().getTowerSkillInfo(skillId);

                    {
                        bool found = false;
                        for (int i = 0; i < skills.Count; i++)
                        {
                            if (skills [i].skillId == skillId)
                            {
                                found = true;
                                skills [i].skillLevel += skillLevel;
                                if (skills [i].skillLevel > ts.maxLv)
                                {
                                    skills [i].skillLevel = ts.maxLv;
                                }
                                break;
                            }
                        }
                        if (!found)
                        {
                            SkillState skill = new SkillState();
                            skill.skillId    = skillId;
                            skill.skillLevel = skillLevel;
                            skills.Add(skill);
                        }
                    }
                    break;

                case eTowerComponentEffectType.ATK_SPD_CHANGE:
                    atkSpeed += effect.x;
                    break;

                case eTowerComponentEffectType.ATK_RANGE_CHANGE:
                    atkRange += effect.x;
                    break;

                case eTowerComponentEffectType.EXTRA_ATK:
                    if (mainAtk.property == (eProperty)effect.x)
                    {
                        mainAtk.damage += effect.y;
                    }
                    else
                    {
                        bool found = false;
                        for (int i = 0; i < extraAtk.Count; i++)
                        {
                            if (extraAtk [i].property == (eProperty)effect.x)
                            {
                                found = true;
                                extraAtk [i].damage += effect.y;
                                break;
                            }
                        }
                        if (!found)
                        {
                            extraAtk.Add(new AtkInfo(effect.x, effect.y));
                        }
                    }
                    break;

                default:
                    break;
                }
            }
        }
        TowerBattleProperty res = new TowerBattleProperty();

        res.atkRange     = atkRange;
        res.atkSpd       = atkSpeed;
        res.mainAtk      = mainAtk;
        res.extraAtk     = extraAtk;
        res.originSkills = skills;
        return(res);
    }
        public StruTemplateEditViewModel(TowerTemplate template,  bool isReadOnly = true)
        {
            oldName = template.Name;
            oldType = template.TowerType;

            _template = template;
            IsReadOnly = isReadOnly;

            #region 导地线的初始化
            TemplateWire wire = new TemplateWire();
            wire.Wire = new string[16];

            List<Column> wireColumns = new List<Column>() {
                new HeaderColumn() {
                    Settings = SettingsType.Binding,
                    FieldName = "Name",
                    Header = "序号",
                    AllowEditing = (!isReadOnly).ToString(),
                },
            };

            if (template.Wires != null)
            {
                for(int i = 0; i < template.Wires.Count; i++)
                {
                    WireNum++;
                    wire.Wire[i] = template.Wires[i];

                    wireColumns.Add(new HeaderColumn() {
                        Settings = SettingsType.Binding,
                        FieldName = "Wire[" + i.ToString() + "]",
                        Header = (i + 1).ToString(),
                        AllowEditing = (!isReadOnly).ToString(),
                    });

                    SetWireVisbility(WireNum);
                }
            }

            Wires = new ObservableCollection<TemplateWire>();
            Wires.Add(wire);

            WireColumns = new ObservableCollection<Column>(wireColumns);

            #endregion


            #region 工况的初始化
            TemplateWorkCondition workCondition = new TemplateWorkCondition();
            workCondition.WorkCondition = new string[16];

            List<Column> workConditionColumns = new List<Column>() {
                new HeaderColumn() {
                    Settings = SettingsType.Binding,
                    FieldName = "Name",
                    Header = "序号",
                    AllowEditing = (!isReadOnly).ToString(),
                },
            };

            if (template.WorkConditongs != null)
            {
                for (int i = 0; i < template.WorkConditongs.Count; i++)
                {
                    WorkConditionNum++;
                    workCondition.WorkCondition[i] = template.WorkConditongs[i+1];

                    workConditionColumns.Add(new HeaderColumn()
                    {
                        Settings = SettingsType.Binding,
                        FieldName = "WorkCondition[" + i.ToString() + "]",
                        Header = (i + 1).ToString(),
                        AllowEditing = (!isReadOnly).ToString(),
                    });
                }
            }

            WorkConditions = new ObservableCollection<TemplateWorkCondition>();
            WorkConditions.Add(workCondition);

            WorkConditionColumns = new ObservableCollection<Column>(workConditionColumns);

            #endregion


            #region 工况的初始化

            WorkConditionCombos = new ObservableCollection<WorkConditionComboSpec>(StruCalsParasCompose.ConvertTemplateToSpec(template));

            //List<Column> workConditionComboColumns = new List<Column>();
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "Index",
            //    Header = "序号",
            //    Width = "*",
            //    AllowEditing = (!isReadOnly).ToString(),
            //});
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "IsCalculate",
            //    Header = "选择与否",
            //    Width = "2*",
            //    AllowEditing = (!isReadOnly).ToString(),
            //});
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "WorkConditionCode",
            //    Header = "工况",
            //    Width = "*",
            //    AllowEditing = (!isReadOnly).ToString(),

            //});
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "TensionAngleCode",
            //    Header = "张力角",
            //    Width = "*",
            //    AllowEditing = (!isReadOnly).ToString(),
            //    Visible = "{Binding IsTensionAngleVisible}"
            //});
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "VertialLoadCode",
            //    Header = "垂直载荷",
            //    Width = "*",
            //    AllowEditing = (!isReadOnly).ToString(),
            //    Visible = "{Binding IsVertialLoadCodeVisible}"
            //});
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "WindDirectionCode",
            //    Header = "风向",
            //    Width = "*",
            //    AllowEditing = (!isReadOnly).ToString(),
            //});
            //for (int i = 0; i < template.Wires.Count; i++)
            //{
            //    workConditionComboColumns.Add(new HeaderColumn() {
            //        Settings = SettingsType.Binding,
            //        FieldName = "Wire" + (i + 1).ToString(),
            //        Header = template.Wires[i],
            //        Width = "*",
            //        AllowEditing = (!isReadOnly).ToString(),
            //    });
            //}
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "WorkCode",
            //    Header = "工况代码",
            //    Width = "*",
            //    AllowEditing = (!isReadOnly).ToString(),
            //});
            //workConditionComboColumns.Add(new HeaderColumn() {
            //    Settings = SettingsType.Binding,
            //    FieldName = "WorkComment",
            //    Header = "注释",
            //    Width = "6*",
            //    AllowEditing = (!isReadOnly).ToString(),
            //});

            //WorkConditionComboColumns = new ObservableCollection<Column>(workConditionComboColumns);

            #endregion
        }
Пример #20
0
 /// <summary>
 /// 电气计算的结果转转换成结构计算的输入
 /// </summary>
 /// <param name="elecCals"></param>
 /// <param name="struTemp"></param>
 public EelcRstConvStruInput(TowerElecCals elecCals, TowerTemplate struTemp)
 {
     ElecRst      = elecCals;
     StruTemplate = struTemp;
 }
Пример #21
0
 public void setTowerInfo(TowerTemplate info)
 {
     this.info = info;
     _pic.url  = "image/TowerBigPicture/" + info.tbase.tid;
 }
 public LoadComposeLineCornerTower(StruCalseBaseParas para, StruLineParas[] lineParas, HangingPointSettingParas ratioParas, TowerTemplate template, string tablePath)
     : base(para, lineParas, ratioParas, template, tablePath)
 {
     formula = new FormulaLineLineCornerTower(para);
 }
Пример #23
0
    public void initTowers()
    {
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t01");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t02");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t03");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
//		{
//			TowerTemplate tt = new TowerTemplate ();
//			TowerBase tb = GameStaticData.getInstance ().getTowerBase ("t04");
//
//			tt.tbase = tb;
//			ownedTowers.Add (tt);
//		}
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t05");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t06");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t07");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t08");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t10");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t11");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
        {
            TowerTemplate tt = new TowerTemplate();
            TowerBase     tb = GameStaticData.getInstance().getTowerBase("t20");

            tt.tbase = tb;
            ownedTowers.Add(tt);
        }
    }
Пример #24
0
    void clickComponent(int idx)
    {
        TowerTemplate tt = PlayerData.getInstance().ownedTowers [towerIdx];

        towerComponentWindow.SetAndShow(idx, tt.components [idx]);
    }