public LakeElementType()
        {
            _elementType     = ElementType.Type.RESSOURCE_WATER;
            _name            = ElementType.GetTypeName(_elementType);
            _isRessources    = true;
            _hasLevelEnable  = false;
            _imagePath       = "pack://application:,,,/Resources/Images/resource_lake.png";
            _detailImagePath = "pack://application:,,,/Resources/Images/menu_lake.png";
            _elementInfo     = "Increases the food production efficiency of adjacent Farms by 50%.";

            // Bonus linked to fields
            _elementProductionBonus = new ElementProductionBonus(0, 0, 0, 0);
            _elementProductionBonus.IsRessourcesBonus = true;
            _elementProductionBonus.FirstBonus        = 50;
            _elementProductionBonus.SecondBonus       = 50;
        }
        public StoneElementType()
        {
            _elementType = ElementType.Type.RESSOURCE_STONE;
            _name = ElementType.GetTypeName(_elementType);
            _isRessources = true;
            _hasLevelEnable = false;
            _imagePath = "pack://application:,,,/Resources/Images/resource_stone.png";
            _detailImagePath = "pack://application:,,,/Resources/Images/menu_stone.png";
            _elementInfo = "Each Quarry gains 50% for the first adjacent stone node, then 40% for each after that. The Quarry's production efficiency can then be increased up to 75% by an adjacent Stonemason, and up to 30% by each adjacent Cottage.";

            // Bonus linked to Stone
            _elementProductionBonus = new ElementProductionBonus(0, 0, 0, 0);
            _elementProductionBonus.IsRessourcesBonus = true;
            _elementProductionBonus.FirstBonus = 50;
            _elementProductionBonus.SecondBonus = 40;
        }
        public StoneElementType()
        {
            _elementType     = ElementType.Type.RESSOURCE_STONE;
            _name            = ElementType.GetTypeName(_elementType);
            _isRessources    = true;
            _hasLevelEnable  = false;
            _imagePath       = "pack://application:,,,/Resources/Images/resource_stone.png";
            _detailImagePath = "pack://application:,,,/Resources/Images/menu_stone.png";
            _elementInfo     = "Each Quarry gains 50% for the first adjacent stone node, then 40% for each after that. The Quarry's production efficiency can then be increased up to 75% by an adjacent Stonemason, and up to 30% by each adjacent Cottage.";

            // Bonus linked to Stone
            _elementProductionBonus = new ElementProductionBonus(0, 0, 0, 0);
            _elementProductionBonus.IsRessourcesBonus = true;
            _elementProductionBonus.FirstBonus        = 50;
            _elementProductionBonus.SecondBonus       = 40;
        }
Example #4
0
        public FieldsElementType()
        {
            _elementType     = ElementType.Type.RESSOURCE_FIELDS;
            _name            = ElementType.GetTypeName(_elementType);
            _isRessources    = true;
            _hasLevelEnable  = false;
            _imagePath       = "pack://application:,,,/Resources/Images/resource_corn.png";
            _detailImagePath = "pack://application:,,,/Resources/Images/menu_field.png";
            _elementInfo     = "Each Woodcutter's Hut gains 50% production efficiency from the first adjacent wood node, then 40% for each after that. The Woodcutter's Hut production efficiency can then be further increased up to 75% by an adjacent Sawmill, and up to 30% by each adjacent Cottage.";

            // Bonus linked to fields
            _elementProductionBonus = new ElementProductionBonus(0, 0, 0, 0);
            _elementProductionBonus.IsRessourcesBonus = true;
            _elementProductionBonus.FirstBonus        = 50;
            _elementProductionBonus.SecondBonus       = 40;
        }
        public LakeElementType()
        {
            _elementType = ElementType.Type.RESSOURCE_WATER;
            _name = ElementType.GetTypeName(_elementType);
            _isRessources = true;
            _hasLevelEnable = false;
            _imagePath = "pack://application:,,,/Resources/Images/resource_lake.png";
            _detailImagePath = "pack://application:,,,/Resources/Images/menu_lake.png";
            _elementInfo = "Increases the food production efficiency of adjacent Farms by 50%.";

            // Bonus linked to fields
            _elementProductionBonus = new ElementProductionBonus(0, 0, 0, 0);
            _elementProductionBonus.IsRessourcesBonus = true;
            _elementProductionBonus.FirstBonus = 50;
            _elementProductionBonus.SecondBonus = 50;
        }
        public FieldsElementType()
        {
            _elementType = ElementType.Type.RESSOURCE_FIELDS;
            _name = ElementType.GetTypeName(_elementType);
            _isRessources = true;
            _hasLevelEnable = false;
            _imagePath = "pack://application:,,,/Resources/Images/resource_corn.png";
            _detailImagePath = "pack://application:,,,/Resources/Images/menu_field.png";
            _elementInfo = "Each Woodcutter's Hut gains 50% production efficiency from the first adjacent wood node, then 40% for each after that. The Woodcutter's Hut production efficiency can then be further increased up to 75% by an adjacent Sawmill, and up to 30% by each adjacent Cottage.";

            // Bonus linked to fields
            _elementProductionBonus = new ElementProductionBonus(0,0,0,0);
            _elementProductionBonus.IsRessourcesBonus = true;
            _elementProductionBonus.FirstBonus = 50;
            _elementProductionBonus.SecondBonus = 40;
        }
        public void ShowBuildingDetails()
        {
            _mainWindow = MainWindow.MIns;
            if (_mainWindow == null)
            {
                return;
            }

            // Building menu visibility
            _mainWindow.building_menu_englob.Height = 400;
            _mainWindow.building_details.Visibility = Visibility.Visible;

            // if anything is not defined, return
            if (_elementMenuDetail == null || _elementMenuDetail.GetElementType() == null)
            {
                return;
            }

            // Add visual elements
            ImageBrush image = new ImageBrush
            {
                ImageSource = new BitmapImage(new Uri(_elementMenuDetail.GetElementType().GetDetailImagePath(), UriKind.RelativeOrAbsolute))
            };

            _mainWindow.building_details_img.Fill = image;

            // set the elementInfo
            _mainWindow.building_detail_info.Text = _elementMenuDetail.GetElementType().GetElementInfo();

            int elementLevel = _elementMenuDetail.Level;

            if (elementLevel > 0 && elementLevel <= 10)
            {
                // hide second ressource delete button
                _mainWindow.delete_ressource_button.Visibility = Visibility.Hidden;

                // it's a building, show level info
                _mainWindow.building_detail_level_info.Visibility = Visibility.Visible;
                _mainWindow.building_detail_level.Content         = _elementMenuDetail.Level;

                IElementType elementType = _elementMenuDetail.GetElementType();
                if (elementType == null)
                {
                    return;
                }

                if (elementLevel < 10)
                {
                    ElementCost elementCost = elementType.GetElementCost(elementLevel + 1);

                    // Show upgrade button
                    _mainWindow.upgrade_element_button.Visibility = Visibility.Visible;

                    // Show infos
                    _mainWindow.wood_dockpanel.Visibility  = Visibility.Visible;
                    _mainWindow.stone_dockpanel.Visibility = Visibility.Visible;
                    _mainWindow.iron_dockpanel.Visibility  = Visibility.Visible;

                    // Show cost for upgrade
                    _mainWindow.building_detail_wood_cost.Content  = elementCost.Wood;
                    _mainWindow.building_detail_stone_cost.Content = elementCost.Stone;
                    _mainWindow.building_detail_iron_cost.Content  = elementCost.Iron;
                }
                else
                {
                    // hide upgrade button
                    _mainWindow.upgrade_element_button.Visibility = Visibility.Hidden;

                    // hide upgrade qty
                    _mainWindow.wood_dockpanel.Visibility  = Visibility.Hidden;
                    _mainWindow.stone_dockpanel.Visibility = Visibility.Hidden;
                    _mainWindow.iron_dockpanel.Visibility  = Visibility.Hidden;
                }

                #region Storage Label handle
                ElementStorage elementStorage = elementType.GetElementStorage(elementLevel + 1);
                if (elementStorage != null)
                {
                    _mainWindow.storage_dockpanel.Visibility         = Visibility.Visible;
                    _mainWindow.building_detail_storage_next.Content = elementStorage.BaseStorage;
                }
                else
                {
                    _mainWindow.storage_dockpanel.Visibility = Visibility.Hidden;
                }

                elementStorage = elementType.GetElementStorage(elementLevel);
                if (elementStorage != null && elementType.GetElementType() != ElementType.Type.BUILDING_TOWNHALL)
                {
                    _mainWindow.building_storage_label.Visibility = Visibility.Visible;
                    _mainWindow.building_detail_storage.Content   = elementStorage.BaseStorage;
                }
                else
                {
                    _mainWindow.building_detail_storage.Content   = "";
                    _mainWindow.building_storage_label.Visibility = Visibility.Hidden;
                }
                #endregion

                // Show/Hide production label
                #region Production Label handle

                ElementProduction elementProduction =
                    _elementMenuDetail.GetElementType().GetElementProduction(elementLevel);
                if (elementProduction != null)
                {
                    _mainWindow.building_production_label.Visibility = Visibility.Visible;
                    _mainWindow.building_detail_production.Content   = elementProduction.GetFirstNotNull();
                }
                else
                {
                    // hide production label
                    _mainWindow.building_detail_production.Content   = "";
                    _mainWindow.building_production_label.Visibility = Visibility.Hidden;
                }

                elementProduction =
                    _elementMenuDetail.GetElementType().GetElementProduction(elementLevel + 1);
                if (elementProduction != null)
                {
                    _mainWindow.production_dockpanel.Visibility         = Visibility.Visible;
                    _mainWindow.building_detail_production_next.Content = elementProduction.GetFirstNotNull();
                }
                else
                {
                    // hide production label
                    _mainWindow.building_detail_production_next.Content = "";
                    _mainWindow.production_dockpanel.Visibility         = Visibility.Collapsed;
                }

                #endregion

                // Show/Hide Bonus label
                #region Bonus Label handle

                _mainWindow.building_units_label.Visibility = Visibility.Hidden;
                _mainWindow.building_detail_units.Content   = "";

                ElementProductionBonus elementProductionBonus =
                    _elementMenuDetail.GetElementType().GetElementProductionBonus(elementLevel);
                if (elementProductionBonus != null)
                {
                    _mainWindow.building_bonus_label.Visibility = Visibility.Visible;

                    if (!elementProductionBonus.IsRessourcesBonus)
                    {
                        _mainWindow.building_detail_bonus.Content = String.Format("{0}%",
                                                                                  elementProductionBonus.GetFirstNotNull());
                    }
                }
                else if (_elementMenuDetail.GetElementType().IsMilitary())
                {
                    var militaryElement = (IUnitBuilding)_elementMenuDetail.GetElementType();

                    if (!militaryElement.IsBarrack())
                    {
                        _mainWindow.building_bonus_label.Visibility = Visibility.Visible;
                        _mainWindow.building_detail_bonus.Content   = String.Format("{0}%",
                                                                                    militaryElement.GetUnitBonus(_elementMenuDetail.Level));
                    }
                    else
                    {
                        _mainWindow.building_units_label.Visibility = Visibility.Visible;
                        _mainWindow.building_detail_units.Content   = militaryElement.GetArmySize(_elementMenuDetail.Level);

                        _mainWindow.building_bonus_label.Visibility = Visibility.Hidden;
                        _mainWindow.building_detail_bonus.Content   = "";
                    }
                }
                else
                {
                    _mainWindow.building_bonus_label.Visibility = Visibility.Hidden;
                    _mainWindow.building_detail_bonus.Content   = "";
                }

                elementProductionBonus =
                    _elementMenuDetail.GetElementType().GetElementProductionBonus(elementLevel + 1);
                if (elementProductionBonus != null)
                {
                    _mainWindow.bonus_dockpanel.Visibility = Visibility.Visible;

                    if (!elementProductionBonus.IsRessourcesBonus)
                    {
                        _mainWindow.building_detail_bonus_next.Content = String.Format("{0}%",
                                                                                       elementProductionBonus.GetFirstNotNull());
                    }
                }
                else
                {
                    _mainWindow.bonus_dockpanel.Visibility         = Visibility.Collapsed;
                    _mainWindow.building_detail_bonus_next.Content = "";
                }

                #endregion

                // Show/Hide # ressources around element
                #region Label for # ressources around

                if (_elementMenuDetail.NbRessourcesAround > 0)
                {
                    _mainWindow.ressources_bonus_dockpanel.Visibility   = Visibility.Visible;
                    _mainWindow.building_detail_ressource_bonus.Content =
                        _elementMenuDetail.NbRessourcesAround;
                }
                else
                {
                    _mainWindow.ressources_bonus_dockpanel.Visibility = Visibility.Collapsed;
                }

                #endregion

                // Show/Hide # fields count
                #region Fields Count
                if (_elementMenuDetail.FieldsCount > 0)
                {
                    _mainWindow.fields_count_dockpanel.Visibility    = Visibility.Visible;
                    _mainWindow.building_detail_fields_count.Content = _elementMenuDetail.FieldsCount;
                }
                else
                {
                    _mainWindow.fields_count_dockpanel.Visibility = Visibility.Collapsed;
                }
                #endregion

                // Show/Hide total bonus on element
                #region Total bonus
                if (_elementMenuDetail.TotalBonus > 100)
                {
                    _mainWindow.total_bonus_dockpanel.Visibility    = Visibility.Visible;
                    _mainWindow.building_detail_total_bonus.Content = (_elementMenuDetail.TotalBonus - 100) + "%";
                }
                else
                {
                    _mainWindow.total_bonus_dockpanel.Visibility = Visibility.Collapsed;
                }
                #endregion

                // Show/hide delete button
                _mainWindow.delete_element_button.Visibility = (elementType.GetElementType() == ElementType.Type.BUILDING_TOWNHALL)
                    ? Visibility.Collapsed : Visibility.Visible;
            }
            else
            {
                // it's not a building (no level)
                _mainWindow.building_detail_level_info.Visibility = Visibility.Collapsed;


                if (_elementMenuDetail.GetElementType() != null &&
                    _elementMenuDetail.GetElementType().GetElementType() != ElementType.Type.BUILDING_TOWNHALL)
                {
                    _mainWindow.delete_ressource_button.Visibility = Visibility.Visible;
                }
            }
        }