Example #1
0
        public frmInfo(enums.infoType type1, int ind1)
        {
            type = type1;
            ind  = ind1;

            platformSpec.resolution.set(this.Controls);


            switch (type)
            {
            case enums.infoType.units:
                this.Text = Statistics.units[ind].name;
                break;

            case enums.infoType.terrain:
                this.Text = Statistics.terrains[ind].name;
                break;

            case enums.infoType.techno:
                this.Text = Statistics.technologies[ind].name;
                break;

            case enums.infoType.gov:
                this.Text = Statistics.governements[ind].name;
                break;

            case enums.infoType.eco:
                this.Text = Statistics.economies[ind].name;
                break;

            case enums.infoType.resources:
                this.Text = Statistics.resources[ind].name;
                break;

            case enums.infoType.tutorial:
                this.Text = Tutorial.getTextFromInd(ind).title;
                break;

            case enums.infoType.buildings:
                this.Text = Statistics.buildings[ind].name;
                break;

            case enums.infoType.smallWonders:
                this.Text = Statistics.smallWonders[ind].name;
                break;

            case enums.infoType.wonders:
                this.Text = Statistics.wonders[ind].name;
                break;
            }
        }
Example #2
0
        private void frmInfoTree_Load(object sender, System.EventArgs e)
        {
            /*		TreeNode tnUnits = new TreeNode( "Units" ),
             *                      tnCivilization = new TreeNode( "Civilizations" ),
             *                      tnTerrain = new TreeNode( "Terrain" ),
             *                      tnTechno = new TreeNode( "Technologies" ),
             *                      tnGov = new TreeNode( "Governements" ),
             *                      tnEco = new TreeNode( "Economies" ),
             *                      tnMisc = new TreeNode( "Misc" ),
             *                      tnCaseImp = new TreeNode( "Case improvements" ),
             *                      tnResources = new TreeNode( "Resources" ),
             *                      tnSpecialResources = new TreeNode( "Special resources" ),
             *                      tnTutorial = new TreeNode( "Tutorial" );		*/
            TreeNode tnUnits        = new TreeNode(language.getAString(language.order.encyclopediaUnits)),
                     tnCivilization = new TreeNode(language.getAString(language.order.encyclopediaCivilizations)),
                     tnTerrain      = new TreeNode(language.getAString(language.order.encyclopediaTerrains)),
                     tnTechno       = new TreeNode(language.getAString(language.order.encyclopediaTechnologies)),
                     tnGov          = new TreeNode(language.getAString(language.order.encyclopediaGovernements)),
                     tnEco          = new TreeNode(language.getAString(language.order.encyclopediaEconomies)),
            //	tnCaseImp = new TreeNode( "Case improvements" ),
                     tnResources = new TreeNode(language.getAString(language.order.encyclopediaResources)),
            //	tnSpecialResources = new TreeNode( "Special resources" ),
                     tnTutorial     = new TreeNode(language.getAString(language.order.encyclopediaTutorial)),
                     tnBuildings    = new TreeNode(language.getAString(language.order.encyclopediaBuildings)),
                     tnSmallWonders = new TreeNode(language.getAString(language.order.encyclopediaSmallWonders)),
                     tnWonders      = new TreeNode(language.getAString(language.order.encyclopediaWonders)),
                     tnMisc         = new TreeNode(language.getAString(language.order.encyclopediaMisc));

            tnUnits.Tag        = enums.infoType.units;
            tnCivilization.Tag = enums.infoType.civ;
            tnTerrain.Tag      = enums.infoType.terrain;
            tnTechno.Tag       = enums.infoType.techno;
            tnGov.Tag          = enums.infoType.gov;
            tnEco.Tag          = enums.infoType.eco;
            //	tnMisc.Tag = enums.infoType.misc;
            //	tnCaseImp.Tag = enums.infoType.caseImp;
            tnResources.Tag = enums.infoType.resources;
            //	tnSpecialResources.Tag = enums.infoType.specialResources;
            tnTutorial.Tag     = enums.infoType.tutorial;
            tnBuildings.Tag    = enums.infoType.buildings;
            tnSmallWonders.Tag = enums.infoType.smallWonders;
            tnWonders.Tag      = enums.infoType.wonders;
            tnMisc.Tag         = enums.infoType.misc;

            System.Collections.ArrayList al;

            #region units

            al = new ArrayList(Statistics.units.Length);

            for (int i = 0; i < Statistics.units.Length; i++)
            {
                al.Add(Statistics.units[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnUnits.Nodes.Add(tnUnit);
            }

            /*	for ( int i = 0; i < Statistics.units.Length; i ++ )
             *      if ( Statistics.units[ i ].bmp != null )
             *      {
             *              TreeNode tnUnit = new TreeNode( Statistics.units[ i ].name );
             *
             *              tnUnit.Tag = i;
             *              tnUnits.Nodes.Add( tnUnit );
             *      }*/

            #endregion

            #region civilization

            al = new ArrayList(Statistics.civilizations.Length);

            for (int i = 0; i < Statistics.civilizations.Length; i++)
            {
                al.Add(Statistics.civilizations[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnCivilization.Nodes.Add(tnUnit);
            }

            /*	for ( int i = 0; i < Statistics.civilizations.Length; i ++ )
             *      {
             *              TreeNode tnUnit = new TreeNode( Statistics.civilizations[ i ].name );
             *              tnUnit.Tag = i;
             *              tnCivilization.Nodes.Add( tnUnit );
             *      }*/

            #endregion

            #region terrain

            al = new ArrayList(Statistics.terrains.Length);

            for (int i = 0; i < Statistics.terrains.Length; i++)
            {
                al.Add(Statistics.terrains[i]);
            }

            al.Sort();

            foreach (Stat.Terrain t in al)
            {
                TreeNode tnUnit = new TreeNode(t.name);
                tnUnit.Tag = (int)t.type;
                tnTerrain.Nodes.Add(tnUnit);
            }

            #endregion

            #region Statistics.technologies

            al = new ArrayList(Statistics.technologies.Length);

            for (int i = 0; i < Statistics.technologies.Length; i++)
            {
                al.Add(Statistics.technologies[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnTechno.Nodes.Add(tnUnit);
            }

            /*	for ( int i = 0; i < Statistics.technologies.Length; i ++ )
             *      {
             *              TreeNode tnUnit = new TreeNode( Statistics.technologies[ i ].name );
             *              tnUnit.Tag = i;
             *              tnTechno.Nodes.Add( tnUnit );
             *      }*/
            #endregion

            #region Statistics.governements

            al = new ArrayList(Statistics.governements.Length);

            for (int i = 0; i < Statistics.governements.Length; i++)
            {
                al.Add(Statistics.governements[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnGov.Nodes.Add(tnUnit);
            }

            /*
             * for ( int i = 0; i < Statistics.governements.Length; i ++ )
             * {
             *      TreeNode tnUnit = new TreeNode( Statistics.governements[ i ].name );
             *      tnUnit.Tag = i;
             *      tnGov.Nodes.Add( tnUnit );
             * }*/
            #endregion

            #region Statistics.economies

            al = new ArrayList(Statistics.economies.Length);

            for (int i = 0; i < Statistics.economies.Length; i++)
            {
                al.Add(Statistics.economies[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnEco.Nodes.Add(tnUnit);
            }

            /*
             * for ( int i = 0; i < Statistics.economies.Length; i++ )
             * {
             *      TreeNode tnUnit = new TreeNode( Statistics.economies[ i ].name );
             *
             *      tnUnit.Tag = i;
             *      tnEco.Nodes.Add( tnUnit );
             * }*/
            #endregion

            #region resource

            al = new ArrayList(Statistics.resources.Length);
            al.Clear();

            for (int i = 0; i < Statistics.resources.Length; i++)
            {
                al.Add(Statistics.resources[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnResource = new TreeNode(s.name);
                tnResource.Tag = s.type;
                tnResources.Nodes.Add(tnResource);
            }

            #endregion

            #region tutorial

            for (int i = 0; i < (int)Tutorial.order.tot; i++)
            {
                TreeNode tnI = new TreeNode(Tutorial.getTextFromInd(i).title);
                tnI.Tag = i;
                tnTutorial.Nodes.Add(tnI);
            }

            #endregion

            #region buildings

            al = new ArrayList(Statistics.buildings.Length);

            for (int i = 0; i < Statistics.buildings.Length; i++)
            {
                al.Add(Statistics.buildings[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnBuildings.Nodes.Add(tnUnit);
            }

            #endregion

            #region small wonders

            al = new ArrayList(Statistics.smallWonders.Length);

            for (int i = 0; i < Statistics.smallWonders.Length; i++)
            {
                al.Add(Statistics.smallWonders[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnSmallWonders.Nodes.Add(tnUnit);
            }

            #endregion

            #region wonders

            al = new ArrayList(Statistics.wonders.Length);

            for (int i = 0; i < Statistics.wonders.Length; i++)
            {
                al.Add(Statistics.wonders[i]);
            }

            al.Sort();

            foreach (Stat.General s in al)
            {
                TreeNode tnUnit = new TreeNode(s.name);
                tnUnit.Tag = (int)s.type;
                tnWonders.Nodes.Add(tnUnit);
            }

            #endregion

            /*		for ( int i = 0; i < Statistics.resources.Length; i++ )
             *              {
             *                      TreeNode tnResource = new TreeNode( Statistics.resources[ i ].name );
             *
             *                      tnResource.Tag = i;
             *                      tnResources.Nodes.Add( tnResource );
             *              }*/

            /*	for ( int i = 0; i < Form1.case.Length; i++ )
             *      {
             *              TreeNode tnUnit = new TreeNode( Statistics.economies[ i ].name );
             *
             *              tnUnit.Tag = i;
             *              tnEco.Nodes.Add( tnUnit );
             *      }*/

            tvInfo.Nodes.Add(tnUnits);
            tvInfo.Nodes.Add(tnCivilization);
            tvInfo.Nodes.Add(tnTerrain);
            tvInfo.Nodes.Add(tnTechno);
            tvInfo.Nodes.Add(tnGov);
            tvInfo.Nodes.Add(tnEco);
            //		tvInfo.Nodes.Add( tnCaseImp );
            //		tvInfo.Nodes.Add( tnMisc );
            tvInfo.Nodes.Add(tnResources);
            tvInfo.Nodes.Add(tnBuildings);
            tvInfo.Nodes.Add(tnSmallWonders);
            tvInfo.Nodes.Add(tnWonders);
            tvInfo.Nodes.Add(tnTutorial);
            tvInfo.Nodes.Add(tnMisc);
            //		tvInfo.Nodes.Add( tnSpecialResources );

            tvInfo.AfterSelect += new TreeViewEventHandler(tvInfo_AfterSelect);
        }
Example #3
0
        protected override void OnPaint(PaintEventArgs e)
        {
            //	base.OnPaint(e);
            e.Graphics.Clear(Form1.defaultBackColor);
            int vPos          = spacing,
                titleVSpacing = (int)e.Graphics.MeasureString("b", titleFont).Height,
                otherVSpacing = (int)e.Graphics.MeasureString("b", otherFont).Height;
            Bitmap   affBmp;
            Graphics g;
            byte     terrain;

            switch (type)
            {
                #region units X
            case enums.infoType.units:

                affBmp = new Bitmap(this.ClientSize.Width * 2 / 3, 60 * platformSpec.resolution.mod);
                g      = Graphics.FromImage(affBmp);

                g.Clear(Color.Black);

                //	byte terrain;
                if (
                    Statistics.units[ind].terrain == 1 ||
                    Statistics.units[ind].terrain == 3
                    )
                {
                    terrain = (byte)enums.terrainType.plain;
                }
                else
                {
                    terrain = (byte)enums.terrainType.coast;
                }

                for (int y = -1; y < affBmp.Width / 50 + 2; y++)
                {
                    for (int x = 0; x < affBmp.Height / 15 + 2; x++)
                    {
                        g.DrawImage(
                            Statistics.terrains[terrain].bmp,
                            new Rectangle(
                                x * Form1.caseWidth - Form1.caseWidth / 2 - 10,
                                y * Form1.caseHeight - 20 - Form1.caseHeight / 2,
                                Statistics.terrains[terrain].bmp.Width,
                                Statistics.terrains[terrain].bmp.Height
                                ),
                            0,
                            0,
                            Statistics.terrains[terrain].bmp.Width,
                            Statistics.terrains[terrain].bmp.Height,
                            GraphicsUnit.Pixel,
                            Form1.ia
                            );
                    }

                    for (int x = 0; x < 6; x++)
                    {
                        g.DrawImage(
                            Statistics.terrains[terrain].bmp,
                            new Rectangle(
                                x * Form1.caseWidth - Form1.caseWidth - 10,
                                y * Form1.caseHeight - 20,
                                Statistics.terrains[terrain].bmp.Width,
                                Statistics.terrains[terrain].bmp.Height
                                ),
                            0,
                            0,
                            Statistics.terrains[terrain].bmp.Width,
                            Statistics.terrains[terrain].bmp.Height,
                            GraphicsUnit.Pixel,
                            Form1.ia
                            );
                    }
                }

                g.DrawImage(Statistics.units[ind].bmp,
                            new Rectangle(
                                affBmp.Width / 2 - 35,
                                affBmp.Height / 2 - 25,
                                70,
                                50
                                ),
                            0,
                            0,
                            70,
                            50,
                            GraphicsUnit.Pixel,
                            Form1.ia
                            );

                g.DrawRectangle(
                    blackPen,
                    0,
                    0,
                    affBmp.Width - 1,
                    affBmp.Height - 1
                    );

                // name
                e.Graphics.DrawString(Statistics.units[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // image
                e.Graphics.DrawImage(affBmp, this.ClientSize.Width / 6, vPos);
                vPos += spacing + affBmp.Height;

                // need techno
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaNeededTechno), Statistics.technologies[Statistics.units[ind].disponibility].name), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // cost
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitCost), Statistics.units[ind].cost), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // attack
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitAttack), Statistics.units[ind].attack), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // defense
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitDefense), Statistics.units[ind].defense), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // moves
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitMove), Statistics.units[ind].move), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // entrenchable
                if (Statistics.units[ind].entrenchable)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaUnitEntrenchable), otherFont, blackBrush, spacing, vPos);
                    vPos += spacing + otherVSpacing;
                }

                // high sea sync
                if (Statistics.units[ind].terrain == 0)
                {
                    if (Statistics.units[ind].highSeaSync)
                    {
                        e.Graphics.DrawString(language.getAString(language.order.encyclopediaUnitHighSeaSync), otherFont, blackBrush, spacing, vPos);
                    }
                    else
                    {
                        e.Graphics.DrawString(language.getAString(language.order.encyclopediaUnitHighSeaSyncResistant), otherFont, blackBrush, spacing, vPos);
                    }

                    vPos += spacing + otherVSpacing;
                }

                // transport / capcity
                if (Statistics.units[ind].transport > 0)
                {
                    e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitTransportCapacity), Statistics.units[ind].transport), otherFont, blackBrush, spacing, vPos);
                    vPos += spacing + otherVSpacing;
                }

                // speciality
                if (Statistics.units[ind].speciality != enums.speciality.none)
                {
                    /*	e.Graphics.DrawString( language.getAString( language.order.encyclopediaUnitStealth ), otherFont, blackBrush, spacing, vPos );
                     *      vPos += spacing + otherVSpacing;*/
                }

                // stealth
                if (Statistics.units[ind].stealth)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaUnitStealth), otherFont, blackBrush, spacing, vPos);
                    vPos += spacing + otherVSpacing;
                }

                // sight
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitSight), Statistics.units[ind].sight), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // range
                if (
                    Statistics.units[ind].speciality == enums.speciality.bombard ||
                    Statistics.units[ind].speciality == enums.speciality.fighter ||
                    Statistics.units[ind].speciality == enums.speciality.bomber ||
                    Statistics.units[ind].speciality == enums.speciality.nukeBomb ||
                    Statistics.units[ind].speciality == enums.speciality.nukeIC ||
                    Statistics.units[ind].speciality == enums.speciality.nukeMissile ||
                    Statistics.units[ind].speciality == enums.speciality.cruiseMissile
                    )
                {
                    e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitRange), Statistics.units[ind].range), otherFont, blackBrush, spacing, vPos);
                    vPos += spacing + otherVSpacing;
                }

                // obselete
                if (Statistics.units[ind].obselete != 0)
                {
                    e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaUnitRanderedObseleteBy), Statistics.units[Statistics.units[ind].obselete].name), otherFont, blackBrush, spacing, vPos);
                    vPos += spacing + otherVSpacing;
                }

                //

                /*			e.Graphics.DrawString( String.Format( language.getAString( language.order.encyclopediaTradeAdv ), Statistics.technologies[ ind ].trade ), otherFont, blackBrush, spacing, vPos );
                 *                      vPos += spacing + otherVSpacing;
                 *
                 *                      // desc
                 *                      e.Graphics.DrawString( Statistics.technologies[ ind ].desc, otherFont, blackBrush, spacing, vPos );
                 */
/*					label1.Text = Statistics.units[ ind ].name;
 *                                      label2.Text = "a/d/m: " +
 *                                              Statistics.units[ ind ].attack.ToString() + "/" +
 *                                              Statistics.units[ ind ].defense.ToString() + "/" +
 *                                              Statistics.units[ ind ].move.ToString();
 *                                      label3.Text = Statistics.units[ ind ].cost.ToString() + " gold pieces";
 *                                      label4.Text = Statistics.units[ ind ].description ;
 */
                break;
                #endregion

                #region terrain X
            case enums.infoType.terrain:

                // prepare affBmp
                affBmp = new Bitmap(this.ClientSize.Width * 2 / 3, 60 * platformSpec.resolution.mod);
                g      = Graphics.FromImage(affBmp);

                g.Clear(Color.White);

                g.DrawImage(
                    Statistics.terrains[ind].bmp,
                    new Rectangle(
                        affBmp.Width / 2 - 35,
                        affBmp.Height / 2 - 25,
                        70,
                        50
                        ),
                    0,
                    0,
                    70,
                    50,
                    GraphicsUnit.Pixel,
                    Form1.ia
                    );


                g.DrawRectangle(
                    blackPen,
                    0,
                    0,
                    affBmp.Width - 1,
                    affBmp.Height - 1
                    );

                // name
                e.Graphics.DrawString(Statistics.terrains[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // image
                e.Graphics.DrawImage(affBmp, this.ClientSize.Width / 6, vPos);
                vPos += spacing + affBmp.Height;

                // move diff
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainMoveDifficulty), Statistics.terrains[ind].move), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // def bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainDefenseBonus), Statistics.terrains[ind].defense), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // food
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainFood), Statistics.terrains[ind].food), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // prod
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainProduction), Statistics.terrains[ind].production), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // trade
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainTrade), Statistics.terrains[ind].trade), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // irrigation bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainIrrigationFoodBonus), Statistics.terrains[ind].irrigationBonus), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // mine bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainMineProductionBonus), Statistics.terrains[ind].mineBonus), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // road bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainRoadTradeBonus), Statistics.terrains[ind].roadBonus), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // railroad bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTerrainRailroadTradeBonus), Statistics.terrains[ind].roadBonus * 2), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // water ?

                /*	if ( Statistics.terrains[ ind ].ew == 0 )
                 *              e.Graphics.DrawString( language.getAString( language.order.encyclopediaEcoCommunism ), otherFont, blackBrush, spacing, vPos );
                 *      else
                 *              e.Graphics.DrawString( language.getAString( language.order.encyclopediaEcoCapitalism ), otherFont, blackBrush, spacing, vPos );
                 *      vPos += spacing + otherVSpacing;*/

                // desc
                e.Graphics.DrawString(Statistics.terrains[ind].description, otherFont, blackBrush, spacing, vPos);

                break;
                #endregion

                #region techno X
            case enums.infoType.techno:

                // name
                e.Graphics.DrawString(Statistics.technologies[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // can be researched
                if (Statistics.technologies[ind].canBeResearched)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaTechnoCanBeResearched), otherFont, blackBrush, spacing, vPos);
                }
                else
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaTechnoCanNotBeResearched), otherFont, blackBrush, spacing, vPos);
                }
                vPos += spacing + otherVSpacing;

                // needed technos
                if (Statistics.technologies[ind].canBeResearched && ind != 0)
                {
                    string neededTechnos = "";
                    if (Statistics.technologies[ind].needs[0] == 0)
                    {
                        neededTechnos += Statistics.technologies[0].name;
                    }
                    else
                    {
                        neededTechnos += Statistics.technologies[Statistics.technologies[ind].needs[0]].name;
                        for (int i = 1; i < Statistics.technologies[ind].needs.Length; i++)
                        {
                            if (Statistics.technologies[ind].needs[i] > 0)
                            {
                                neededTechnos += ", " + Statistics.technologies[Statistics.technologies[ind].needs[i]].name;
                            }
                            else
                            {
                                break;
                            }
                        }
                    }

                    e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTechnoNeededTechnos), neededTechnos), otherFont, blackBrush, spacing, vPos);
                    vPos += spacing + otherVSpacing;
                }

                // allow technos
                string allowedTechnos = "";
                if (ind != 0)
                {
                    int k = 0;
                    for (int i = 0; i < Statistics.technologies.Length; i++)
                    {
                        for (int j = 0; j < Statistics.technologies[i].needs.Length; j++)
                        {
                            if (Statistics.technologies[i].needs[j] == ind)
                            {
                                if (k != 0)
                                {
                                    allowedTechnos += ", ";
                                }

                                allowedTechnos += Statistics.technologies[i].name;
                                k++;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    /*	int k = 0;
                     *      for ( int i = 0; i < Statistics.technologies.Length; i ++ )
                     *              if ( Statistics.technologies[ i ].needs[ 0 ] == 0 )
                     *              {
                     *                      if ( k != 0 )
                     *                              lblTxt4 += ", ";
                     *
                     *                      allowedTechnos += Statistics.technologies[ i ].name;
                     *                      k ++;
                     *                      break;
                     *              }*/
                }

                if (allowedTechnos.Length > 0)
                {
                    e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTechnoAllowTechnos), allowedTechnos), otherFont, blackBrush, spacing, vPos);
                }
                else
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaTechnoDoesNotAllowAnyTechnos), otherFont, blackBrush, spacing, vPos);
                }
                vPos += spacing + otherVSpacing;

                // cost ?
                //	e.Graphics.DrawString( String.Format( language.getAString( language.order.encyclopediaFoodAdv ), Statistics.economies[ ind ].food ), otherFont, blackBrush, spacing, vPos );
                //	vPos += spacing + otherVSpacing;

                // desc
                e.Graphics.DrawString(Statistics.technologies[ind].description, otherFont, blackBrush, spacing, vPos);

                break;
                #endregion

                #region gov X
            case enums.infoType.gov:

                // name
                e.Graphics.DrawString(Statistics.governements[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // need techno
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaNeededTechno), Statistics.technologies[Statistics.governements[ind].neededTechno].name), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // oppresive
                if (Statistics.governements[ind].oppresive)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaGovOppresive), otherFont, blackBrush, spacing, vPos);
                }
                else
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaGovNonOppresive), otherFont, blackBrush, spacing, vPos);
                }
                vPos += spacing + otherVSpacing;

                // surrender on conquer
                if (Statistics.governements[ind].surrenderOnConquer)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaGovSurrenderOnConquer), otherFont, blackBrush, spacing, vPos);
                }
                else
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaGovResistInvaders), otherFont, blackBrush, spacing, vPos);
                }
                vPos += spacing + otherVSpacing;

                // can be choosed by player
                if (Statistics.governements[ind].canBeChoosedByPlayer)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaGovCanBeChosenByPlayers), otherFont, blackBrush, spacing, vPos);
                }
                else
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaGovUnavailableToPlayers), otherFont, blackBrush, spacing, vPos);
                }
                vPos += spacing + otherVSpacing;

                // food
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaFoodAdv), Statistics.governements[ind].foodPerc), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // prod
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaProdAdv), Statistics.governements[ind].productionPerc), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // trade
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTradeAdv), Statistics.governements[ind].tradePerc), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // pop

                // support

                // desc
                e.Graphics.DrawString(Statistics.governements[ind].description, otherFont, blackBrush, spacing, vPos);



                /*			label4.Top = label1.Bottom + 4;
                 *                      label4.Left = 16;
                 *                      label4.Width = this.Width - 32;
                 *                      label4.Height = this.Height - label4.Bottom - 8;
                 *                      label4.Font = new Font( "Tahoma", 9, FontStyle.Regular );
                 *                      label4.Parent = this;
                 *
                 *                      label1.Text = Statistics.governements[ ind ].name;
                 *                      lblTxt4 = "";
                 *                      //	string lblTxt2
                 *
                 *                      if ( Statistics.governements[ ind ].oppresive )
                 *                              lblTxt4 += "Oppresive";
                 *                      else
                 *                              lblTxt4 += "Non-oppresive";
                 *
                 *                      lblTxt4 += "\n";
                 *
                 *                      if ( Statistics.governements[ ind ].surrenderOnConquer )
                 *                              lblTxt4 += "Surrender on conquer";
                 *                      else
                 *                              lblTxt4 += "Resist invaders";
                 *
                 *                      lblTxt4 += "\n\n";
                 *
                 *                      lblTxt4 += "require " + Statistics.technologies[ Statistics.governements[ ind ].neededTechno ].name;
                 *
                 *                      lblTxt4 += "\n\n" + Statistics.governements[ ind ].description;
                 *
                 *                      label4.Text = lblTxt4;			*/

                break;
                #endregion

                #region eco X
            case enums.infoType.eco:

                // name
                e.Graphics.DrawString(Statistics.economies[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // need techno
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaNeededTechno), Statistics.technologies[Statistics.economies[ind].techno].name), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // communism
                if (Statistics.economies[ind].communism)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaEcoCommunism), otherFont, blackBrush, spacing, vPos);
                }
                else
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaEcoCapitalism), otherFont, blackBrush, spacing, vPos);
                }
                vPos += spacing + otherVSpacing;

                // slavery
                if (Statistics.economies[ind].supportSlavery)
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaEcoSupportSlavery), otherFont, blackBrush, spacing, vPos);
                }
                else
                {
                    e.Graphics.DrawString(language.getAString(language.order.encyclopediaEcoDoesNotSupportSlavery), otherFont, blackBrush, spacing, vPos);
                }
                vPos += spacing + otherVSpacing;

                // food
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaFoodAdv), Statistics.economies[ind].food), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // prod
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaProdAdv), Statistics.economies[ind].prod), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // trade
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaTradeAdv), Statistics.economies[ind].trade), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // desc
                e.Graphics.DrawString(Statistics.economies[ind].description, otherFont, blackBrush, spacing, vPos);

                break;
                #endregion

                #region resources X
            case enums.infoType.resources:

                affBmp = new Bitmap(this.ClientSize.Width * 2 / 3, 60 * platformSpec.resolution.mod);
                g      = Graphics.FromImage(affBmp);
                g.Clear(Color.Black);

                Random r = new Random();

                if (Statistics.resources[ind].terrain == 1)
                {
                    terrain = (byte)enums.terrainType.plain;
                }
                else
                {
                    terrain = (byte)enums.terrainType.coast;
                }

                for (int y = -1; y < affBmp.Width / 50 + 2; y++)
                {
                    for (int x = 0; x < affBmp.Height / 15 + 2; x++)
                    {
                        g.DrawImage(
                            Statistics.terrains[terrain].bmp,                                       // Statistics.terrains[ Statistics.resources[ ind ].terrainTypes[ r.Next( Statistics.resources[ ind ].terrainTypes.Length ) ] ].bmp, // To be implemented later
                            new Rectangle(
                                x * Form1.caseWidth - Form1.caseWidth / 2 - 10,
                                y * Form1.caseHeight - 20 - Form1.caseHeight / 2,
                                Statistics.terrains[terrain].bmp.Width,
                                Statistics.terrains[terrain].bmp.Height
                                ),
                            0,
                            0,
                            Statistics.terrains[terrain].bmp.Width,
                            Statistics.terrains[terrain].bmp.Height,
                            GraphicsUnit.Pixel,
                            Form1.ia
                            );
                    }
                    for (int x = 0; x < 6; x++)
                    {
                        g.DrawImage(
                            Statistics.terrains[terrain].bmp,                                       // Statistics.terrains[ Statistics.resources[ ind ].terrainTypes[ r.Next( Statistics.resources[ ind ].terrainTypes.Length ) ] ].bmp,
                            new Rectangle(
                                x * Form1.caseWidth - Form1.caseWidth - 10,
                                y * Form1.caseHeight - 20,
                                Statistics.terrains[terrain].bmp.Width,
                                Statistics.terrains[terrain].bmp.Height
                                ),
                            0,
                            0,
                            Statistics.terrains[terrain].bmp.Width,
                            Statistics.terrains[terrain].bmp.Height,
                            GraphicsUnit.Pixel,
                            Form1.ia
                            );
                    }
                }

                g.DrawImage(Statistics.resources[ind].bmp,
                            new Rectangle(
                                affBmp.Width / 2 - 35,
                                affBmp.Height / 2 - 25,
                                70,
                                50
                                ),
                            0,
                            0,
                            70,
                            50,
                            GraphicsUnit.Pixel,
                            Form1.ia
                            );

                g.DrawRectangle(
                    blackPen,
                    0,
                    0,
                    affBmp.Width - 1,
                    affBmp.Height - 1
                    );

                // name
                e.Graphics.DrawString(Statistics.resources[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // image
                e.Graphics.DrawImage(affBmp, this.ClientSize.Width / 6, vPos);
                vPos += spacing + affBmp.Height;

                // need techno
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaResourceNeededTechnos), Statistics.technologies[Statistics.resources[ind].techno].name), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // food bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaResourceFoodBonus), Statistics.resources[ind].foodBonus), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // prod bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaResourceProductionBonus), Statistics.resources[ind].prodBonus), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // trade bonus
                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaResourceTradeBonus), Statistics.resources[ind].tradeBonus), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // desc
                e.Graphics.DrawString(Statistics.resources[ind].description, otherFont, blackBrush, spacing, vPos);

                break;
                #endregion

                #region specialResources
            case enums.infoType.specialResources:

/*					affBmp = new Bitmap( this.ClientSize.Width * 2 / 3, 60 * platformSpec.resolution.mod );
 *                                      g = Graphics.FromImage( affBmp );
 *                                      g.Clear( Color.Black );
 *
 *                                      Random r = new Random();
 *
 *                                      if ( Statistics.resources[ ind ].terrain == 1 )
 *                                              terrain = (byte)enums.terrainType.plain;
 *                                      else
 *                                              terrain = (byte)enums.terrainType.coast;
 *
 *                                      for ( int y = -1; y < affBmp.Width / 50 + 2; y ++ )
 *                                      {
 *                                              for ( int x = 0; x < affBmp.Height / 15 + 2; x ++ )
 *                                                      g.DrawImage(
 *                                                              Statistics.terrains[ terrain ].bmp, // Statistics.terrains[ Statistics.resources[ ind ].terrainTypes[ r.Next( Statistics.resources[ ind ].terrainTypes.Length ) ] ].bmp, // To be implemented later
 *                                                              new Rectangle(
 *                                                              x * Form1.caseWidth - Form1.caseWidth / 2 - 10,
 *                                                              y * Form1.caseHeight - 20 - Form1.caseHeight / 2,
 *                                                              Statistics.terrains[ terrain ].bmp.Width,
 *                                                              Statistics.terrains[ terrain ].bmp.Height
 *                                                              ),
 *                                                              0,
 *                                                              0,
 *                                                              Statistics.terrains[ terrain ].bmp.Width,
 *                                                              Statistics.terrains[ terrain ].bmp.Height,
 *                                                              GraphicsUnit.Pixel,
 *                                                              Form1.ia
 *                                                              );
 *
 *                                              for ( int x = 0; x < 6; x ++ )
 *                                                      g.DrawImage(
 *                                                              Statistics.terrains[ terrain ].bmp, // Statistics.terrains[ Statistics.resources[ ind ].terrainTypes[ r.Next( Statistics.resources[ ind ].terrainTypes.Length ) ] ].bmp,
 *                                                              new Rectangle(
 *                                                              x * Form1.caseWidth - Form1.caseWidth - 10,
 *                                                              y * Form1.caseHeight - 20,
 *                                                              Statistics.terrains[ terrain ].bmp.Width,
 *                                                              Statistics.terrains[ terrain ].bmp.Height
 *                                                              ),
 *                                                              0,
 *                                                              0,
 *                                                              Statistics.terrains[ terrain ].bmp.Width,
 *                                                              Statistics.terrains[ terrain ].bmp.Height,
 *                                                              GraphicsUnit.Pixel,
 *                                                              Form1.ia
 *                                                              );
 *                                      }
 *
 *                                      g.DrawImage( Statistics.resources[ ind ].bmp,
 *                                              new Rectangle(
 *                                              affBmp.Width / 2 - 35,
 *                                              affBmp.Height / 2 - 25,
 *                                              70,
 *                                              50
 *                                              ),
 *                                              0,
 *                                              0,
 *                                              70,
 *                                              50,
 *                                              GraphicsUnit.Pixel,
 *                                              Form1.ia
 *                                              );
 *
 *                                      g.DrawRectangle(
 *                                              blackPen,
 *                                              0,
 *                                              0,
 *                                              affBmp.Width - 1,
 *                                              affBmp.Height - 1
 *                                              );
 *
 *                                      // name
 *                                      e.Graphics.DrawString( Statistics.resources[ ind ].name, titleFont, blackBrush, spacing, vPos );
 *                                      vPos += spacing + titleVSpacing;
 *
 *                                      // image
 *                                      e.Graphics.DrawImage( affBmp, this.ClientSize.Width /6, vPos );
 *                                      vPos += spacing + affBmp.Height;
 *
 *                                      // need techno
 *                                      e.Graphics.DrawString( String.Format( language.getAString( language.order.encyclopediaResourceNeededTechnos ), Statistics.technologies[ Statistics.resources[ ind ].techno ].name ), otherFont, blackBrush, spacing, vPos );
 *                                      vPos += spacing + otherVSpacing;
 *
 *                                      // food bonus
 *                                      e.Graphics.DrawString( String.Format( language.getAString( language.order.encyclopediaResourceFoodBonus ), Statistics.resources[ ind ].foodBonus ), otherFont, blackBrush, spacing, vPos );
 *                                      vPos += spacing + otherVSpacing;
 *
 *                                      // prod bonus
 *                                      e.Graphics.DrawString( String.Format( language.getAString( language.order.encyclopediaResourceProductionBonus ), Statistics.resources[ ind ].prodBonus ), otherFont, blackBrush, spacing, vPos );
 *                                      vPos += spacing + otherVSpacing;
 *
 *                                      // trade bonus
 *                                      e.Graphics.DrawString( String.Format( language.getAString( language.order.encyclopediaResourceTradeBonus ), Statistics.resources[ ind ].tradeBonus ), otherFont, blackBrush, spacing, vPos );
 *                                      vPos += spacing + otherVSpacing;
 *
 *                                      // desc
 *                                      e.Graphics.DrawString( Statistics.resources[ ind ].description, otherFont, blackBrush, spacing, vPos );
 */
                break;
                #endregion

                #region tutorial X
            case enums.infoType.tutorial:

                Tutorial.structure s = Tutorial.getTextFromInd(ind);

                // title
                e.Graphics.DrawString(s.title, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // text
                e.Graphics.DrawString(
                    s.text, otherFont, blackBrush,
                    new Rectangle(spacing, vPos, this.ClientSize.Width - 2 * spacing, this.ClientSize.Height)
                    );
                vPos += spacing + otherVSpacing;

                break;
                #endregion

                #region civ X
            case enums.infoType.civ:

                // prepare affBmp
                affBmp = new Bitmap(this.ClientSize.Width * 2 / 3, 16 * platformSpec.resolution.mod);
                g      = Graphics.FromImage(affBmp);

                g.Clear(Statistics.civilizations[ind].color);

                g.DrawRectangle(
                    blackPen,
                    0,
                    0,
                    affBmp.Width - 1,
                    affBmp.Height - 1
                    );

                // name
                e.Graphics.DrawString(Statistics.civilizations[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // image
                e.Graphics.DrawImage(affBmp, this.ClientSize.Width / 6, vPos);
                vPos += spacing + affBmp.Height;

                // leader names
                string leaderNames = "";

                for (int i = 0; i < Statistics.civilizations[ind].leaderNames.Length; i++)
                {
                    if (i != 0)
                    {
                        leaderNames += ", ";
                    }

                    leaderNames += Statistics.civilizations[ind].leaderNames[i];
                }

                e.Graphics.DrawString(String.Format(language.getAString(language.order.encyclopediaCivilizationLeaderNames), leaderNames), otherFont, blackBrush, spacing, vPos);
                vPos += spacing + otherVSpacing;

                // desc
                e.Graphics.DrawString(Statistics.civilizations[ind].description, otherFont, blackBrush, spacing, vPos);

                break;
                #endregion

                #region buildings X
            case enums.infoType.buildings:

                // title
                e.Graphics.DrawString(Statistics.buildings[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // text
                e.Graphics.DrawString(
                    Statistics.buildings[ind].description, otherFont, blackBrush,
                    new Rectangle(spacing, vPos, this.ClientSize.Width - 2 * spacing, this.ClientSize.Height)
                    );
                vPos += spacing + otherVSpacing;

                break;
                #endregion

                #region smallWonders X
            case enums.infoType.smallWonders:

                // title
                e.Graphics.DrawString(Statistics.smallWonders[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // text
                e.Graphics.DrawString(
                    Statistics.smallWonders[ind].description, otherFont, blackBrush,
                    new Rectangle(spacing, vPos, this.ClientSize.Width - 2 * spacing, this.ClientSize.Height)
                    );
                vPos += spacing + otherVSpacing;

                break;
                #endregion

                #region wonders X
            case enums.infoType.wonders:

                // title
                e.Graphics.DrawString(Statistics.wonders[ind].name, titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // text
                e.Graphics.DrawString(
                    Statistics.wonders[ind].description, otherFont, blackBrush,
                    new Rectangle(spacing, vPos, this.ClientSize.Width - 2 * spacing, this.ClientSize.Height)
                    );
                vPos += spacing + otherVSpacing;

                break;
                #endregion

                #region misc
            case enums.infoType.misc:

                // title
                e.Graphics.DrawString("...", titleFont, blackBrush, spacing, vPos);
                vPos += spacing + titleVSpacing;

                // text
                e.Graphics.DrawString(
                    "...", otherFont, blackBrush,
                    new Rectangle(spacing, vPos, this.ClientSize.Width - 2 * spacing, this.ClientSize.Height)
                    );
                vPos += spacing + otherVSpacing;

                break;
                #endregion
            }
        }