コード例 #1
0
 private void Input_ButtonsChanged(object sender, ButtonsChangedEventArgs e)
 {
     foreach (SButton button in e.Pressed)
     {
         if (button == SButton.MouseRight)
         {
             foreach (ModData m in Data)
             {
                 foreach (Totem t in m.Totems)
                 {
                     if (Game1.player.ActiveObject?.ParentSheetIndex == JAAPIInstance.GetObjectId(t.Name))
                     {
                         Object o = Game1.player.ActiveObject;
                         try
                         {
                             Helper.Reflection.GetMethod(o, "totemWarp", true).Invoke(Game1.player);
                         }
                         catch (Exception ex)
                         {
                             Monitor1.Log($"Failed in {nameof(Input_ButtonsChanged)} while trying to invoke method 'Object.totemWarp':\n{ex}",
                                          LogLevel.Error);
                             Monitor1.Log(ex.StackTrace, LogLevel.Trace);
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #2
0
 private static bool Object_totemWarpForReal_Prefix(Object __instance)
 {
     foreach (ModData m in Data)
     {
         foreach (Totem t in m.Totems)
         {
             try
             {
                 if (t.Name != "???")
                 {
                     if (__instance.ParentSheetIndex == JAAPIInstance.GetObjectId(t.Name))
                     {
                         Game1.warpFarmer(t.WhereToWarp, t.ToX, t.ToY, flip: false);
                         if (!t.PersistItem)
                         {
                             Game1.player.ActiveObject = null;
                         }
                         return(true);
                     }
                 }
             }
             catch (Exception e)
             {
                 Monitor1.Log($"Failed in {nameof(Building_obeliskWarpForReal_Prefix)}:\n{e}",
                              LogLevel.Error);
                 Monitor1.Log(e.StackTrace, LogLevel.Trace);
             }
         }
     }
     return(true);
 }