예제 #1
0
        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);
            }
        }
예제 #2
0
        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]);
            }
        }