示例#1
0
        public Mobile(Player player, Vector2 position, MobileType mobileType, bool IsSummon = false) : base()
        {
            ProjectileList              = new List <Projectile>();
            UnusedProjectile            = new List <Projectile>();
            LastCreatedProjectileList   = new List <Projectile>();
            UninitializedProjectileList = new List <Projectile>();
            ItemsUnderEffectList        = new List <ItemType>();

            MobileType = mobileType;
            Owner      = player;

            movingSE       = AssetHandler.Instance.RequestSoundEffect(SoundEffectParameter.MobileMovement(mobileType));
            unableToMoveSE = AssetHandler.Instance.RequestSoundEffect(SoundEffectParameter.MobileUnableToMove(mobileType));

            this.IsSummon = IsSummon;

            IsPlayable = GameInformation.Instance.IsOwnedByPlayer(this) && !IsSummon;

            if (IsPlayable)
            {
                Movement = new LocalMovement(this);
            }
            else if (!IsSummon)
            {
                Movement = new RemoteMovement(this);
            }

            MobileMetadata = MobileMetadata.BuildMobileMetadata(player, mobileType);

            Position       = position;
            MobileFlipbook = MobileFlipbook.CreateMobileFlipbook(MobileType, position);

            if (!IsSummon)
            {
                Rider = new Rider(this);

                if (MobileType != MobileType.Random)
                {
                    Crosshair = new Crosshair(this);
                }
            }

            //Sync
            SyncMobile                = new SyncMobile();
            SyncMobile.Owner          = player;
            SyncMobile.Position       = Position.ToArray <int>();
            SyncMobile.MobileMetadata = MobileMetadata.BuildMobileMetadata(player, player.PrimaryMobile);
            SyncPosition              = Position;

            IsAlive                = true;
            IsActionsLocked        = false;
            hasShotSequenceStarted = false;

#if DEBUG
            DebugHandler.Instance.Add(debugCrosshair);
            DebugHandler.Instance.Add(debugCrosshair2);
#endif
        }
示例#2
0
 public override void InitializeAgent()
 {
     base.InitializeAgent();
     m_Shooting = GetComponent <Shooting>();
     //m_Movement = GetComponent<Movement>();
     m_Movement             = GetComponent <LocalMovement>();
     Monitor.verticalOffset = 1f;
     myArea    = area.GetComponent <TankArea>();
     rayPer    = GetComponent <RayPerception>();
     myAcademy = myAcademyObj.GetComponent <TankAcademy>();
     agentRB   = GetComponent <Rigidbody>();
 }