예제 #1
0
파일: SObject.cs 프로젝트: kazuyabr/SMAPI
        public override bool placementAction(GameLocation location, int x, int y, Farmer who = null)
        {
            SGameLocation s = SGame.GetLocationFromName(location.name);

            if (s.GetHashCode() != SGame.CurrentLocation.GetHashCode())
            {
                Program.LogError("HASH DIFFERENCE: " + s.GetHashCode() + " | " + SGame.ModLocations[SGame.ModLocations.IndexOf(SGame.ModLocations.First(z => z.name == location.name))].GetHashCode() + " | " + SGame.CurrentLocation.GetHashCode());
                Console.ReadKey();
            }

            Console.Title = (this.GetHashCode() + " PLACEMENT");

            if (s != null)
            {
                Vector2 index1 = new Vector2(x - (Game1.tileSize / 2), y - (Game1.tileSize / 2));
                if (!s.ModObjects.ContainsKey(index1))
                {
                    s.ModObjects.Add(index1, this);
                    Game1.player.position = index1;
                    return(true);
                }
            }
            else
            {
                Program.LogError("No SGameLocation could be found for the supplied GameLocation!");
                return(false);
            }
            return(false);
        }
예제 #2
0
        public static SGameLocation ConstructFromBaseClass(GameLocation baseClass)
        {
            SGameLocation s = new SGameLocation();

            s.BaseGameLocation = baseClass;
            s.ModObjects       = new SerializableDictionary <Vector2, SObject>();
            //s.IsFarm = baseClass.IsFarm;
            //s.IsOutdoors = baseClass.IsOutdoors;
            //s.LightLevel = baseClass.LightLevel;
            //s.Map = baseClass.Map;
            //s.objects = baseClass.objects;
            //s.temporarySprites = baseClass.temporarySprites;
            s.actionObjectForQuestionDialogue = baseClass.actionObjectForQuestionDialogue;
            s.characters                = baseClass.characters;
            s.critters                  = (List <Critter>) typeof(GameLocation).GetField("critters", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(baseClass);
            s.currentEvent              = baseClass.currentEvent;
            s.debris                    = baseClass.debris;
            s.doorSprites               = baseClass.doorSprites;
            s.doors                     = baseClass.doors;
            s.farmers                   = baseClass.farmers;
            s.fishSplashAnimation       = baseClass.fishSplashAnimation;
            s.fishSplashPoint           = baseClass.fishSplashPoint;
            s.forceViewportPlayerFollow = baseClass.forceViewportPlayerFollow;
            s.ignoreDebrisWeather       = baseClass.ignoreDebrisWeather;
            s.ignoreLights              = baseClass.ignoreLights;
            s.ignoreOutdoorLighting     = baseClass.ignoreOutdoorLighting;
            s.isFarm                    = baseClass.isFarm;
            s.isOutdoors                = baseClass.isOutdoors;
            s.isStructure               = baseClass.isStructure;
            s.largeTerrainFeatures      = baseClass.largeTerrainFeatures;
            s.lastQuestionKey           = baseClass.lastQuestionKey;
            s.lastTouchActionLocation   = baseClass.lastTouchActionLocation;
            s.lightGlows                = baseClass.lightGlows;
            s.map  = baseClass.map;
            s.name = baseClass.name;
            s.numberOfSpawnedObjectsOnMap = baseClass.numberOfSpawnedObjectsOnMap;
            s.objects             = baseClass.objects;
            s.orePanAnimation     = baseClass.orePanAnimation;
            s.orePanPoint         = baseClass.orePanPoint;
            s.projectiles         = baseClass.projectiles;
            s.temporarySprites    = baseClass.temporarySprites;
            s.terrainFeatures     = baseClass.terrainFeatures;
            s.uniqueName          = baseClass.uniqueName;
            s.warps               = baseClass.warps;
            s.wasUpdated          = (bool)typeof(GameLocation).GetField("wasUpdated", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(baseClass);
            s.waterAnimationIndex = baseClass.waterAnimationIndex;
            s.waterAnimationTimer = baseClass.waterAnimationTimer;
            s.waterColor          = baseClass.waterColor;
            s.waterTileFlip       = baseClass.waterTileFlip;
            s.waterTiles          = baseClass.waterTiles;
            return(s);
        }