示例#1
0
    /**********************************************************************************/
    // функция обновления данных для основного вооружения
    //
    /**********************************************************************************/
    public void UpdateMainRadarData(RadarData data)
    {
        if (!m_isActive)
        {
            return;
        }

        if (!m_weapons.ContainsKey(WeaponSlot.MAIN_WEAPON))
        {
            Debug.LogError("We didn't set main weapon, but recive radar data for this weapon");
            return;
        }

        if (m_weapons[WeaponSlot.MAIN_WEAPON] == null)
        {
            Debug.LogError("We have no main weapon (null), but recive radar data for this weapon");
            return;
        }

        // если есть цели - открываем огонь
        if (data.DetectedEnemy != null)
        {
            if (data.DetectedEnemy.Count > 0)
            {
                WeaponController ctr = m_weapons[WeaponSlot.MAIN_WEAPON];
                UseWeapon(ctr);
            }
        }
    }
    /**********************************************************************************/
    // производим поиск цели
    // в случае обнаружения, функция сгенерирует
    //
    /**********************************************************************************/
    protected override void UpdateTarget()
    {
        // если ещё не начали никуда двигаться, стрелять тоже не будем
        // защита от дурака
        Base.DIREC direction = m_unitWithRadar.MoveDirection;
        if (direction == Base.DIREC.NO_DIRECTION)
        {
            m_targetCheckTimer += m_targetCheckTimerLimit;
            return;
        }

        // получаем список впомогательных точек для поиска
        List <Point> pointsToCheck = m_cachePoints[(int)direction];

        foreach (Point specPoint in pointsToCheck)
        {
            Point realPointToCheck = specPoint + m_currentPosition;
            List <BuildingController> buildingsInPoint = GameObjectMapController.GetInstance().SearchEnemiesBuildingInRadius(realPointToCheck, 0, m_owner);

            if (buildingsInPoint.Count > 0)
            {
                BuildingController targetCtr = buildingsInPoint[Random.Range(0, buildingsInPoint.Count)];
                if (RadarUpdate != null)
                {
                    RadarData data = new RadarData();
                    data.EnemyDirection.Add(direction);
                    data.DetectedEnemy.Add(targetCtr.gameObject);
                    RadarUpdate(data);
                }
            }

            m_targetCheckTimer += m_targetCheckTimerLimit;
        }
    }
示例#3
0
    /**********************************************************************************/
    // обновляем цель
    //
    /**********************************************************************************/
    protected override void UpdateTarget()
    {
        List <CIGameObject> units = GameObjectMapController.GetInstance().SearchEnemiesInRadius(m_currentPosition, m_searchingRadius, m_owner);

        if (units.Count == 0)
        {
            m_locedTarget = null;
        }
        else
        {
            // если есть цели - выбираем одну случайно
            CIGameObject targetCtr = units[Random.Range(0, units.Count)];
            m_locedTarget = targetCtr.gameObject;
        }

        // извещаем всех заинтересованных
        if (TargetToMove != null)
        {
            TargetToMove(m_locedTarget);
        }

        if (RadarUpdate != null)
        {
            RadarData data = new RadarData();
            data.DetectedEnemy.Add(m_locedTarget);
            RadarUpdate(data);
        }
    }
示例#4
0
        private void popList1_Selected(object sender, EventArgs e)
        {
            switch (popList1.Selections[0].Text)
            {
            case "DataBind":
                DataBind();
                break;

            case "AddSet":
                this.radarChart1.Data.AddSeries(GetNewSerie(this.radarChart1.Data));
                break;

            case "RemoveSet":
                if (this.radarChart1.Data.SeriesCount > 0)
                {
                    this.radarChart1.Data.RemoveSeries(0);
                }
                break;

            case "ClearSet":
                this.radarChart1.Data.ClearValues();
                break;

            case "SetData":
                List <string> xLabels = new List <string>();
                xLabels.AddRange(new string[] { "1", "2", "3", "4" });
                RadarData data = new RadarData(xLabels);
                data.AddSeries(GetNewSerie(data));
                this.radarChart1.Data = data;
                break;
            }
        }
示例#5
0
        public static bool CanSeePoint(RadarData radar, Vector2Int point)
        {
            Vector2Int center = radar.position;
            int        radius = radar.radius;

            return((System.Math.Sqrt(System.Math.Pow(point.x - center.x, 2) - System.Math.Pow(point.y - center.y, 2))) <= radius);
        }
示例#6
0
 public static bool CanSeePoint(RadarData[] radar, Vector2Int point)
 {
     for (int i = 0; i < radar.Length; i++) {
         if (CanSeePoint(radar[i], point))
             return true;
     }
     return false;
 }
示例#7
0
    /**********************************************************************************/
    // производим поиск цели
    // в случае обнаружения произвойдёт RadarUpdate эвент
    //
    /**********************************************************************************/
    protected override void UpdateTarget()
    {
        if (m_targetCheckTimer <= 0)
        {
            // если ещё не начали никуда двигаться, стрелять тоже не будем
            // защита от дурака
            Base.DIREC direction = m_unitWithRadar.MoveDirection;
            if (direction == Base.DIREC.NO_DIRECTION)
            {
                m_targetCheckTimer += m_targetCheckTimerLimit;
                return;
            }

            // получаем список впомогательных точек для поиска врагов
            // и проводим поиск целей для стрельбы
            List <Point> pointsToCheck = m_cachePoints[(int)direction];
            foreach (Point specPoint in pointsToCheck)
            {
                Point realPointToCheck           = specPoint + m_currentPosition;
                List <CIGameObject> unitsInPoint = GameObjectMapController.GetInstance().SearchEnemiesInRadius(realPointToCheck, m_scaningAreaRadius, m_owner);

                if (unitsInPoint.Count > 0)
                {
                    CIGameObject targetCtr = unitsInPoint[Random.Range(0, unitsInPoint.Count)];
                    if (RadarUpdate != null)
                    {
                        RadarData data = new RadarData();
                        data.EnemyDirection.Add(direction);
                        data.DetectedEnemy.Add(targetCtr.gameObject);
                        RadarUpdate(data);
                    }
                }
                else
                {
                    // проверяем игроков
                    foreach (CIGameObject plObject in m_players)
                    {
                        // считаем расстояние от точки метания снаряда до игроков
                        // если расстояние меньше m_scaningAreaRadius - вызываем RadarUpdate эвент
                        Point playerPosition = plObject.GetGlobalPosition();
                        Point positionDiff   = playerPosition - realPointToCheck;

                        if (positionDiff.GetSimpleLength() < m_scaningAreaRadius)
                        {
                            RadarData data = new RadarData();
                            data.EnemyDirection.Add(direction);
                            data.DetectedEnemy.Add(plObject.gameObject);
                            RadarUpdate(data);
                        }
                    }
                }
            }

            m_targetCheckTimer += m_targetCheckTimerLimit;
        }
    }
示例#8
0
    /**********************************************************************************/
    // производим поиск цели
    // в случае обнаружения произвойдёт RadarUpdate эвент
    //
    /**********************************************************************************/
    protected override void UpdateTarget()
    {
        if (m_targetCheckTimer <= 0)
        {
            // если ещё не начали никуда двигаться, стрелять тоже не будем
            // защита от дурака
            Base.DIREC direction = m_unitWithRadar.MoveDirection;
            if (direction == Base.DIREC.NO_DIRECTION)
            {
                m_targetCheckTimer += m_targetCheckTimerLimit;
                return;
            }

            // получаем список впомогательных точек для поиска врагов
            // и проводим поиск целей для стрельбы
            List <Point> pointsToCheck = m_cachePoints[(int)direction];
            foreach (Point specPoint in pointsToCheck)
            {
                Point realPointToCheck           = specPoint + m_currentPosition;
                List <CIGameObject> unitsInPoint = GameObjectMapController.GetInstance().SearchEnemiesInRadius(realPointToCheck, 0, m_owner);

                if (unitsInPoint.Count > 0)
                {
                    CIGameObject targetCtr = unitsInPoint[Random.Range(0, unitsInPoint.Count)];
                    if (RadarUpdate != null)
                    {
                        RadarData data = new RadarData();
                        data.EnemyDirection.Add(direction);
                        data.DetectedEnemy.Add(targetCtr.gameObject);
                        RadarUpdate(data);
                    }
                }
                else
                {
                    // проверяем игроков
                    foreach (CIGameObject plObject in m_players)
                    {
                        if (plObject.Owner == (int)m_owner)
                        {
                            continue;
                        }

                        if (plObject.GetGlobalPosition().IsSamePoint(realPointToCheck))
                        {
                            RadarData data = new RadarData();
                            data.EnemyDirection.Add(direction);
                            data.DetectedEnemy.Add(plObject.gameObject);
                            RadarUpdate(data);
                        }
                    }
                }
            }

            m_targetCheckTimer += m_targetCheckTimerLimit;
        }
    }
示例#9
0
 public static Vector2Int[] GetVisibleObjects(RadarData radar, Vector2Int[] points)
 {
     List<Vector2Int> seenPoints = new List<Vector2Int>();
     for (int i = 0; i < points.Length; i++) {
         if (CanSeePoint(radar, points[i])) {
             seenPoints.Add(points[i]);
         }
     }
     return seenPoints.ToArray();
 }
示例#10
0
        public static Vector2Int[] GetVisibleObjects(RadarData radar, Vector2Int[] points)
        {
            List <Vector2Int> seenPoints = new List <Vector2Int>();

            for (int i = 0; i < points.Length; i++)
            {
                if (CanSeePoint(radar, points[i]))
                {
                    seenPoints.Add(points[i]);
                }
            }
            return(seenPoints.ToArray());
        }
示例#11
0
    public static RadarData createRadarData(RadarType type)
    {
        ItemQuality quality = randQuality();
        float       level   = randLevel();

        int range = Mathf.RoundToInt(type.range() * level * qualityMultiplier(quality));

        RadarData data = new RadarData(quality, level, type, range);

        data.initCommons(calculateCost(data), calculateEnergy(data));

        return(data);
    }
        public string FormatDataToJsString(RadarData radarData)
        {
            var template = File.ReadAllText("TechRadar/template/template.js");

            template = template.Replace("{{radar_title}}", radarData.Name);

            foreach (var entry in radarData.Data)
            {
                Quadrant quadrant = entry.Key;
                QuadrantData quadrantData = entry.Value;
                var data = quadrantData.Items.Select(item => new JsBlip(item.Name, item.Radius, item.Angle));
                var jsonData = JsonConvert.SerializeObject(data);
                template = template.Replace(this.quadrantPlaceholder[quadrant], jsonData);
            }

            return template;
        }
示例#13
0
        private RadarSeries GetNewSerie(RadarData data)
        {
            Random countRandom = new Random();
            ChartYAxisValueCollection <ChartYAxisValue> yVals = new ChartYAxisValueCollection <ChartYAxisValue>();
            int count = data.XAxisCount;

            for (int i = 0; i < count; i++)
            {
                yVals.Add(new BarYAxisValue(countRandom.Next(0, count)));
            }
            RadarSeries set1 = new RadarSeries(yVals, "DataSet 1");

            set1.AddColor(DemoGlobal.GetRandomColor());
            set1.AddColor(DemoGlobal.GetRandomColor());
            set1.AddColor(DemoGlobal.GetRandomColor());

            return(set1);
        }
        protected override void OnInitializeChartData()
        {
            base.OnInitializeChartData();
            if (OriginalChartView != null && SupportChartView != null && SupportChartView.ChartData != null)
            {
                var dataSetItems     = SupportChartView.ChartData.DataSets;
                var listDataSetItems = new List <RadarDataSet>();

                foreach (var itemChild in dataSetItems)
                {
                    var          entryOriginal = itemChild.IF_GetValues().Select(item => new RadarEntry(item.GetValue()));
                    RadarDataSet dataSet       = new RadarDataSet(entryOriginal.ToArray(), itemChild.IF_GetLabel());
                    OnIntializeDataSet(itemChild, dataSet);
                    listDataSetItems.Add(dataSet);
                }

                RadarData data = new RadarData(listDataSetItems.ToArray());
                OriginalChartView.Data = data;
                OriginalChartView.Invalidate();
            }
        }
示例#15
0
    private List <Item> sortList(List <Item> list, ItemType type)
    {
        SortedDictionary <long, Item> weights = new SortedDictionary <long, Item>();
        long weight = 0;

        foreach (Item item in list)
        {
            if (type == ItemType.WEAPON)
            {
                WeaponData data = (WeaponData)item.itemData;
                switch (data.type)
                {
                case WeaponType.BLASTER: weight = 1000000; break;

                case WeaponType.PLASMER: weight = 2000000; break;

                case WeaponType.CHARGER: weight = 3000000; break;

                case WeaponType.EMITTER: weight = 4000000; break;

                case WeaponType.WAVER: weight = 5000000; break;

                case WeaponType.LAUNCHER: weight = 6000000; break;

                case WeaponType.SUPPRESSOR: weight = 7000000; break;

                default: Debug.Log("Неизвестный тип оружия"); break;
                }
                weight += item.cost;
            }
            else if (type == ItemType.HAND_WEAPON)
            {
                HandWeaponData data = (HandWeaponData)item.itemData;
                weight = data.maxDamage * 1000000 + data.cost;
            }
            else if (type == ItemType.BODY_ARMOR)
            {
                BodyArmorData data = (BodyArmorData)item.itemData;
                weight = data.armorClass * 1000000 + data.cost;
            }
            else if (type == ItemType.ENGINE)
            {
                EngineData data = (EngineData)item.itemData;
                weight = Mathf.RoundToInt(data.power * 1000);
            }
            else if (type == ItemType.ARMOR)
            {
                ArmorData data = (ArmorData)item.itemData;
                weight = data.armorClass * 1000000 + data.cost;
            }
            else if (type == ItemType.GENERATOR)
            {
                GeneratorData data = (GeneratorData)item.itemData;
                weight = data.maxEnergy * 1000000 + data.cost;
            }
            else if (type == ItemType.RADAR)
            {
                RadarData data = (RadarData)item.itemData;
                weight = data.range * 1000000 + data.cost;
            }
            else if (type == ItemType.SHIELD)
            {
                ShieldData data = (ShieldData)item.itemData;
                weight = data.shieldLevel * 1000000 + data.cost;
            }
            else if (type == ItemType.REPAIR_DROID)
            {
                RepairDroidData data = (RepairDroidData)item.itemData;
                weight = data.repairSpeed * 1000000 + data.cost;
            }
            else if (type == ItemType.HARVESTER)
            {
                HarvesterData data = (HarvesterData)item.itemData;
                weight = 1000000 - data.harvestTime;
            }
            else if (type == ItemType.GOODS)
            {
                weight = item.itemData.cost;
            }
            else if (type == ItemType.SUPPLY)
            {
                weight = item.itemData.sortWeight + item.cost;
            }
            else
            {
                Debug.Log("Unknown item: " + item.name);
            }
            while (weights.ContainsKey(weight))
            {
                weight++;
            }
            weights.Add(weight, item);
        }

        list.Clear();

        foreach (KeyValuePair <long, Item> pair in weights)
        {
            list.Add(pair.Value);
        }
        list.Reverse();

        return(list);
    }
示例#16
0
 public Radar(Vector2Int location, User owner, int radius) : base(location, owner, StructureType.Radar)
 {
     Radius            = radius;
     extraData         = new RadarData(Radius);
     VisibleStructures = new List <Vector2Int>();
 }
示例#17
0
 public override StructureSave Save()
 {
     extraData = new RadarData(Radius);
     return(base.Save());
 }
示例#18
0
 public static bool CanSeePoint(RadarData radar, Vector2Int point)
 {
     Vector2Int center = radar.position;
     int radius = radar.radius;
     return (System.Math.Sqrt(System.Math.Pow(point.x - center.x, 2) - System.Math.Pow(point.y - center.y, 2))) <= radius;
 }
示例#19
0
    private void showTexts(ItemData data)
    {
        float maxLenght = 0;

        if (data.quality != ItemQuality.COMMON)
        {
            qualityPre.gameObject.SetActive(true);
            qualityBG.gameObject.SetActive(true);
            qualityValue.gameObject.SetActive(true);

            qualityValue.text    = item.quality.getName();
            scale.x              = calcMeshLength(qualityRender);// qualityValue.text.Length + 1;
            qualityBG.localScale = scale;
            qualityValue.color   = (data.quality == ItemQuality.ARTEFACT? artefactColor:
                                    data.quality == ItemQuality.UNIQUE? uniqueColor:
                                    data.quality == ItemQuality.RARE? rareColor:
                                    data.quality == ItemQuality.SUPERIOR? superiorColor:
                                    goodColor);
            maxLenght = qualityRender.bounds.size.x;
        }

        namePre.gameObject.SetActive(true);
        nameBG.gameObject.SetActive(true);
        nameValue.gameObject.SetActive(true);

        nameValue.text    = data.name;
        scale.x           = calcMeshLength(nameRender);// nameValue.text.Length + 1;
        nameBG.localScale = scale;
        maxLenght         = Mathf.Max(maxLenght, nameRender.bounds.size.x);

        switch (data.itemType)
        {
        case ItemType.SUPPLY:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);

            SupplyData sud = (SupplyData)data;
            string     val = "";
            switch (sud.type)
            {
            case SupplyType.MEDKIT_SMALL:
            case SupplyType.MEDKIT_MEDIUM:
            case SupplyType.MEDKIT_LARGE:
            case SupplyType.MEDKIT_ULTRA:
                val = "Восстанавливает <color=white>" + sud.value + "</color> HP";
                break;

            case SupplyType.GRENADE_FLASH: val = StatusEffectType.BLINDED.name() + " на <color=white>" + sud.duration + "</color> ходов"; break;

            case SupplyType.GRENADE_PARALIZE: val = StatusEffectType.PARALIZED.name() + " на <color=white>" + sud.duration + "</color> ходов"; break;

            case SupplyType.INJECTION_SPEED: val = "Дополнительно <color=white>" + sud.value + "</color> действий на <color=white>" + sud.duration + "</color> ходов"; break;

            case SupplyType.INJECTION_REGENERATION: val = "Восстановление по <color=white>" + sud.value + "</color> HP в течении <color=white>" + sud.duration + "</color> ходов"; break;

            case SupplyType.INJECTION_ARMOR: val = "Повышение защиты на <color=white>" + sud.value + "</color> в течении <color=white>" + sud.duration + "</color> ходов"; break;

            default: Debug.Log("Unknown supply type: " + sud.type); val = ""; break;
            }
            value1.text    = "Эффект: <color=orange>" + val + "</color>";
            scale.x        = calcMeshLength(value1Render);             // value1Render.bounds.size.x * 4.8f;// value1.text.Length - 23;// - (количество спецсимволов)
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(2, data));
            break;

        case ItemType.GOODS:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);

            maxLenght = Mathf.Max(maxLenght, setCost(1, data));
            break;

        case ItemType.HAND_WEAPON:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);

            HandWeaponData hwd = (HandWeaponData)data;
            value1.text    = "Урон: <color=orange>" + hwd.minDamage + " - " + hwd.maxDamage + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 24;// - (количество спецсимволов)
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(2, data));
            break;

        case ItemType.BODY_ARMOR:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);

            BodyArmorData bad = (BodyArmorData)data;
            value1.text    = "Защита: <color=orange>" + bad.armorClass + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(2, data));
            break;

        case ItemType.WEAPON:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);
            pre4.gameObject.SetActive(true);
            bg4.gameObject.SetActive(true);
            value4.gameObject.SetActive(true);
            pre5.gameObject.SetActive(true);
            bg5.gameObject.SetActive(true);
            value5.gameObject.SetActive(true);

            WeaponData wd = (WeaponData)data;
            value1.text    = "Урон: <color=orange>" + wd.minDamage + " - " + wd.maxDamage + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 24;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Перезарядка: <color=orange>" + wd.reloadTime.ToString("0.00") + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 22.5F;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            value3.text    = "Питание: <color=cyan>" + data.energyNeeded + "</color>";
            scale.x        = calcMeshLength(value3Render);             //value3.text.Length - 20.5f;
            bg3.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value3Render.bounds.size.x);

            value4.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value4Render);             //value4.text.Length - 22.5F;
            bg4.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value4Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(5, data));
            break;

        case ItemType.ENGINE:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);
            pre4.gameObject.SetActive(true);
            bg4.gameObject.SetActive(true);
            value4.gameObject.SetActive(true);

            EngineData ed = (EngineData)data;
            value1.text    = "Мощность: <color=orange>" + ((ed.power) * 1000).ToString("0") + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22.5f;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Питание: <color=cyan>" + data.energyNeeded + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 20.5f;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            value3.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value3Render);             //value3.text.Length - 22.5F;
            bg3.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value3Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(4, data));
            break;

        case ItemType.ARMOR:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);

            ArmorData ad = (ArmorData)data;
            value1.text    = "Броня: <color=orange>" + ad.armorClass + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22.5f;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 22.5F;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(3, data));
            break;

        case ItemType.GENERATOR:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);

            GeneratorData gd = (GeneratorData)data;
            value1.text    = "Мощность: <color=orange>" + gd.maxEnergy + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22.5f;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 22.5F;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(3, data));
            break;

        case ItemType.RADAR:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);
            pre4.gameObject.SetActive(true);
            bg4.gameObject.SetActive(true);
            value4.gameObject.SetActive(true);

            RadarData rd = (RadarData)data;
            value1.text    = "Дальность: <color=orange>" + rd.range + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22.5f;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Питание: <color=cyan>" + data.energyNeeded + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 20.5f;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            value3.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value3Render);             //value3.text.Length - 22.5F;
            bg3.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value3Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(4, data));
            break;

        case ItemType.SHIELD:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);
            pre4.gameObject.SetActive(true);
            bg4.gameObject.SetActive(true);
            value4.gameObject.SetActive(true);
            pre5.gameObject.SetActive(true);
            bg5.gameObject.SetActive(true);
            value5.gameObject.SetActive(true);

            ShieldData sd = (ShieldData)data;
            value1.text    = "Защита: <color=orange>" + sd.shieldLevel + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22.5f;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Перезарядка: <color=orange>" + sd.rechargeSpeed + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 22.5F;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            value3.text    = "Питание: <color=cyan>" + data.energyNeeded + "</color>";
            scale.x        = calcMeshLength(value3Render);             //value3.text.Length - 20.5f;
            bg3.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value3Render.bounds.size.x);

            value4.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value4Render);             //value4.text.Length - 22.5F;
            bg4.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value4Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(5, data));
            break;

        case ItemType.REPAIR_DROID:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);
            pre4.gameObject.SetActive(true);
            bg4.gameObject.SetActive(true);
            value4.gameObject.SetActive(true);

            RepairDroidData rdd = (RepairDroidData)data;
            value1.text    = "Ремонт: <color=orange>" + rdd.repairSpeed + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22.5f;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Питание: <color=cyan>" + data.energyNeeded + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 20.5f;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            value3.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value3Render);             //value3.text.Length - 22.5F;
            bg3.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value3Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(4, data));
            break;

        case ItemType.HARVESTER:
            pre1.gameObject.SetActive(true);
            bg1.gameObject.SetActive(true);
            value1.gameObject.SetActive(true);
            pre2.gameObject.SetActive(true);
            bg2.gameObject.SetActive(true);
            value2.gameObject.SetActive(true);
            pre3.gameObject.SetActive(true);
            bg3.gameObject.SetActive(true);
            value3.gameObject.SetActive(true);

            HarvesterData hd = (HarvesterData)data;
            value1.text    = "Поиск: <color=orange>" + hd.harvestTime + "</color>";
            scale.x        = calcMeshLength(value1Render);             //value1.text.Length - 22.5f;
            bg1.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value1Render.bounds.size.x);

            value2.text    = "Объём: <color=orange>" + data.volume.ToString("0.0") + "</color>";
            scale.x        = calcMeshLength(value2Render);             //value2.text.Length - 22.5F;
            bg2.localScale = scale;
            maxLenght      = Mathf.Max(maxLenght, value2Render.bounds.size.x);

            maxLenght = Mathf.Max(maxLenght, setCost(3, data));
            break;
        }

        maxX = screenWidth - maxLenght - .5f;
    }
示例#20
0
    public static ItemData copy(ItemData source)
    {
        ItemData copy = null;

        switch (source.itemType)
        {
        case ItemType.SUPPLY:
            SupplyData sud = (SupplyData)source;
            copy = new SupplyData(sud.quality, sud.level, sud.type, sud.value, sud.duration);
            break;

        case ItemType.GOODS:
            GoodsData gda = (GoodsData)source;
            copy = new GoodsData(gda.type, gda.quantity);
            break;

        case ItemType.HAND_WEAPON:
            HandWeaponData hwd = (HandWeaponData)source;
            copy = new HandWeaponData(source.quality, source.level, hwd.type, hwd.minDamage, hwd.maxDamage);
            break;

        case ItemType.BODY_ARMOR:
            BodyArmorData bad = (BodyArmorData)source;
            copy = new BodyArmorData(source.quality, source.level, bad.type, bad.armorClass);
            break;

        case ItemType.WEAPON:
            WeaponData wd = (WeaponData)source;
            copy = new WeaponData(source.quality, source.level, wd.type, wd.minDamage, wd.maxDamage, wd.reloadTime);
            break;

        case ItemType.ENGINE:
            EngineData ed = (EngineData)source;
            copy = new EngineData(source.quality, source.level, ed.type, ed.power);
            break;

        case ItemType.ARMOR:
            ArmorData ad = (ArmorData)source;
            copy = new ArmorData(source.quality, source.level, ad.type, ad.armorClass);
            break;

        case ItemType.GENERATOR:
            GeneratorData gd = (GeneratorData)source;
            gd = new GeneratorData(source.quality, source.level, gd.type, gd.maxEnergy);
            break;

        case ItemType.RADAR:
            RadarData rd = (RadarData)source;
            copy = new RadarData(source.quality, source.level, rd.type, rd.range);
            break;

        case ItemType.SHIELD:
            ShieldData sd = (ShieldData)source;
            copy = new ShieldData(source.quality, source.level, sd.type, sd.shieldLevel, sd.rechargeSpeed);
            break;

        case ItemType.REPAIR_DROID:
            RepairDroidData rdd = (RepairDroidData)source;
            copy = new RepairDroidData(source.quality, source.level, rdd.type, rdd.repairSpeed);
            break;

        case ItemType.HARVESTER:
            HarvesterData hd = (HarvesterData)source;
            copy = new HarvesterData(source.quality, source.level, hd.type, hd.harvestTime);
            break;

        default:
            Debug.Log("Unknown item type to copy from: " + source.itemType);
            break;
        }

        copy.initCommons(source.cost, source.energyNeeded);

        return(copy);
    }
示例#21
0
 public RSD() : base("RSD")
 {
     Data1 = new RadarData();
     Data2 = new RadarData();
     Empty();
 }
示例#22
0
 public static void SetRadarData(string path)
 {
     radarData = new RadarData(path);
 }