예제 #1
0
    public void OnClickedBuyButton(int index)
    {
        TechnologyType technologyType = technologiesAvailable[index];

        descriptionSelectedText.text = technologyInfo[(int)technologyType].Description;

        if (!logic.HasTechnology(technologyType))
        {
            buyButton.gameObject.SetActive(true);
        }
        else
        {
            buyButton.gameObject.SetActive(false);
        }

        if (selectedButton == index)
        {
            BuySelectedButton();
        }
        else
        {
            selectedButton = index;
            descriptionSelectedPanel.SetActive(true);
        }
    }
예제 #2
0
 public Technology(String name, int defaultCost, int minCost, TechnologyType type)
 {
     Name = name;
     Type = type;
     DefaultCost = defaultCost;
     MinCost = minCost;
 }
예제 #3
0
    public void BuySelectedButton()
    {
        if (selectedButton == -1)
        {
            return;
        }

        TechnologyType technologyType = technologiesAvailable[selectedButton];

        if (!logic.HasTechnology(technologyType))
        {
            if (logic.IsThereEnoughShields(technologyInfo[(int)technologyType].ShieldCost))
            {
                logic.AddTechnology(technologyType);
                logic.TrySpendShields(technologyInfo[(int)technologyType].ShieldCost);
                ShowTechnologyButtons();
                buyButton.gameObject.SetActive(false);
                selectedButton = -1;
                descriptionSelectedPanel.gameObject.SetActive(false);
            }
            else
            {
                descriptionSelectedText.text = NOT_ENOUGH_SHIELDS;
            }
        }
        else
        {
            descriptionSelectedText.text = ALREADY_RESEARCHED;
        }
    }
예제 #4
0
        public async Task <ActionResult> EditTechnology(TechnologyType technology)
        {
            if (technology == null)
            {
                return(BadRequest());
            }

            await _technologyRepo.Update(technology);

            return(new JsonResult("Success"));
        }
예제 #5
0
        public async Task <string> GetUpgradeTechnologyUrl(HtmlDocument document, TechnologyType type)
        {
            return(await Task.Run(() =>
            {
                var upgrdeTechnologyHtml =
                    document
                    .DocumentNode
                    .Descendants("div")
                    .First(n => n
                           .Attributes
                           .Any(a => a.Value.Contains($"research{(int) type}")))
                    .Descendants("a")
                    .First(n => n
                           .Attributes
                           .Any(a => a.OriginalName == "onlick"))
                    .GetAttributeValue("onclick", null);

                return Regex.Match(upgrdeTechnologyHtml, @"\'([^']*)\'").Groups[1].Value;
            }));
        }
예제 #6
0
    private void ShowTechnologyButtons()
    {
        int i = 0;

        for (; i < technologiesAvailable.Count(); ++i)
        {
            TechnologyType technologyType = technologiesAvailable[i];
            Sprite         sprite         = Resources.Load("UI/Icons/" + technologyInfo[(int)technologyType].Icon, typeof(Sprite)) as Sprite;
            buyingButtons[i].GetComponent <Image>().sprite = sprite;
            string buttonName = technologyType.ToString();
            buttonName = buttonName.First().ToString() + buttonName.Substring(1).ToLower();
            buyingButtons[i].gameObject.SetActive(true);
            nameTextsButton[i].text = buttonName;
            if (!logic.HasTechnology(technologyType))
            {
                costTextsButton[i].text = technologyInfo[(int)technologyType].ShieldCost + " shields";
            }
            else
            {
                costTextsButton[i].text = "Researched already";
            }
        }
    }
예제 #7
0
 private HtmlNode GetTechnologyNode(IEnumerable <HtmlNode> technologiesNode, TechnologyType type)
 {
     return(technologiesNode.FirstOrDefault(n => n.HasAttributes &&
                                            n.Attributes.Any(
                                                a => a.Value.Contains($"research{(int) type}"))));
 }
예제 #8
0
 public void Upgrade(TechnologyType tech)
 {
     techLevels[tech].upgrade();
 }
예제 #9
0
 internal bool HasTechnology(TechnologyType technologyType)
 {
     return(players[currentPlayer].HasTechnology(technologyType));
 }
예제 #10
0
 internal uint GetCostTechnology(TechnologyType technologyType)
 {
     return(technologyInfo[(int)technologyType].ShieldCost);
 }
예제 #11
0
 internal void AddTechnology(TechnologyType technology)
 {
     technologyManager.Add(technology);
 }
 public bool HasTechnology(TechnologyType technology)
 {
     return(technologies.Contains(technology));
 }
 public void Add(TechnologyType technology)
 {
     technologies.Add(technology);
 }
예제 #14
0
파일: Player.cs 프로젝트: jauggy/Boardgames
 public int GetTechnologyDiscount(TechnologyType type)
 {
     return PlayerBoard.GetDiscount(type);
 }
예제 #15
0
        private TechnologyBase GetTechnology(TechnologyType type, IEnumerable <HtmlNode> technologiesNode, PlayerPlanet planet)
        {
            var technologyNode   = GetTechnologyNode(technologiesNode, type);
            var technologyLevel  = GetTechnologyLevel(technologyNode);
            var canUpgradeStatus = CanUpgradeStatus(technologyNode);
            var techReached      = canUpgradeStatus != "off";
            var canUpgrade       = techReached && canUpgradeStatus != "disabled";

            switch (type)
            {
            case TechnologyType.EnergyTechnology:
                return(new EnergyTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.LaserTechnology:
                return(new LaserTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.IonTechnology:
                return(new IonTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.HyperspaceTechnology:
                return(new HyperspaceTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.PlasmaTechnology:
                return(new PlasmaTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.EspionageTechnology:
                return(new EspionageTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.ComputerTechnology:
                return(new ComputerTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.Astrophysics:
                return(new Astrophysics(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.IntergalacticResearchNetwork:
                return(new IntergalacticResearchNetwork(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.GravitonTechnology:
                return(new GravitonTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.WeaponTechnology:
                return(new WeaponTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.ShieldingTechnology:
                return(new ShieldingTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.ArmourTechnology:
                return(new ArmourTechnology(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.CombusionDrive:
                return(new CombustionDrive(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.ImpulseDrive:
                return(new ImpulseDrive(planet, technologyLevel, techReached, canUpgrade));

            case TechnologyType.HyperspaceDrive:
                return(new HyperspaceDrive(planet, technologyLevel, techReached, canUpgrade));

            default:
                return(null);
            }
        }
예제 #16
0
 public Technology(string name, TechnologyType type)
 {
     Name = name;
     Type = type;
 }
예제 #17
0
    public static string get(System.IO.Stream file)
    {
        StringBuilder result = new StringBuilder("{\"information\":[");

        DicomFile    dcmFile    = DicomFile.Open(file);
        DicomDataset dcmDataSet = dcmFile.Dataset;

        String patientName = dcmDataSet.Get <String>(DicomTag.PatientName);
        String patientID   = dcmDataSet.Get <String>(DicomTag.PatientID);
        String patientSex  = dcmDataSet.Get <String>(DicomTag.PatientSex);

        String tps = dcmDataSet.Get <String>(DicomTag.ManufacturerModelName);

        //摆位信息
        DicomSequence        patientSetupSequence         = dcmDataSet.Get <DicomSequence>(DicomTag.PatientSetupSequence);
        IList <DicomDataset> patientSetupSequence_list    = patientSetupSequence.Items;
        DicomDataset         patientSetupSequence_list_d0 = patientSetupSequence_list.ElementAt(0);
        String postion = patientSetupSequence_list_d0.Get <String>(DicomTag.PatientPosition);

        result.Append("{\"id\":\"").Append(patientID).Append("\"")
        .Append(",\"lastName\":\"").Append(patientName.Split('^')[0]).Append("\"")
        .Append(",\"firstName\":\"").Append(patientName.Split('^')[1]).Append("\"")
        .Append(",\"tps\":\"").Append(tps).Append("\"");

        //Mu,射野总数
        DicomDataset fractionGroupSequence = dcmDataSet.Get <DicomSequence>(DicomTag.FractionGroupSequence).Items[0];
        String       fieldTimes            = fractionGroupSequence.Get <String>(DicomTag.NumberOfBeams);//射野总数
        String       all = "";

        //总剂量
        try
        {
            DicomDataset doseReferenceSequence = dcmDataSet.Get <DicomSequence>(DicomTag.DoseReferenceSequence).Items[0];
            all = doseReferenceSequence.Get <String>(DicomTag.TargetPrescriptionDose);
        }
        catch (Exception e)
        {
            all = "0";
        }

        //剂量次数
        String numberOfFractionsPlanned = fractionGroupSequence.Get <String>(DicomTag.NumberOfFractionsPlanned);
        double once = (double.Parse(all) * 100) / double.Parse(numberOfFractionsPlanned);

        result.Append(",\"all\":\"").Append(double.Parse(all) * 100).Append("\"")
        .Append(",\"once\":\"").Append(once).Append("\"")
        .Append(",\"fieldTimes\":\"").Append(fieldTimes).Append("\"")
        .Append(",\"pos\":\"").Append(postion).Append("\"}")
        .Append("],\"details\":[");
        //含有Mu
        IList <DicomDataset> referencedBeamSequence_list = fractionGroupSequence.Get <DicomSequence>(DicomTag.ReferencedBeamSequence).Items;
        int i = 0;
        //射野信息
        DicomSequence        beamSequence      = dcmDataSet.Get <DicomSequence>(DicomTag.BeamSequence);
        IList <DicomDataset> beamSequence_list = beamSequence.Items;

        foreach (DicomDataset d in beamSequence_list)
        {
            String a1         = d.Get <String>(DicomTag.BeamName);              //射野ID
            String type       = d.Get <String>(DicomTag.RadiationType);         //射野类型
            String technology = d.Get <String>(DicomTag.BeamType);              //照射技术
            String equipment  = d.Get <String>(DicomTag.TreatmentMachineName);  //放疗设备
            String child      = d.Get <String>(DicomTag.NumberOfControlPoints); //子野数
            String mu         = referencedBeamSequence_list.ElementAt(i++).Get <String>(DicomTag.BeamMeterset);

            //3个角
            DicomDataset three = d.Get <DicomSequence>(DicomTag.ControlPointSequence).Items.ElementAt(0);
            String       jjj   = deleteLast(three.Get <String>(DicomTag.GantryAngle), 1);
            String       jtj   = deleteLast(three.Get <String>(DicomTag.BeamLimitingDeviceAngle), 1);
            String       czj   = deleteLast(three.Get <String>(DicomTag.PatientSupportAngle), 1);

            //jjj变化
            String endjjj = d.Get <DicomSequence>(DicomTag.ControlPointSequence).Items.ElementAt(d.Get <DicomSequence>(DicomTag.ControlPointSequence).Items.Count - 1).Get <String>(DicomTag.GantryAngle);
            if (endjjj != null && endjjj != jjj)
            {
                jjj = jjj + "/" + endjjj;
            }

            //能量
            String enery = d.Get <DicomSequence>(DicomTag.ControlPointSequence).Items.ElementAt(0).Get <String>(DicomTag.NominalBeamEnergy);

            String ypj  = d.Get <DicomSequence>(DicomTag.ControlPointSequence).Items.ElementAt(0).Get <String>(DicomTag.SourceToSurfaceDistance);//源皮距
            double ypjd = double.Parse(ypj) / 10.0;
            if (mu != null && mu != "")
            {
                double mudouble = Math.Round(double.Parse(mu), 2);
                mu = mudouble.ToString();
            }
            TechnologyType ttype = TrchnologyTypeFactory.newInstance(technology);
            result.Append("{\"a1\":\"").Append(a1).Append("\"")
            .Append(",\"mu\":\"").Append(mu).Append("\"")
            .Append(",\"equipment\":\"").Append(equipment).Append("\"")
            .Append(",\"technology\":\"").Append(technology).Append("\"")
            .Append(",\"type\":\"").Append(type).Append("\"")
            .Append(",\"energyField\":\"").Append(enery).Append("\"")
            .Append(",\"ypj\":\"").Append(Math.Round(ypjd, 1, MidpointRounding.AwayFromZero)).Append("\"")
            .Append(",\"jjj\":\"").Append(jjj).Append("\"")
            .Append(",\"jtj\":\"").Append(jtj).Append("\"")
            .Append(",\"czj\":\"").Append(czj).Append("\"")
            .Append(",\"childs\":\"").Append(ttype.change(int.Parse(child))).Append("\"},");;
        }

        return(result.Remove(result.Length - 1, 1).Append("]}").ToString());
    }
예제 #18
0
 public Technology(ShipPart part, int defaultCost, int minCost, TechnologyType type)
     : this(part.Name, defaultCost, minCost, type)
 {
     ShipPart = part;
 }
예제 #19
0
 public int GetDiscountNext(TechnologyType type)
 {
     var numTechs = Technologies.Where(x => x.Type == type).Count()+1;
     if (numTechs >= _techDiscounts.Count)
         return _techDiscounts[_techDiscounts.Count - 1];
     return _techDiscounts[numTechs];
 }
예제 #20
0
 internal bool HasTechnology(TechnologyType technologyType)
 {
     return(technologyManager.HasTechnology(technologyType));
 }
예제 #21
0
 public int GetVPNext(TechnologyType type)
 {
     return 0;
 }
예제 #22
0
 internal void AddTechnology(TechnologyType technologyType)
 {
     players[currentPlayer].AddTechnology(technologyType);
     OnScoreEvent(TypesScore.TECHNOLOGY, currentPlayer);
 }
예제 #23
0
        private TechnologySegment CreateTechnologySegment(TechnologyType type)
        {
            var segment1 = new TechnologySegment(type.ToString(), Technologies.Where(x => x.Type == type).ToList());
            var footer = new List<String>();
            footer.Add("Discount: " + GetDiscount(type));
            footer.Add("Next:  " + GetDiscountNext(type));
            footer.Add("VP: " + GetVP(type));
            footer.Add("Next VP: " + GetVPNext(type));

            segment1.Footer = footer.ToArray();
            return segment1;
        }
예제 #24
0
 public TechnologyBase GetTechnology(Planet planet, TechnologyType type) => PlayerTechnologies.First(t => t.BelongsTo.Id == planet.Id && t.Type == type);
예제 #25
0
 public TechLevel(TechnologyType t, int c, int m)
 {
     type    = t;
     current = c;
     max     = m;
 }