protected StringBuilder GetEntityName(MyEntity entity)
 {
     if (!string.IsNullOrEmpty(entity.DisplayName))
     {
         return new StringBuilder(entity.GetCorrectDisplayName());
     }
     else
     {
         if(entity is MyPrefabLargeWeapon && (entity as MyPrefabLargeWeapon).GetGun() != null){
             MyLargeShipGunBase gun = (entity as MyPrefabLargeWeapon).GetGun();
             if (gun is MyLargeShipAutocannon)
             {
                 return MyTextsWrapper.Get(MyTextsWrapperEnum.Autocannon);
             }
             else if (gun is MyLargeShipCIWS)
             {
                 return MyTextsWrapper.Get(MyTextsWrapperEnum.CIWS);
             }
             else if (gun is MyLargeShipMachineGun)
             {
                 return MyTextsWrapper.Get(MyTextsWrapperEnum.MachineGun);
             }
             else if(gun is MyLargeShipMissileLauncherGun)
             {
                 return MyTextsWrapper.Get(MyTextsWrapperEnum.MissileLauncher);
             }
         }
         else if(entity is MyPrefabCamera){
             return MyTextsWrapper.Get(MyTextsWrapperEnum.Camera);
         }
         else if(entity is MyPrefabAlarm){
             return MyTextsWrapper.Get(MyTextsWrapperEnum.Alarm);
         }
         else if(entity is MyPrefabBankNode){
             return MyTextsWrapper.Get(MyTextsWrapperEnum.BankNode);
         }
         else if(entity is MyPrefabGenerator){
             return MyTextsWrapper.Get(MyTextsWrapperEnum.Generator);
         }
         else if (entity is MyPrefabScanner)
         {
             return MyTextsWrapper.Get(MyTextsWrapperEnum.Scanner);
         }
         else if (entity is MyPrefabContainer)
         {
             return MyTextsWrapper.Get(MyTextsWrapperEnum.Alarm);
         }
         else if (entity is MyPrefabKinematic)
         {
             MyPrefabKinematic pk = (MyPrefabKinematic)entity;
             return MyTextsWrapper.Get(MyTextsWrapperEnum.Door);
         }
         return new StringBuilder();
     }
 }
Пример #2
0
        /// <summary>
        /// Displays notification
        /// </summary>
        /// <param name="entity">Entity</param>        
        /// <param name="action">Action</param>
        private MyHudNotification.MyNotification DisplayDetectedEntityActionNotification(MyEntity entity, MySmallShipInteractionActionEnum action)
        {
            string entityName = entity.DisplayName;
            //// if we trade throught hangar, we want display prefab container's name, not hangar's name
            //if (entity is MyPrefabHangar)
            //{
            //    entityName = (entity as MyPrefabHangar).GetOwner().DisplayName;
            //}

            //else
            //{
            //    entityName = entity.DisplayName;
            //}


            //get localized entity name
            entityName = entity.GetCorrectDisplayName();

            if (String.IsNullOrWhiteSpace(entityName))
            {
                entityName = MyTextsWrapper.Get(MyTextsWrapperEnum.ThisObject).ToString();
            }

            bool isMissionNotification = MyMissions.IsMissionEntityNotification(entity, action);
            object[] args = new object[3];
            MyTextsWrapperEnum notificationText;
            MyGuiFont notificationFont;
            switch (action)
            {
                case MySmallShipInteractionActionEnum.TradeForFree:
                    notificationFont = MyHudConstants.FRIEND_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanTradeWith;
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);
                    args[1] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.TradeForMoney:
                    notificationFont = MyHudConstants.NEUTRAL_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanTradeWith;
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);
                    args[1] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.Loot:
                    notificationFont = MyHudConstants.ENEMY_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanLoot;
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);
                    args[1] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.Examine:
                    notificationFont = MyHudConstants.NEUTRAL_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanExamine;
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);
                    args[1] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);
                    args[2] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.ExamineEmpty:
                    notificationFont = MyHudConstants.NEUTRAL_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanExamineEmpty;
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.INVENTORY);
                    args[1] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.Blocked:
                    notificationFont = MyHudConstants.ENEMY_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCantExamine;
                    args[0] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.Build:
                    notificationFont = MyHudConstants.NEUTRAL_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanBuild;
                    break;
                case MySmallShipInteractionActionEnum.Travel:
                    notificationFont = MyHudConstants.FRIEND_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanTravel;
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.TRAVEL);
                    args[1] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.Use:
                    IMyUseableEntity useableEntity = entity as IMyUseableEntity;
                    Debug.Assert(useableEntity != null);
                    notificationFont = MyHudConstants.FRIEND_FONT;
                    if (useableEntity.UseProperties.UseText != null)
                    {
                        notificationText = useableEntity.UseProperties.UseText.Value;
                    }
                    else
                    {
                        notificationText = MyTextsWrapperEnum.NotificationYouCanUse;
                    }
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);
                    args[1] = entityName;
                    break;
                case MySmallShipInteractionActionEnum.Hack:
                    notificationFont = MyHudConstants.NEUTRAL_FONT;
                    notificationText = MyTextsWrapperEnum.NotificationYouCanHack;
                    args[0] = MyGuiManager.GetInput().GetGameControlTextEnum(MyGameControlEnums.USE);
                    args[1] = entityName;
                    break;
                default:
                    throw new Exception();
            }

            MyHudNotification.MyNotification notification = new MyHudNotification.MyNotification(
                notificationText,
                MyHudNotification.GetCurrentScreen(),
                1f,
                isMissionNotification ? MyHudConstants.MISSION_FONT : notificationFont,
                MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,
                MyHudNotification.DONT_DISAPEAR,
                null,
                false,
                args);
            MyHudNotification.AddNotification(notification);

            return notification;
        }