示例#1
0
 public static string getLevelForCharacter(Character c)
 {
     if (levels.ContainsKey(c))
     {
         if (c.currentLocation != null && MapHandler.hasLevel(c.currentLocation, levels[c]))
         {
             return(levels[c]);
         }
     }
     levels[c] = "Base";
     return(levels[c]);
 }
示例#2
0
 public static string getLevelSuffixForCharacter(Character c)
 {
     if (!levels.ContainsKey(c))
     {
         levels[c] = "Base";
     }
     if (c.currentLocation != null && MapHandler.hasLevel(c.currentLocation, levels[c]))
     {
         if (levels[c].Equals("Base"))
         {
             return("");
         }
         return("_" + levels[c]);
     }
     return("");
 }
示例#3
0
        //public static void Postfix(bool __result, GameLocation __instance, Microsoft.Xna.Framework.Rectangle position, xTile.Dimensions.Rectangle viewport, bool isFarmer, int damagesFarmer, bool glider, Character character, bool pathfinding, bool projectile = false, bool ignoreCharacterRequirement = false)
        //{
        //    //Fix for handling NPCs as well
        //    if (!MapHandler.isPseudo3DLocation(__instance) || MapHandler.currentLayerID.Equals("Base"))
        //        return;
        //    //Logger.log("Running patched collision detection...");
        //    if (!glider && (!Game1.eventUp || character != null && !isFarmer && (!pathfinding || !character.willDestroyObjectsUnderfoot)))
        //    {
        //        bool solid = isTileSolid(position, viewport, __instance, character, position.Width > 64, glider, isFarmer, false);
        //        __result = solid;
        //        Logger.log("Result: " + __result.ToString() + " (" + solid.ToString() + ")");
        //    }
        //}

        public static bool Prefix(Microsoft.Xna.Framework.Rectangle position, xTile.Dimensions.Rectangle viewport, bool isFarmer, int damagesFarmer, bool glider, Character character, GameLocation __instance, ref bool __result)
        {
            string currentLevel = LevelHandler.getLevelForCharacter(character);

            //Fix for handling NPCs as well
            if (!MapHandler.isPseudo3DLocation(__instance) || currentLevel.Equals("Base") || !MapHandler.hasLevel(__instance, currentLevel))
            {
                return(true);
            }
            //Logger.log("Running patched collision detection...");
            bool solid = isTileSolid(position, viewport, __instance, character, position.Width > 64, glider, isFarmer, false);

            //Logger.log("Result: " + solid.ToString());
            __result = solid;
            return(false);
        }