예제 #1
0
    void Process(Damage damage, Dictionary <object, ShieldData> datas)
    {
        foreach (object key in datas.Keys)
        {
            if (damage.receiveDamageValue <= 0)
            {
                break;
            }
            ShieldData data = datas[key];
            if (data.Process(damage))
            {
                onTriggerShield.Invoke(key, data);
                if (!data.valid)
                {
                    m_RemoveCacha.Add(key);
                }
            }
        }

        foreach (object key in m_RemoveCacha)
        {
            datas.Remove(key);
        }
        m_RemoveCacha.Clear();
    }
예제 #2
0
        public Shield(
            App game,
            Ship ship,
            LogicalShield logShield,
            Section sectWithShield,
            List <PlayerTechInfo> playerTechs,
            bool isShipAssigned = true)
        {
            ShieldData shieldData = ship.ShipClass == ShipClass.Dreadnought ? logShield.DNShieldData : logShield.CRShieldData;

            game.AddExistingObject((IGameObject)this, new List <object>()
            {
                (object)(int)logShield.Type,
                (object)Shield.GetTotalStructure(game.AssetDatabase, shieldData.Structure, playerTechs),
                (object)shieldData.RechargeTime,
                (object)(float)(logShield.Type == LogicalShield.ShieldType.PSI_SHIELD ? 0.0 : (double)Shield.GetShieldRegenPerSec(playerTechs)),
                (object)ship.ObjectID,
                (object)sectWithShield.ObjectID,
                (object)Path.Combine("props\\models\\Shields", Path.GetFileNameWithoutExtension(shieldData.ModelFileName) + "_convex.obj"),
                (object)Path.Combine("props\\models\\Shields", shieldData.ModelFileName),
                (object)Path.Combine(shieldData.ImpactEffectName),
                (object)1000000f,
                (object)true,
                (object)isShipAssigned
            }.ToArray());
            this._isShipAssigned = isShipAssigned;
        }
예제 #3
0
 public static GateTrack Add(ShipInfo ship, GateInfo gate, bool isInner = false, string msgType = "")
 {
     return(new GateTrack()
     {
         objName = gate.Name,
         turnStileCode = gate.ID,
         shipMMSI = ship.MMSI.ToString(),
         shipName = ship.Name,
         shipGeoLon = Math.Round(ship.Longitude * 10000000).ToString(),
         shipGeoLat = Math.Round(ship.Latitude * 10000000).ToString(),
         shipSpeed = Math.Round(ship.SOG, 1).ToString(),
         shipCourse = Math.Round(ship.COG).ToString(),
         shipState = "",
         shipIMO = ship.IMO_Number.ToString(),
         shipCallSign = ship.CallSign,
         shipType = ShieldData.GetShipType(ship.ShipCargoType),
         msgType = msgType,
         shipLength = ship.Length.ToString(),
         shipWidth = ship.Width.ToString(),
         shipDraftDepth = "0",
         reportTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),
         shipDistance = Math.Round(getDis(ship.Longitude, ship.Latitude, gate.Longitude, gate.Latitude)).ToString(),
         objInner = (isInner?"1":"0"),
     });
 }
예제 #4
0
        void btnCancel_Click(object sender, EventArgs e)
        {
            shield = null;

            this.FormClosing -= FormShieldDetails_FormClosing;
            this.Close();
        }
예제 #5
0
    private void SetItemsData(Collider other)
    {
        ItemData eqipedItem = new ItemData();

        if (itemData is WeaponData)
        {
            var        weapon     = other.GetComponent <Weapons.Weapon>();
            WeaponData weaponData = new WeaponData();
            weaponData.Ammo             = weapon.MaxAmmo;
            weaponData.Damage           = weapon.Damage;
            weaponData.Range            = weapon.Range;
            weaponData.TimeBetweenShoot = weapon.SecondsBetweenShoot;
            weaponData.Dispersion       = weapon.Dispersion;
            weaponData.Name             = weapon.Name;
            eqipedItem = weaponData;
        }
        else if (itemData is ShieldData)
        {
            var        shield     = other.GetComponent <Shields.Shield>();
            ShieldData shieldData = new ShieldData();
            shieldData.Energy = shield.MaxEnergy;
            shieldData.Name   = shield.GetType().ToString();
            eqipedItem        = shieldData;
        }

        SetItemCanvas(itemData, eqipedItem, dropedWeaponLabels);
        SetItemCanvas(eqipedItem, itemData, equipedWeaponLabels);
    }
예제 #6
0
        private void repopulateMenuOptions()
        {
            itemMenuOptions.Clear();
            shieldMenuOptions.Clear();
            shieldMenuOptions.Add(ThinkMenuOption.NoShield);
            foreach (CharacterClass characterClass in Enum.GetValues(typeof(CharacterClass)))
            {
                if (characterClass == CharacterClass.Enemy)
                {
                    continue;
                }

                weaponMenuOptions[characterClass].Clear();

                foreach (InventoryItem item in Battle.PlayerParty.WeaponInventories[characterClass].GetSortedItems(CurrentPartyMember))
                {
                    WeaponData weaponData = ResourceManager.GetWeaponData(item.Key);
                    weaponMenuOptions[characterClass].Add(new ThinkMenuOption(item.Key, weaponData.Description, item.Value, false));
                }
            }
            foreach (InventoryItem item in Battle.PlayerParty.ItemInventory.GetSortedItems(CurrentPartyMember))
            {
                ItemData itemData = ResourceManager.GetItemData(item.Key);
                itemMenuOptions.Add(new ThinkMenuOption(item.Key, itemData.Description, item.Value, false));
            }
            foreach (InventoryItem item in Battle.PlayerParty.ShieldInventory.GetSortedItems(CurrentPartyMember))
            {
                ShieldData shieldData = ResourceManager.GetShieldData(item.Key);
                shieldMenuOptions.Add(new ThinkMenuOption(item.Key, shieldData.Description, item.Value, false));
            }
            checkUsabilityOfWeaponMenuOptions();
        }
예제 #7
0
        private void onShield()
        {
            lock (_obj)
                _shield = Shield.ShieldMgr.Instance.GetShield();
            Common.Log.Logger.Default.Trace($"------------------------");
            string str = $"更新当前围栏屏蔽数据。其中船舶数量:{_shield?.Ships?.Count()},AIS类别数量:{_shield?.Types?.Count()}";

            if (_shield?.Ships != null && _shield.Ships.Count > 0)
            {
                str += "。其中船舶MMSI:";
                foreach (var sh in _shield.Ships)
                {
                    str += " " + sh.ID;
                }
            }
            if (_shield?.Types != null && _shield.Types.Count > 0)
            {
                str += "。其中类别:";
                foreach (var sh in _shield.Types)
                {
                    str += " " + sh.ID;
                }
            }
            Common.Log.Logger.Default.Trace(str);
            Common.Log.Logger.Default.Trace($"------------------------");
        }
예제 #8
0
        public static void ReadItemData()
        {
            itemManager = new ItemDataManager();

            string[] fileNames = Directory.GetFiles(
                Path.Combine(FormMain.ItemPath, "Armor"),
                "*.xml");

            foreach (string s in fileNames)
            {
                ArmorData armorData = XnaSerializer.Deserialize <ArmorData>(s);
                itemManager.ArmorData.Add(armorData.Name, armorData);
            }

            fileNames = Directory.GetFiles(
                Path.Combine(FormMain.ItemPath, "Shield"),
                "*.xml");

            foreach (string s in fileNames)
            {
                ShieldData shieldData = XnaSerializer.Deserialize <ShieldData>(s);
                itemManager.ShieldData.Add(shieldData.Name, shieldData);
            }

            fileNames = Directory.GetFiles(
                Path.Combine(FormMain.ItemPath, "Weapon"),
                "*.xml");

            foreach (string s in fileNames)
            {
                WeaponData weaponData = XnaSerializer.Deserialize <WeaponData>(s);
                itemManager.WeaponData.Add(weaponData.Name, weaponData);
            }
        }
예제 #9
0
 private void InitializeController()
 {
     if (shieldData == null)
     {
         shieldData = GetComponentInParent <ShieldData>();
     }
 }
예제 #10
0
    public ShieldData AddShield(object effect, ValueType valueType, float value, int blockCount, DamageType damageType, DamageSource damageSource, CheckDamageDelegate handle)
    {
        ShieldData data = new ShieldData(valueType, value, blockCount, damageType, damageSource, handle);

        if (valueType == ValueType.Point)
        {
            if (m_PointValue.ContainsKey(effect))
            {
                m_PointValue[effect] = data;
            }
            else
            {
                m_PointValue.Add(effect, data);
            }
        }
        else
        {
            if (m_PercentValue.ContainsKey(effect))
            {
                m_PercentValue[effect] = data;
            }
            else
            {
                m_PercentValue.Add(effect, data);
            }
        }
        return(data);
    }
예제 #11
0
    public Shield(GameContext context, ShieldData data, Entity entity, Gear item)
    {
        Context = context;
        _data   = data;
        Entity  = entity;
        Item    = item;

        // TODO: Detect hits on Ship, keep a list of callbacks that modify the hit by reference
    }
예제 #12
0
 public static void ReadShieldData(ContentManager Content)
 {
     string[] filenames = Directory.GetFiles(@"Content\Game\Items\Shield", "*.xnb");
     foreach (string name in filenames)
     {
         string     filename = @"Game\Items\Shield\" + Path.GetFileNameWithoutExtension(name);
         ShieldData data     = Content.Load <ShieldData>(filename);
         ShieldData.Add(data.Name, data);
     }
 }
예제 #13
0
 private void loadData()
 {
     if (File.Exists(_path))
     {
         string info = File.ReadAllText(_path);
         _datas = JsonConvert.DeserializeObject <ShieldData>(info);
     }
     else
     {
         newAddSave();
     }
 }
예제 #14
0
    public void FirstLoad()
    {
        var weapon = ItemGenerator.DefaultWeapon();

        PlayerEquipedWeapon = weapon;
        PlayerWeapons.Add(weapon);

        var shield = ItemGenerator.DefaultShield();

        PlayerShields.Add(shield);
        PlayerEquipedShield = shield;
    }
예제 #15
0
        void btnOK_Click(object sender, EventArgs e)
        {
            int   price  = 0;
            float weight = 0f;
            int   defVal = 0;
            int   defMod = 0;

            if (string.IsNullOrEmpty(tbName.Text))
            {
                MessageBox.Show("You must enter a name for the item.");
                return;
            }

            if (!int.TryParse(mtbPrice.Text, out price))
            {
                MessageBox.Show("Price must be an integer value.");
                return;
            }

            weight = (float)nudWeight.Value;
            if (!int.TryParse(mtbDefenseValue.Text, out defVal))
            {
                MessageBox.Show("Defense valule must be an interger value.");
                return;
            }


            if (!int.TryParse(mtbDefenseModifier.Text, out defMod))
            {
                MessageBox.Show("Defense valule must be an interger value.");
                return;
            }

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

            foreach (object o in lbAllowedClasses.Items)
            {
                allowedClasses.Add(o.ToString());
            }

            shield = new ShieldData();

            shield.Name             = tbName.Text;
            shield.Type             = tbType.Text;
            shield.Price            = price;
            shield.Weight           = weight;
            shield.DefenseValue     = defVal;
            shield.DefenseModifier  = defMod;
            shield.AllowableClasses = allowedClasses.ToArray();

            this.FormClosing -= FormShieldDetails_FormClosing;
            this.Close();
        }
예제 #16
0
        void btnEdit_Click(object sender, EventArgs e)
        {
            if (lbDetails.SelectedItem != null)
            {
                string   detail = lbDetails.SelectedItem.ToString();
                string[] parts  = detail.Split(',');
                string   entity = parts[0].Trim();

                ShieldData data    = itemManager.ShieldData[entity];
                ShieldData newData = null;

                using (FormShieldDetail frmShieldData = new FormShieldDetail())
                {
                    frmShieldData.Shield = data;
                    frmShieldData.ShowDialog();

                    if (frmShieldData.Shield == null)
                    {
                        return;
                    }

                    if (frmShieldData.Shield.Name == entity)
                    {
                        itemManager.ShieldData[entity] = frmShieldData.Shield;
                        FillListBox();

                        return;
                    }

                    newData = frmShieldData.Shield;
                }

                DialogResult result = MessageBox.Show(
                    "Name has changed. Do you want to add a new entry?",
                    "New Entry",
                    MessageBoxButtons.YesNo);

                if (result == DialogResult.No)
                {
                    return;
                }

                if (itemManager.ShieldData.ContainsKey(newData.Name))
                {
                    MessageBox.Show("Entry already exists. Use Edit to modify the entry.");
                    return;
                }

                lbDetails.Items.Add(newData);
                itemManager.ShieldData.Add(newData.Name, newData);
            }
        }
예제 #17
0
    public static ShieldData createShieldData(ShieldType type)
    {
        ItemQuality quality = randQuality();
        float       level   = randLevel();

        int shieldLevel = Mathf.RoundToInt(type.shieldProtection() * level * qualityMultiplier(quality));
//		int rechargeSpeed = Mathf.RoundToInt(type.rechargeSpeed() * level * qualityMultiplier(quality));

        ShieldData data = new ShieldData(quality, level, type, shieldLevel, type.rechargeSpeed());

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

        return(data);
    }
예제 #18
0
 public void SetFromType(IEnumerable <int> infos)
 {
     lock (_datas)
     {
         foreach (var info in infos)
         {
             string name = ShieldData.GetShipType(info);//更新船舶类型名称
             set(_datas.Types, new ShieldInfo()
             {
                 ID = info, Name = name
             });
         }
     }
 }
예제 #19
0
    //This needs to set the defence and the defence type.
    static void DecideDefence(Unit attacker, Unit defender)
    {
        defence = defender.unitInfo.currentDefence;

        if (defender.defenceType == DefenceType.BLOCK)
        {
            if (defender.GetComponent <Shield>() != null)
            {
                defenceType     = DefenceType.SHIELD;
                struckAnimation = StruckAnimation.SHIELD;
                ShieldData data = (ShieldData)defender.GetComponent <Shield>().itemData;
                defence += data.shieldModifier;
                return;
            }
            else
            {
                if (defender.GetComponent <MeleeWeapon>() != null)
                {
                    if (defender.GetComponent <MeleeWeapon>().weaponData.weight > ItemData.Weight.light)
                    {
                        if (attacker.mainWeapon.weaponData.rangeType != WeaponData.Range.ranged)
                        {
                            defenceType     = DefenceType.BLOCK;
                            struckAnimation = StruckAnimation.BLOCK;
                            //block anim.
                            return;
                        }
                    }
                }
            }
        }
        if (defender.defenceType != DefenceType.EXPOSED)
        {
            //is there a square to dodge to?
            Tile dodgeTile = RangeFinder.FindTileToDodgeTo(defender.GetComponent <TacticsMovement>(), attacker, RangeFinder.FindDirection(defender.gameObject.transform, attacker.gameObject.transform));
            if (dodgeTile != null)
            {
                float heightOffset = dodgeTile.transform.position.y - defender.GetComponent <TacticsMovement>().currentTile.transform.position.y;
                defender.GetComponent <TacticsMovement>().dodgeTarget = new Vector3(dodgeTile.gameObject.transform.position.x, defender.transform.position.y + heightOffset, dodgeTile.gameObject.transform.position.z);
                defenceType = DefenceType.DODGE;
                return;
            }
        }
        //This catchall currently treats everything that doesn't fit the above as exposed.
        bonuses++;
        defenceType = DefenceType.EXPOSED;
    }
예제 #20
0
 private void newAddSave()
 {
     _datas = new ShieldData()
     {
         Types = new List <ShieldInfo>()
         {
             new ShieldInfo()
             {
                 ID = 50, Name = "引航"
             },
             new ShieldInfo()
             {
                 ID = 52, Name = "拖船"
             }
         }
     };
     save();
 }
예제 #21
0
    // Creates empty gameobject which holds the particle controller for calculating local movement of the particles.
    private void InitializeController()
    {
        if (shieldData == null)
        {
            shieldData = GetComponentInParent <ShieldData>();

            shieldObject = transform.parent;

            GameObject holder = new GameObject("ParticleController: " + transform.parent.parent.name);

            transform.parent = holder.transform;

            transform.localScale = Vector3.one;

            transform.localPosition = new Vector3(shieldData.particlesOffset.x, shieldData.particlesOffset.y, shieldData.particlesOffset.z);

            shieldObject.GetComponent <ShieldController>().SetParticleControllerHolder(holder);
        }
    }
예제 #22
0
        private void AddShield(ShieldData ShieldData)
        {
            if (FormDetails.ItemDataManager.ShieldData.ContainsKey(ShieldData.Name))
            {
                DialogResult result = MessageBox.Show(
                    ShieldData.Name + " already exists. Overwrite it?",
                    "Existing shield",
                    MessageBoxButtons.YesNo);

                if (result == DialogResult.No)
                {
                    return;
                }

                ItemDataManager.ShieldData[ShieldData.Name] = ShieldData;
                FillListBox();
                return;
            }
            ItemDataManager.ShieldData.Add(ShieldData.Name, ShieldData);
            lbDetails.Items.Add(ShieldData);
        }
        private void LoadWorld()
        {
            RpgLibrary.WorldClasses.LevelData levelData =
                Game.Content.Load <RpgLibrary.WorldClasses.LevelData>(@"Game\Levels\Starting Level");

            RpgLibrary.WorldClasses.MapData mapData =
                Game.Content.Load <RpgLibrary.WorldClasses.MapData>(@"Game\Levels\Maps\" + levelData.MapName);


            string[] fileNames = Directory.GetFiles(
                Path.Combine("Content/Game/Items", "Armor"),
                "*.xnb");

            foreach (string a in fileNames)
            {
                string path = "Game/Items/Armor/" + Path.GetFileNameWithoutExtension(a);

                ArmorData armorData = Game.Content.Load <ArmorData>(path);
                ItemManager.AddArmor(new Armor(armorData));
            }

            fileNames = Directory.GetFiles(
                Path.Combine("Content/Game/Items", "Shield"),
                "*.xnb");

            foreach (string a in fileNames)
            {
                string path = "Game/Items/Shield/" + Path.GetFileNameWithoutExtension(a);

                ShieldData shieldData = Game.Content.Load <ShieldData>(path);
                ItemManager.AddShield(new Shield(shieldData));
            }

            fileNames = Directory.GetFiles(
                Path.Combine("Content/Game/Items", "Weapon"),
                "*.xnb");

            foreach (string a in fileNames)
            {
                string path = "Game/Items/Weapon/" + Path.GetFileNameWithoutExtension(a);

                WeaponData weaponData = Game.Content.Load <WeaponData>(path);
                ItemManager.AddWeapon(new Weapon(weaponData));
            }

            CharacterLayerData charData =
                Game.Content.Load <CharacterLayerData>(@"Game\Levels\Chars\Starting Level");
            CharacterLayer characterLayer = new CharacterLayer();

            TileMap map = TileMap.FromMapData(mapData, Game.Content);

            foreach (var c in charData.Characters)
            {
                Character character;

                if (c.Value is NonPlayerCharacterData)
                {
                    Entity entity = new Entity(c.Value.Name, c.Value.EntityData, c.Value.Gender, EntityType.NPC);

                    using (Stream stream = new FileStream(c.Value.TextureName, FileMode.Open, FileAccess.Read))
                    {
                        Texture2D      texture = Texture2D.FromStream(GraphicsDevice, stream);
                        AnimatedSprite sprite  = new AnimatedSprite(texture, AnimationManager.Instance.Animations)
                        {
                            Position = new Vector2(c.Key.X * Engine.TileWidth, c.Key.Y * Engine.TileHeight)
                        };

                        character = new NonPlayerCharacter(entity, sprite);

                        ((NonPlayerCharacter)character).SetConversation(
                            ((NonPlayerCharacterData)c.Value).CurrentConversation);
                    }

                    characterLayer.Characters.Add(c.Key, character);
                }
            }

            map.AddLayer(characterLayer);

            Level level = new Level(map);

            ChestData chestData = Game.Content.Load <ChestData>(@"Game\Chests\Plain Chest");

            Chest chest = new Chest(chestData);

            BaseSprite chestSprite = new BaseSprite(
                containers,
                new Rectangle(0, 0, 32, 32),
                new Point(10, 10));

            ItemSprite itemSprite = new ItemSprite(
                chest,
                chestSprite);

            level.Chests.Add(itemSprite);

            World world = new World(GameRef, GameRef.ScreenRectangle);

            world.Levels.Add(level);
            world.CurrentLevel = 0;

            AnimatedSprite s = new AnimatedSprite(
                GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"),
                AnimationManager.Instance.Animations);

            s.Position = new Vector2(0 * Engine.TileWidth, 5 * Engine.TileHeight);

            EntityData ed = new EntityData("Eliza", 1, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16",
                                           "0|0|0");

            Entity e = new Entity("Eliza", ed, EntityGender.Female, EntityType.NPC);

            NonPlayerCharacter npc = new NonPlayerCharacter(e, s);

            npc.SetConversation("eliza1");
            //world.Levels[world.CurrentLevel].Characters.Add(npc);

            s = new AnimatedSprite(
                GameRef.Content.Load <Texture2D>(@"SpriteSheets\Eliza"),
                AnimationManager.Instance.Animations);
            s.Position = new Vector2(10 * Engine.TileWidth, 0);

            ed = new EntityData("Barbra", 2, 10, 10, 10, 10, 10, 10, "20|CON|12", "16|WIL|16", "0|0|0");

            e = new Entity("Barbra", ed, EntityGender.Female, EntityType.Merchant);

            Merchant  m     = new Merchant(e, s);
            Texture2D items = Game.Content.Load <Texture2D>("ObjectSprites/roguelikeitems");

            m.Backpack.AddItem(new GameItem(ItemManager.GetWeapon("Long Sword"), items, new Rectangle(0, 0, 16, 16)));
            m.Backpack.AddItem(new GameItem(ItemManager.GetWeapon("Short Sword"), items, new Rectangle(16, 0, 16, 16)));

            world.Levels[world.CurrentLevel].Characters.Add(m);
            ((CharacterLayer)world.Levels[world.CurrentLevel].Map.Layers.Find(x => x is CharacterLayer)).Characters.Add(new Point(10, 0), m);
            GamePlayScreen.World = world;

            CreateConversation();

            // ((NonPlayerCharacter)world.Levels[world.CurrentLevel].Characters[0]).SetConversation("eliza1");
        }
예제 #24
0
        /// <summary>
        /// Creates the data for the specified row.
        /// </summary>
        /// <param name="Row">The row.</param>
        internal Data Create(Row Row)
        {
            Data Data;

            switch (this.Index)
            {
            case 1:
            {
                Data = new BuildingData(Row, this);
                break;
            }

            case 2:
            {
                Data = new LocaleData(Row, this);
                break;
            }

            case 3:
            {
                Data = new ResourceData(Row, this);
                break;
            }

            case 4:
            {
                Data = new CharacterData(Row, this);
                break;
            }

            case 6:
            {
                Data = new ProjectileData(Row, this);
                break;
            }

            case 7:
            {
                Data = new BuildingClassData(Row, this);
                break;
            }

            case 8:
            {
                Data = new ObstacleData(Row, this);
                break;
            }

            case 9:
            {
                Data = new EffectData(Row, this);
                break;
            }

            case 10:
            {
                Data = new ParticleEmitterData(Row, this);
                break;
            }

            case 11:
            {
                Data = new ExperienceLevelData(Row, this);
                break;
            }

            case 12:
            {
                Data = new TrapData(Row, this);
                break;
            }

            case 13:
            {
                Data = new AllianceBadgeData(Row, this);
                break;
            }

            case 14:
            {
                Data = new GlobalData(Row, this);
                break;
            }

            case 15:
            {
                Data = new TownhallLevelData(Row, this);
                break;
            }

            case 16:
            {
                Data = new AlliancePortalData(Row, this);
                break;
            }

            case 17:
            {
                Data = new NpcData(Row, this);
                break;
            }

            case 18:
            {
                Data = new DecoData(Row, this);
                break;
            }

            case 19:
            {
                Data = new ResourcePackData(Row, this);
                break;
            }

            case 20:
            {
                Data = new ShieldData(Row, this);
                break;
            }

            case 21:
            {
                Data = new MissionData(Row, this);
                break;
            }

            case 22:
            {
                Data = new BillingPackageData(Row, this);
                break;
            }

            case 23:
            {
                Data = new AchievementData(Row, this);
                break;
            }

            case 25:
            {
                Data = new FaqData(Row, this);
                break;
            }

            case 26:
            {
                Data = new SpellData(Row, this);
                break;
            }

            case 27:
            {
                Data = new HintData(Row, this);
                break;
            }

            case 28:
            {
                Data = new HeroData(Row, this);
                break;
            }

            case 29:
            {
                Data = new LeagueData(Row, this);
                break;
            }

            case 30:
            {
                Data = new NewData(Row, this);
                break;
            }

            case 34:
            {
                Data = new AllianceBadgeLayerData(Row, this);
                break;
            }

            case 37:
            {
                Data = new VariableData(Row, this);
                break;
            }

            case 38:
            {
                Data = new GemBundleData(Row, this);
                break;
            }

            case 39:
            {
                Data = new VillageObjectData(Row, this);
                break;
            }

            default:
            {
                Data = new Data(Row, this);
                break;
            }
            }

            return(Data);
        }
예제 #25
0
파일: Shield.cs 프로젝트: ciarano84/barony
 public override void GetItemData()
 {
     itemData = new ShieldData();
 }
예제 #26
0
        internal Data Create(Row _Row)
        {
            Data _Data;

            switch ((Gamefile)this.Index)
            {
            case Gamefile.Buildings:
                _Data = new BuildingData(_Row, this);
                break;

            case Gamefile.Locales:
                _Data = new LocaleData(_Row, this);
                break;

            case Gamefile.Resources:
                _Data = new ResourceData(_Row, this);
                break;

            case Gamefile.Characters:
                _Data = new CharacterData(_Row, this);
                break;

            case Gamefile.Building_Classes:
                _Data = new BuildingClassData(_Row, this);
                break;

            case Gamefile.Obstacles:
                _Data = new ObstacleData(_Row, this);
                break;

            case Gamefile.Traps:
                _Data = new TrapData(_Row, this);
                break;

            case Gamefile.Globals:
                _Data = new GlobalData(_Row, this);
                break;

            case Gamefile.Experience_Levels:
                _Data = new ExperienceLevelData(_Row, this);
                break;

            case Gamefile.Townhall_Levels:
                _Data = new TownhallLevelData(_Row, this);
                break;

            case Gamefile.Npcs:
                _Data = new NpcData(_Row, this);
                break;

            case Gamefile.Decos:
                _Data = new DecoData(_Row, this);
                break;

            case Gamefile.Shields:
                _Data = new ShieldData(_Row, this);
                break;

            case Gamefile.Missions:
                _Data = new MissionData(_Row, this);
                break;

            case Gamefile.Achievements:
                _Data = new AchievementData(_Row, this);
                break;

            case Gamefile.Spells:
                _Data = new SpellData(_Row, this);
                break;

            case Gamefile.Heroes:
                _Data = new HeroData(_Row, this);
                break;

            case Gamefile.Leagues:
                _Data = new LeagueData(_Row, this);
                break;

            case Gamefile.Regions:
                _Data = new RegionData(_Row, this);
                break;

            case Gamefile.AllianceBadgeLayer:
                _Data = new AllianceBadgeLayerData(_Row, this);
                break;

            case Gamefile.Variables:
                _Data = new VariableData(_Row, this);
                break;

            case Gamefile.Village_Objects:
                _Data = new VillageObjectData(_Row, this);
                break;

            default:
                _Data = new Data(_Row, this);
                break;
            }

            return(_Data);
        }
예제 #27
0
        protected override void LoadContent()
        {
            _spriteBatch = new SpriteBatch(GraphicsDevice);

            DataManager.ReadEntityData(Content);
            DataManager.ReadArmorData(Content);
            DataManager.ReadShieldData(Content);
            DataManager.ReadWeaponData(Content);
            DataManager.ReadChestData(Content);
            DataManager.ReadKeyData(Content);
            DataManager.ReadSkillData(Content);

            FontManager.AddFont("testfont", Content.Load <SpriteFont>("Fonts/scenefont"));
            TextureManager.AddTexture("FullSheet", Content.Load <Texture2D>("GUI/ProjectUtumno_full"));
            string[] fileNames = Directory.GetFiles(
                Path.Combine("Content/Game/Items", "Armor"),
                "*.xnb");

            foreach (string a in fileNames)
            {
                string path = "Game/Items/Armor/" + Path.GetFileNameWithoutExtension(a);

                ArmorData armorData = Content.Load <ArmorData>(path);
                ItemManager.AddArmor(new Armor(armorData));
            }

            fileNames = Directory.GetFiles(
                Path.Combine("Content/Game/Items", "Shield"),
                "*.xnb");

            foreach (string a in fileNames)
            {
                string path = "Game/Items/Shield/" + Path.GetFileNameWithoutExtension(a);

                ShieldData shieldData = Content.Load <ShieldData>(path);
                ItemManager.AddShield(new Shield(shieldData));
            }

            fileNames = Directory.GetFiles(
                Path.Combine("Content/Game/Items", "Weapon"),
                "*.xnb");

            foreach (string a in fileNames)
            {
                string path = "Game/Items/Weapon/" + Path.GetFileNameWithoutExtension(a);

                WeaponData weaponData = Content.Load <WeaponData>(path);
                ItemManager.AddWeapon(new Weapon(weaponData));
            }

            PotionData potionData = new PotionData
            {
                Name             = "Minor Healing Potion",
                Type             = "Potion",
                Target           = "Health",
                Price            = 100,
                Weight           = .25f,
                Minimum          = 6,
                Maximum          = 13,
                AllowableClasses = new[] { "Fighter", "Wizard", "Rogue", "Priest" }
            };

            Potion potion = new Potion(potionData);

            ItemManager.AddPotion(potion);

            potionData = new PotionData
            {
                Name             = "Minor Mana Potion",
                Type             = "Potion",
                Target           = "Mana",
                Price            = 100,
                Weight           = .25f,
                Minimum          = 6,
                Maximum          = 13,
                AllowableClasses = new[] { "Wizard", "Priest" }
            };

            potion = new Potion(potionData);

            ItemManager.AddPotion(potion);

            potionData = new PotionData
            {
                Name             = "Minor Stamina Potion",
                Type             = "Potion",
                Target           = "Stamina",
                Price            = 100,
                Weight           = .25f,
                Minimum          = 6,
                Maximum          = 13,
                AllowableClasses = new[] { "Fighter", "Rogue" }
            };

            potion = new Potion(potionData);

            ItemManager.AddPotion(potion);

            GameItemManager.AddItem("Long Sword", new GameItem(ItemManager.GetWeapon("Long Sword"), "FullSheet", new Rectangle(1696, 1408, 32, 32)));
            GameItemManager.AddItem("Short Sword", new GameItem(ItemManager.GetWeapon("Short Sword"), "FullSheet", new Rectangle(800, 1504, 32, 32)));
            GameItemManager.AddItem("Apprentice Staff", new GameItem(ItemManager.GetWeapon("Apprentice Staff"), "FullSheet", new Rectangle(224, 1408, 32, 32)));
            GameItemManager.AddItem("Acolyte Staff", new GameItem(ItemManager.GetWeapon("Acolyte Staff"), "FullSheet", new Rectangle(256, 1408, 32, 32)));
            GameItemManager.AddItem("Leather Armor", new GameItem(ItemManager.GetArmor("Leather Armor"), "FullSheet", new Rectangle(1248, 1216, 32, 32)));
            GameItemManager.AddItem("Chain Mail", new GameItem(ItemManager.GetArmor("Chain Mail"), "FullSheet", new Rectangle(1472, 1184, 32, 32)));
            GameItemManager.AddItem("Studded Leather Armor", new GameItem(ItemManager.GetArmor("Studded Leather Armor"), "FullSheet", new Rectangle(1984, 1120, 32, 32)));
            GameItemManager.AddItem("Light Robes", new GameItem(ItemManager.GetArmor("Light Robes"), "FullSheet", new Rectangle(992, 1216, 32, 32)));
            GameItemManager.AddItem("Medium Robes", new GameItem(ItemManager.GetArmor("Medium Robes"), "FullSheet", new Rectangle(1024, 1216, 32, 32)));
            GameItemManager.AddItem("Minor Healing Potion", new GameItem(ItemManager.GetPotion("Minor Healing Potion"), "FullSheet", new Rectangle(832, 1344, 32, 32)));
            GameItemManager.AddItem("Minor Mana Potion", new GameItem(ItemManager.GetPotion("Minor Mana Potion"), "FullSheet", new Rectangle(576, 1344, 32, 32)));
            GameItemManager.AddItem("Minor Stamina Potion", new GameItem(ItemManager.GetPotion("Minor Stamina Potion"), "FullSheet", new Rectangle(704, 1344, 32, 32)));
        }
예제 #28
0
 public Shield(ShieldData sd) : base(sd)
 {
     _amount   = sd.amount;
     _rate     = sd.rate;
     _duration = sd.duration;
 }
예제 #29
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;
    }
예제 #30
0
        private void addNewItemsToPlayerPartyInventory()
        {
            Dictionary <Rarity, List <WeaponData> > weapons = new Dictionary <Rarity, List <WeaponData> >();
            Dictionary <Rarity, List <ShieldData> > shields = new Dictionary <Rarity, List <ShieldData> >();
            Dictionary <Rarity, List <ItemData> >   items   = new Dictionary <Rarity, List <ItemData> >();

            foreach (Rarity rarity in Enum.GetValues(typeof(Rarity)))
            {
                if (rarity == Rarity.Never)
                {
                    continue;
                }

                weapons[rarity] = ResourceManager.GetWeaponDataWhere(wd => wd.Rarity == rarity);
                shields[rarity] = ResourceManager.GetShieldDataWhere(sd => sd.Rarity == rarity);
                items[rarity]   = ResourceManager.GetItemDataWhere(id => id.Rarity == rarity);
            }

            List <Rarity> rarityList = new List <Rarity> {
                Rarity.Common,
                Rarity.Uncommon,
                Rarity.Rare,
                Rarity.Common,
                Rarity.Uncommon,
                Rarity.Common
            };

            List <ThinkActionType> thinkActionTypeList = new List <ThinkActionType> {
                ThinkActionType.Attack,
                ThinkActionType.Defend,
                ThinkActionType.Attack,
                ThinkActionType.UseItem
            };

            int count = Math.Max(minimumItemsWon, Battle.PlayerPartyItemsUsed + Game1.Random.Next(Math.Max(minimumForItemsWonRandomizer, Battle.PlayerPartyItemsUsed / itemsUsedDivisorForItemsWonRandomizer)));

            for (int i = 0; i < count; ++i)
            {
                Rarity rarity = rarityList.Sample();
                switch (thinkActionTypeList.Sample())
                {
                case ThinkActionType.Attack:
                    if (weapons[rarity].Count == 0)
                    {
                        --i;
                        continue;
                    }
                    WeaponData weaponData = weapons[rarity].Sample();
                    if (!Battle.PlayerParty.HasMemberOfCharacterClass(weaponData.CharacterClass))
                    {
                        --i;
                        continue;
                    }
                    string weaponName = new Attributes(weaponData).ToString(weaponData.Name);
                    Battle.PlayerParty.WeaponInventories[weaponData.CharacterClass].AddItem(weaponName, null);
                    ItemsWon.Add(new Tuple <string, CharacterClass>(weaponName, weaponData.CharacterClass));
                    Logger.Log("Player party won weapon " + weaponName);
                    break;

                case ThinkActionType.Defend:
                    if (shields[rarity].Count == 0)
                    {
                        --i;
                        continue;
                    }
                    ShieldData shieldData = shields[rarity].Sample();
                    string     shieldName = new Attributes(shieldData).ToString(shieldData.Name);
                    Battle.PlayerParty.ShieldInventory.AddItem(shieldName, null);
                    ItemsWon.Add(new Tuple <string, CharacterClass>(shieldName, CharacterClass.Enemy));
                    Logger.Log("Player party won shield " + shieldName);
                    break;

                case ThinkActionType.UseItem:
                    if (items[rarity].Count == 0)
                    {
                        --i;
                        continue;
                    }
                    ItemData itemData = items[rarity].Sample();
                    string   itemName = itemData.Name.ToUpperFirstChar();
                    Battle.PlayerParty.ItemInventory.AddItem(itemName, null);
                    ItemsWon.Add(new Tuple <string, CharacterClass>(itemName, CharacterClass.Enemy));
                    Logger.Log("Player party won item " + itemName);
                    break;
                }
            }
        }