public override Item getOne() { ModularDecoration ModularDecoration = new ModularDecoration(this.parentSheetIndex, this.tileLocation, this.SourceFilePathAndName); /* * drawPosition = this.drawPosition; * defaultBoundingBox = this.defaultBoundingBox; * boundingBox = this.boundingBox; * currentRotation = this.currentRotation - 1; * rotations = this.rotations; * rotate(); */ return(ModularDecoration); }
public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null) { Point point = new Point(x / Game1.tileSize, y / Game1.tileSize); this.tileLocation = new Vector2((float)point.X, (float)point.Y); bool flag = false; if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.parentSheetIndex == 1293) { int num = (this.parentSheetIndex == 1293) ? 3 : 0; bool flag2 = false; if (!flag2) { Game1.showRedMessage("Must be placed on wall"); return(false); } flag = true; } for (int i = point.X; i < point.X + this.getTilesWide(); i++) { for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++) { if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null) { Game1.showRedMessage("Furniture can't be placed here"); return(false); } if (location.getTileIndexAt(i, j, "Buildings") != -1) { return(false); } } } if (this.boundingBox.Width == 0 && this.boundingBox.Height == 0) { this.boundingBox = new Rectangle(Int32.MinValue, y / Game1.tileSize * Game1.tileSize, 0, 0); } else { this.boundingBox = new Rectangle(x / Game1.tileSize * Game1.tileSize, y / Game1.tileSize * Game1.tileSize, this.boundingBox.Width, this.boundingBox.Height); } /* * foreach (Furniture current2 in (location as DecoratableLocation).furniture) * { * if (current2.furniture_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox)) * { * current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who); * bool result = true; * return result; * } * } */ using (List <StardewValley.Farmer> .Enumerator enumerator3 = location.getFarmers().GetEnumerator()) { while (enumerator3.MoveNext()) { if (enumerator3.Current.GetBoundingBox().Intersects(this.boundingBox)) { Game1.showRedMessage("Can't place on top of a person."); bool result = false; return(result); } } } this.updateDrawPosition(); bool f = Util.placementAction(this, location, x, y, who); Log.AsyncM(this.sourceRect); int fff = 1; for (int X = 0; X < (this.sourceRect.Width / 16) * Game1.tileSize; X += Game1.tileSize) { for (int Y = 0; Y < (this.sourceRect.Height / 16) * Game1.tileSize; Y += Game1.tileSize) { if (X == 0 && Y == 0) { continue; } ModularDecoration newThing = new ModularDecoration(this.parentSheetIndex, Vector2.Zero, this.SourceFilePathAndName, false, (X / Game1.tileSize), Y / Game1.tileSize); newThing.placementActionNonRecursive(location, x + X, y + Y, who); fff++; Log.AsyncO("Placed an object: " + fff + " times."); // f = Util.placementAction(newThing, location, x+X, y+Y, who); //Log.AsyncG("X: "+X+" Y: "+Y); } } /* * if (f == true) * { * foreach(var v in blankSpace) * { * v.placementAction(Game1.player.currentLocation, x+(v.xTileOffset), y+(v.yTileOffset), who); * } * } */ return(f); // Game1.showRedMessage("Can only be placed in House"); // return false; }
public override bool canBePlacedHere(GameLocation l, Vector2 tile) { if ((l is FarmHouse)) { for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++) { for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++) { Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize; vector.X += (float)(Game1.tileSize / 2); vector.Y += (float)(Game1.tileSize / 2); foreach (KeyValuePair <Vector2, StardewValley.Object> something in l.objects) { StardewValley.Object obj = something.Value; if ((obj.GetType()).ToString().Contains("ModularDecoration")) { ModularDecoration current = (ModularDecoration)obj; if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1) { bool result = true; return(result); } if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y)) { bool result = false; return(result); } } } } } return(base.canBePlacedHere(l, tile)); } else { // Game1.showRedMessage("NOT FARMHOUSE"); for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++) { for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++) { Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize; vector.X += (float)(Game1.tileSize / 2); vector.Y += (float)(Game1.tileSize / 2); /* * foreach (Decoration current in (l as FarmHouse).Decoration) * { * if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1) * { * bool result = true; * return result; * } * if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y)) * { * bool result = false; * return result; * } * } */ } } return(base.canBePlacedHere(l, tile)); } }