Exemple #1
0
 public static void RefreshPatch(EncyclopediaHeroPageVM __instance)
 {
     try
     {
         Hero PageHero = __instance.Obj as Hero;
         if (!Settings.Instance.UseAdvancedHeroTooltips || PageHero == Hero.MainHero)
         {
             return;
         }
         __instance.Allies.Clear();
         __instance.Enemies.Clear();
         EncyclopediaPage pageOf1 = Campaign.Current.EncyclopediaManager.GetPageOf(typeof(Hero));
         foreach (Hero hero in Hero.All)
         {
             if (pageOf1.IsValidEncyclopediaItem(hero) && !hero.IsNotable && hero != PageHero)
             {
                 if (PageHero.IsFriend(hero))
                 {
                     __instance.Allies.Add(new HeroVMcontactExtension(hero, PageHero));
                 }
                 else if (PageHero.IsEnemy(hero))
                 {
                     __instance.Enemies.Add(new HeroVMcontactExtension(hero, PageHero));
                 }
             }
         }
     }
     catch (Exception ex)
     {
         MethodInfo methodInfo = MethodBase.GetCurrentMethod() as MethodInfo;
         DebugHelper.HandleException(ex, methodInfo, "Harmony patch for EncyclopediaHeroPageVM.Refresh");
     }
 }
Exemple #2
0
        public static void RefreshPatch(EncyclopediaHeroPageVM __instance)
        {
            try
            {
                Hero?PageHero = __instance.Obj as Hero;
                if (!Settings.Instance !.UseAdvancedHeroTooltips || PageHero == Hero.MainHero)
                {
                    return;
                }
                __instance.Allies.Clear();
                __instance.Enemies.Clear();
                EncyclopediaPage pageOf1 = Campaign.Current.EncyclopediaManager.GetPageOf(typeof(Hero));
#if STABLE
                foreach (Hero hero in Hero.All)
#else
                foreach (Hero hero in Hero.AllAliveHeroes)
#endif
                {
                    if (pageOf1.IsValidEncyclopediaItem(hero) && !hero.IsNotable && hero != PageHero)
                    {
                        if (PageHero !.IsFriend(hero))
                        {
                            __instance.Allies.Add(new HeroVMcontactExtension(hero, PageHero));
                        }
                        else if (PageHero.IsEnemy(hero))
                        {
                            __instance.Enemies.Add(new HeroVMcontactExtension(hero, PageHero));
                        }
                    }
                }
            }
        public static void  Postfix(ref EncyclopediaHeroPageVM __instance)
        {
            if (null != ReflectUtils.ReflectField("_hero", __instance))
            {
                Hero   hero = (Hero)ReflectUtils.ReflectField("_hero", __instance);
                string heroOccupationName = CampaignUIHelper.GetHeroOccupationName(hero);
                if (string.IsNullOrEmpty(heroOccupationName))
                {
                    heroOccupationName = System.Enum.GetName(typeof(Occupation), hero.CharacterObject.Occupation);
                    string definition3 = GameTexts.FindText("str_enc_sf_occupation", null).ToString();
                    __instance.Stats.Add(new StringPairItemVM(definition3, heroOccupationName, null));
                }

                //模板
                FieldInfo fieldInfo = hero.CharacterObject.GetType().GetField("_originCharacter", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
                if (null != fieldInfo)
                {
                    object obj = fieldInfo.GetValue(hero.CharacterObject);;
                    if (obj is CharacterObject)
                    {
                        CharacterObject originCharacter = (CharacterObject)obj;
                        __instance.Stats.Add(new StringPairItemVM("模板: ", originCharacter.StringId, null));
                    }
                }
            }
        }
Exemple #4
0
        public static bool Prefix(EncyclopediaHeroPageVM __instance)
        {
            var hero = __instance.Obj as Hero;

            if (hero.CanTalkTo())
            {
                __instance.HeroCharacter = new HeroViewModelEx(hero, CharacterViewModel.StanceTypes.EmphasizeFace);
            }

            return(true);
        }
Exemple #5
0
 public static void  Postfix(ref EncyclopediaHeroPageVM __instance)
 {
     if (null != ReflectUtils.ReflectField("_hero", __instance))
     {
         Hero   hero = (Hero)ReflectUtils.ReflectField("_hero", __instance);
         string heroOccupationName = CampaignUIHelper.GetHeroOccupationName(hero);
         if (string.IsNullOrEmpty(heroOccupationName))
         {
             heroOccupationName = System.Enum.GetName(typeof(Occupation), hero.CharacterObject.Occupation);
             string definition3 = GameTexts.FindText("str_enc_sf_occupation", null).ToString();
             __instance.Stats.Add(new StringPairItemVM(definition3, heroOccupationName, null));
         }
     }
 }
        public void OnEncyclopediaPageChanged(EncyclopediaPageChangedEvent e)
        {
            EncyclopediaData.EncyclopediaPages newPage = e.NewPage;
            if ((int)newPage != 12)
            {
                selectedHeroPage = null;
                selectedHero     = null;
                if (gauntletLayerTopScreen != null && gauntletLayer != null)
                {
                    gauntletLayerTopScreen.RemoveLayer(gauntletLayer);
                    if (gauntletMovie != null)
                    {
                        gauntletLayer.ReleaseMovie(gauntletMovie);
                    }
                    gauntletLayerTopScreen = null;
                    gauntletMovie          = null;
                }
                return;
            }
            GauntletEncyclopediaScreenManager gauntletEncyclopediaScreenManager = MapScreen.Instance.EncyclopediaScreenManager as GauntletEncyclopediaScreenManager;

            if (gauntletEncyclopediaScreenManager == null)
            {
                return;
            }

            EncyclopediaData   encyclopediaData   = ReflectUtils.ReflectField <EncyclopediaData>("_encyclopediaData", gauntletEncyclopediaScreenManager);
            EncyclopediaPageVM encyclopediaPageVM = ReflectUtils.ReflectField <EncyclopediaPageVM>("_activeDatasource", encyclopediaData);

            selectedHeroPage = (encyclopediaPageVM as EncyclopediaHeroPageVM);

            if (selectedHeroPage == null)
            {
                return;
            }
            selectedHero = (selectedHeroPage.Obj as Hero);
            if (selectedHero == null)
            {
                return;
            }
            if (gauntletLayer == null)
            {
                gauntletLayer = new GauntletLayer(211, "GauntletLayer");
            }

            try
            {
                if (viewModel == null)
                {
                    viewModel = new HeroBuilderVM(delegate(Hero editHero)
                    {
                        InformationManager.DisplayMessage(new InformationMessage(new TextObject("{=CharacterCreation_EditAppearanceForHeroMessage}Entering edit appearance for: ").ToString() + editHero));
                    });
                }
                viewModel.SetHero(selectedHero);
                gauntletMovie          = gauntletLayer.LoadMovie("HeroEditor", viewModel);
                gauntletLayerTopScreen = ScreenManager.TopScreen;
                gauntletLayerTopScreen.AddLayer(gauntletLayer);
                gauntletLayer.InputRestrictions.SetInputRestrictions(true, InputUsageMask.MouseButtons);

                // Refresh
                selectedHeroPage.Refresh();
            }
            catch (Exception ex)
            {
                // MessageBox.Show($"Error :\n{ex.Message} \n\n{ex.InnerException?.Message}");
            }
        }