Пример #1
0
            public override void GetTextToShow(ArcenDoubleCharacterBuffer buffer)
            {
                if (Engine_AIW2.Instance.CurrentGameViewMode == GameViewMode.GalaxyMapView)
                {
                    if (Planet.CurrentlyHoveredOver == null)
                    {
                        return;
                    }

                    Planet relatedPlanet = Planet.CurrentlyHoveredOver;
                    if (relatedPlanet != null)
                    {
                        buffer.Add("Hovered over planet: ");
                        buffer.Add(relatedPlanet.Name);
                        buffer.Add(" (");
                        buffer.Add(relatedPlanet.GalaxyLocation.ToString());
                        buffer.Add(")");
                        for (ResourceType resource = ResourceType.None + 1; resource < ResourceType.Length; resource++)
                        {
                            buffer.Add("\n").Add(resource.ToString()).Add(": ").Add(relatedPlanet.ResourceOutputs[resource]);
                        }
                    }

                    GameEntity relatedEntity = GameEntity.CurrentlyHoveredOver;
                    if (relatedEntity != null)
                    {
                        if (!buffer.GetIsEmpty())
                        {
                            buffer.Add("\n");
                        }
                        buffer.Add("Hovered over entity icon: ");
                        relatedEntity.WriteQualifiedNameTo(buffer);
                        buffer.Add(" (");
                        buffer.Add(relatedEntity.Side.WorldSide.Type.ToString());
                        buffer.Add("-");
                        buffer.Add(relatedEntity.Side.WorldSide.TeamColor.InternalName);
                        buffer.Add(")");
                        buffer.Add("\nID:").Add((int)relatedEntity.PrimaryKeyID);
                    }
                }

                if (Engine_AIW2.Instance.CurrentGameViewMode == GameViewMode.MainGameView)
                {
                    GameEntity         relatedEntity     = GameEntity.CurrentlyHoveredOver;
                    GameEntityTypeData relatedEntityData = GameEntityTypeData.CurrentlyHoveredOver;
                    if (relatedEntity != null)
                    {
                        buffer.Add("Hovered over entity: ");
                        relatedEntity.WriteQualifiedNameTo(buffer);
                        buffer.Add(" (");
                        buffer.Add(relatedEntity.Side.WorldSide.Type.ToString());
                        buffer.Add("-");
                        buffer.Add(relatedEntity.Side.WorldSide.TeamColor.InternalName);
                        buffer.Add(")");
                        buffer.Add("\n").Add(relatedEntity.WorldLocation.ToString());
                        if (relatedEntity.TypeData.Category == GameEntityCategory.Ship)
                        {
                            buffer.Add("\n").Add("Hull: ").Add(relatedEntity.GetCurrentHullPoints()).Add("/").Add(relatedEntity.TypeData.BalanceStats.HullPoints);
                            if (relatedEntity.TypeData.BalanceStats.ShieldPoints > 0)
                            {
                                int shieldHealth = relatedEntity.GetCurrentShieldPoints();
                                if (shieldHealth <= 0)
                                {
                                    buffer.Add("<color=#ff6151>");
                                }
                                buffer.Add(" ").Add("Shields: ").Add(shieldHealth).Add("/").Add(relatedEntity.TypeData.BalanceStats.ShieldPoints);
                                if (shieldHealth <= 0)
                                {
                                    buffer.Add("</color>");
                                }
                            }
                            if (relatedEntity.EngineHealthLost > 0)
                            {
                                int maxEngineHealth = relatedEntity.TypeData.BalanceStats.SquadEngineHealth;
                                if (maxEngineHealth > 0)
                                {
                                    int engineHealth = relatedEntity.GetCurrentEngineHealth();
                                    if (engineHealth <= 0)
                                    {
                                        buffer.Add("<color=#ff6151>");
                                    }
                                    buffer.Add(" ").Add("Engines: ").Add(engineHealth).Add("/").Add(maxEngineHealth);
                                    if (engineHealth <= 0)
                                    {
                                        buffer.Add("</color>");
                                    }
                                }
                            }
                            if (relatedEntity.TypeData.Balance_ShipsPerSquad > 1)
                            {
                                buffer.Add(" (Squad: ").Add(relatedEntity.GetCurrentExtraShipsInSquad() + 1).Add("/").Add(relatedEntity.TypeData.Balance_ShipsPerSquad).Add(")");
                            }
                            if (relatedEntity.SelfBuildingMetalRemaining > FInt.Zero)
                            {
                                buffer.Add("\n").Add("Self-building:").Add(relatedEntity.SelfBuildingMetalRemaining.IntValue).Add("/").Add(relatedEntity.TypeData.BalanceStats.SquadMetalCost);
                            }
                            DoEntityTypeDataPartOfTooltip(buffer, relatedEntity.TypeData);
                        }
                    }
                    else if (relatedEntityData != null)
                    {
                        buffer.Add(relatedEntityData.Name);
                        if (relatedEntityData.Category == GameEntityCategory.Ship)
                        {
                            buffer.Add("\n").Add("Hull: ").Add(relatedEntityData.BalanceStats.HullPoints);
                            if (relatedEntityData.BalanceStats.ShieldPoints > 0)
                            {
                                buffer.Add("\n").Add("Shields: ").Add(relatedEntityData.BalanceStats.ShieldPoints);
                            }
                            DoEntityTypeDataPartOfTooltip(buffer, relatedEntityData);
                            if (relatedEntityData.Balance_ShipsPerSquad > 1)
                            {
                                buffer.Add("\n").Add("Squad Size: ").Add(relatedEntityData.Balance_ShipsPerSquad);
                                buffer.Add("\n").Add("Squad Cap: ");
                            }
                            else
                            {
                                buffer.Add("\n").Add("Ship Cap: ");
                            }
                            buffer.Add(relatedEntityData.BalanceStats.SquadsPerCap);
                        }
                    }
                }
            }