Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using Server.Multis;
- using Server.Network;
- using Server.Gumps;
- using Server.ContextMenus;
- using System.Collections.Generic;
- using Server.Items;
- namespace Server.Items
- {
- public class FarmlandAddon2 : BaseAddon, IChopable
- {
- public override BaseAddonDeed Deed { get { return m_Farmland; } }
- private Map n_Map;
- private BaseHouse m_House;
- private bool m_initialised;
- private FarmlandPlacement m_topPlacement;
- public FarmlandDeed m_Farmland;
- private int m_LandType;
- [Constructable]
- public FarmlandAddon2()
- {
- m_topPlacement = new FarmlandPlacement();
- AddComponent(m_topPlacement, 0, 0, 0);
- }
- public FarmlandAddon2(Serial serial)
- : base(serial)
- {
- this.m_initialised = true;
- }
- public override void OnMapChange()
- {
- base.OnMapChange();
- if (!this.m_initialised)
- {
- this.TryInitialise();
- }
- }
- public override void OnLocationChange(Point3D oldLoc)
- {
- base.OnLocationChange(oldLoc);
- if (!this.m_initialised)
- {
- this.TryInitialise();
- }
- }
- private void TryInitialise()
- {
- if (!this.m_initialised
- && this.Map != Map.Internal
- && this.Location != Point3D.Zero)
- {
- this.m_initialised = true;
- BaseHouse house = (BaseHouse.FindHouseAt((BaseAddon)this));
- m_House = house;
- n_Map = ((BaseAddon)this).Map;
- FarmlandDeed gt = (FarmlandDeed)Deed;
- Point3D hsp = new Point3D(this.X, this.Y, this.Z);
- Sector s = n_Map.GetSector(hsp);
- int houseYOffset = this.Y - house.Y;
- int houseXOffset = this.X - house.X;
- int type = (int)gt.m_LandType;
- if (null != house.Area
- && house.Area.Length > 0)
- {
- //Place components
- for (int i = 0; i < house.Area.Length; ++i)
- {
- Rectangle2D area = house.Area[i];
- double width = area.Width * 1.5;
- double height = area.Height * 1.5;
- for (int rx = 0; rx < width; ++rx)
- {
- for (int ry = 0; ry < height; ++ry)
- {
- int vx = rx + area.X - houseXOffset;
- int vy = ry + area.Y - houseYOffset;
- AddComponent(new AddonComponent(type), vx, vy, -7); // Dirt
- //AddComponent(new AddonComponent(0x850), vx, vy, -7); // South Fence
- //AddComponent(new AddonComponent(0x85E), vx, vy, -7); // West Fence
- //AddComponent(new AddonComponent(0x85D), vx, vy, -7); // North Fence
- //AddComponent(new AddonComponent(0x85E), vx, vy, -7); // East Fence
- }
- }
- }
- }
- }
- }
- public override void OnChop(Mobile from)
- {
- FarmlandDeed deed = new FarmlandDeed();
- if (from != null)
- from.AddToBackpack(deed);
- this.Delete();
- }
- public override void Serialize(GenericWriter writer)
- {
- base.Serialize(writer);
- writer.Write((int)0); // version
- }
- public override void Deserialize(GenericReader reader)
- {
- base.Deserialize(reader);
- int version = reader.ReadInt();
- }
- }
- public class FarmlandDeed : BaseAddonDeed
- {
- public override BaseAddon Addon
- {
- get
- {
- FarmlandAddon2 farmlandAddon = new FarmlandAddon2();
- farmlandAddon.m_Farmland = this;
- return farmlandAddon;
- }
- }
- public enum TypeOfLand
- {
- None = 0x000,
- Dirt = 0x32C9,
- }
- public TypeOfLand m_LandType;
- [CommandProperty(AccessLevel.GameMaster)]
- public TypeOfLand LandType
- {
- get { return m_LandType; }
- set { m_LandType = value; }
- }
- [Constructable]
- public FarmlandDeed()
- {
- Name = "Farmland Deed";
- }
- public FarmlandDeed(Serial serial)
- : base(serial)
- {
- }
- public override void OnDoubleClick(Mobile from)
- {
- if ((from.Map == Map.Felucca || from.Map == Map.Trammel) && from.Z <= 15 && from.Z >= -5 || from.Map == Map.Malas && from.Z >= -110 && from.Z <= -82 || from.Map == Map.Tokuno && from.Z >= -1 && from.Z <= 40)
- {
- m_LandType = Server.Items.FarmlandDeed.TypeOfLand.Dirt;
- base.OnDoubleClick(from);
- return;
- }
- else
- {
- from.SendMessage("You must be on the first floor to add a Farm!");
- return;
- }
- }
- public override void Serialize(GenericWriter writer)
- {
- base.Serialize(writer);
- writer.Write((int)1); // version
- writer.Write((int)LandType);
- }
- public override void Deserialize(GenericReader reader)
- {
- base.Deserialize(reader);
- int version = reader.ReadInt();
- switch (version)
- {
- case 1:
- LandType = (TypeOfLand)reader.ReadInt();
- goto case 0;
- case 0:
- break;
- }
- }
- }
- public class FarmlandPlacement : AddonComponent
- {
- [Constructable]
- public FarmlandPlacement()
- : this(false)
- {
- }
- [Constructable]
- public FarmlandPlacement(bool creatures)
- : base(0x1E34)
- {
- Movable = false;
- Visible = true;
- }
- public override void OnDoubleClick(Mobile from)
- {
- if (!from.InRange(this.GetWorldLocation(), 1))
- {
- from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
- }
- }
- public FarmlandPlacement(Serial serial)
- : base(serial)
- {
- }
- public override void Serialize(GenericWriter writer)
- {
- base.Serialize(writer);
- writer.Write((int)0); // version
- }
- public override void Deserialize(GenericReader reader)
- {
- base.Deserialize(reader);
- int version = reader.ReadInt();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement