private void AddCannon(Direction d, CannonPower type, int xOffset, int yOffset, int zOffset, bool oper = true) { MannedCannon cannon; BaseCreature mob = null; if (oper) { mob = new PirateCrew { CantWalk = true }; Crew.Add(mob); } switch (type) { default: case CannonPower.Light: cannon = new MannedCulverin(mob, d); break; case CannonPower.Heavy: cannon = new MannedCarronade(mob, d); break; case CannonPower.Massive: cannon = new MannedBlundercannon(mob, d); break; } if (mob == null) { cannon.CanFireUnmanned = true; } cannon.MoveToWorld(new Point3D(X + xOffset, Y + yOffset, Z + zOffset), Map); Cannons.Add(cannon); if (mob != null) { Point3D offset; switch (d) { default: case Direction.South: offset = new Point3D(0, -1, 0); break; case Direction.North: offset = new Point3D(0, 1, 0); break; case Direction.West: offset = new Point3D(1, 0, 0); break; case Direction.East: offset = new Point3D(-1, 0, 0); break; } mob.MoveToWorld(new Point3D(cannon.X + offset.X, cannon.Y + offset.Y, cannon.Z + offset.Z), Map); } }
private static int GetID(Direction facing, CannonPower power) { switch (facing) { default: case Direction.South: return(BaseGalleon.CannonIDs[0][(int)power]); case Direction.West: return(BaseGalleon.CannonIDs[1][(int)power]); case Direction.North: return(BaseGalleon.CannonIDs[2][(int)power]); case Direction.East: return(BaseGalleon.CannonIDs[3][(int)power]); } }