Exemple #1
0
    void Update()
    {
        //ATTEMPT AT FINITE STATE

        if (Vector3.Distance(transform.position, target.position) > sightDistance) //if player is out of sight enemy should wander around
        {
            print("This is where the AI should wander");
            //Wander();
        }

        if (Vector3.Distance(transform.position, target.position) < retreatDistance) //if playertank distance is less than retreat distance then move away from player
        {
            transform.position = Vector3.MoveTowards(transform.position, target.position, -speed * Time.deltaTime);
        }

        //SHOOTING AT PLAYER

        if (Vector3.Distance(transform.position, target.transform.position) < sightDistance) //if player is within sight distance, AI fires shells at a certain rate at the players position
        {
            //Debug.Log("enemy is within distance");
            var relativePos = target.position - transform.position;

            var rotation = Quaternion.LookRotation(relativePos);

            transform.rotation = rotation; //looks at player once in sight

            shotCounter1 -= Time.deltaTime;
            if (shotCounter1 <= 0) //fires bullet and resets shotcounter if it goes below or equal to 0
            {
                shotCounter1 = timeBetweenShots1;
                ShellController newShell = Instantiate(shell1, shellStart1.position, shellStart1.rotation) as ShellController; //creates a new shell at the shell start position
                newShell.speed = shellSpeed1;
            }
        }
    }
Exemple #2
0
        public ShellForm(IKernel kernel)
        {
            Asserter.AssertIsNotNull(kernel, "kernel");

            _kernel = kernel;
            _applicationService = _kernel.Get<IApplicationService>();
            _storageService = _kernel.Get<IStorageService>();
            _settingsService = _kernel.Get<ISettingsService>();
            _siteService = _kernel.Get<ISiteService>();
            _controller = _kernel.Get<ShellController>();

            Asserter.AssertIsNotNull(_applicationService, "_applicationService");
            Asserter.AssertIsNotNull(_storageService, "_storageService");
            Asserter.AssertIsNotNull(_settingsService, "_settingsService");
            Asserter.AssertIsNotNull(_siteService, "_siteService");

            InitializeComponent();

            _siteService.Register(SiteNames.ContentSite, contentPanel);
            _siteService.Register(SiteNames.NavigationSite, navigationPanel);
            _siteService.Register(SiteNames.ContentActionsSite, contentActionPanel);

            SetStyle(ControlStyles.OptimizedDoubleBuffer |
                     ControlStyles.AllPaintingInWmPaint |
                     ControlStyles.ResizeRedraw, true);
        }
Exemple #3
0
        public ShellForm(IKernel kernel)
        {
            Asserter.AssertIsNotNull(kernel, "kernel");

            _kernel             = kernel;
            _applicationService = _kernel.Get <IApplicationService>();
            _storageService     = _kernel.Get <IStorageService>();
            _settingsService    = _kernel.Get <ISettingsService>();
            _siteService        = _kernel.Get <ISiteService>();
            _controller         = _kernel.Get <ShellController>();

            Asserter.AssertIsNotNull(_applicationService, "_applicationService");
            Asserter.AssertIsNotNull(_storageService, "_storageService");
            Asserter.AssertIsNotNull(_settingsService, "_settingsService");
            Asserter.AssertIsNotNull(_siteService, "_siteService");

            InitializeComponent();

            _siteService.Register(SiteNames.ContentSite, contentPanel);
            _siteService.Register(SiteNames.NavigationSite, navigationPanel);
            _siteService.Register(SiteNames.ContentActionsSite, contentActionPanel);

            SetStyle(ControlStyles.OptimizedDoubleBuffer |
                     ControlStyles.AllPaintingInWmPaint |
                     ControlStyles.ResizeRedraw, true);
        }
    public void shellHit(ShellController shell)
    {
        float damage = shell.stats.damage;

        if (currentStats.health / baseStats.health > Upgrades.fullHpDamage_startHpMin - GameData.upgrades.fullHpDamage_lvl * Upgrades.fullHpDamage_HpMinDecimal)
        {
            damage *= Upgrades.fullHpDamage_damageMultiplier * GameData.upgrades.fullHpDamage_lvl;
        }
        if (GameData.upgrades.burn_lvl > 0)
        {
            if (Random.Range(0, 100) < Upgrades.burn_startChance + Upgrades.burn_plusChance * GameData.upgrades.burn_lvl)
            {
                startBurning();
            }
        }
        if (GameData.upgrades.slow_lvl > 0)
        {
            if (Random.Range(0, 100) < GameData.upgrades.slow_getSlowChance())
            {
                setSpeed(currentStats.speed * GameData.upgrades.slow_getSlowAmount());
                Debug.Log("SLOW");
            }
        }

        takeDamage(damage);
    }
Exemple #5
0
        static void Main(string[] args)
        {
            ICore           core            = new Core.Core();
            IShellUI        ui              = new ShellCLI();
            ShellController shellController = new ShellController(ui, core);

            shellController.Ui.Start();
        }
        public ShellFlyoutRenderer(IShellContext shellContext, Context context) : base(context)
        {
            _scrimColor   = Color.Default;
            _shellContext = shellContext;

            Shell.PropertyChanged += OnShellPropertyChanged;

            ShellController.AddAppearanceObserver(this, Shell);
        }
Exemple #7
0
    private void FinishRespawn()
    {
        transform.DOScale(0.1f, 0.5f).onComplete += FinishRespawnScale;

        var shellController = Shell.GetComponent <ShellController>();

        shellController.SetAttachedToTurtle(DefaultShellPivot, FinishEquipShell);
        this.shellController = shellController;
    }
    void OnCollisionEnter2D(Collision2D collision)
    {
        GameObject explosionInst = Instantiate(shellExplosion, this.transform.position, this.transform.rotation);

        ShellController shellC = explosionInst.GetComponent <ShellController>();

        shellC.playerM = playerM;
        shellC.Init(BalanceTweaks.GlobalInstance.explosiveGun.shellDamage, 0, 1.1f);
    }
Exemple #9
0
        public ShellFlyoutView(IShellContext shellContext, Context context) : base(context)
        {
            _scrimBrush   = Brush.Default;
            _shellContext = shellContext;
            _flyoutHeight = LP.MatchParent;

            Shell.PropertyChanged += OnShellPropertyChanged;
            ShellController.AddAppearanceObserver(this, Shell);
        }
Exemple #10
0
    public override void StartAttack()
    {
        //base.StartAttack();

        var instanceShell = Instantiate(shell, shellSocket.position, Quaternion.identity);

        ShellController shellController = instanceShell.GetComponent <ShellController>();

        shellController.HitColliderEvent += ContactCollider;
    }
Exemple #11
0
        protected virtual void OnPageSelected(int position)
        {
            if (_selecting)
            {
                return;
            }

            var shellSection = ShellSection;
            var visibleItems = SectionController.GetItems();

            // This mainly happens if all of the items that are part of this shell section
            // vanish. Android calls `OnPageSelected` with position zero even though the view pager is
            // empty
            if (visibleItems.Count >= position)
            {
                return;
            }

            var shellContent = visibleItems[position];

            if (shellContent == shellSection.CurrentItem)
            {
                return;
            }

            var  stack  = shellSection.Stack.ToList();
            bool result = ShellController.ProposeNavigation(ShellNavigationSource.ShellContentChanged,
                                                            (ShellItem)shellSection.Parent, shellSection, shellContent, stack, true);

            if (result)
            {
                UpdateCurrentItem(shellContent);
            }
            else if (shellSection?.CurrentItem != null)
            {
                var currentPosition = visibleItems.IndexOf(shellSection.CurrentItem);
                _selecting = true;

                // Android doesn't really appreciate you calling SetCurrentItem inside a OnPageSelected callback.
                // It wont crash but the way its programmed doesn't really anticipate re-entrancy around that method
                // and it ends up going to the wrong location. Thus we must invoke.

                _viewPager.Post(() =>
                {
                    if (currentPosition < _viewPager.ChildCount && _toolbarTracker != null)
                    {
                        _viewPager.SetCurrentItem(currentPosition, false);
                        UpdateCurrentItem(shellSection.CurrentItem);
                    }

                    _selecting = false;
                });
            }
        }
 private void Awake()
 {
     if (Instance != null && Instance != this)
     {
         Destroy(gameObject);
     }
     else
     {
         Instance = this;
     }
 }
Exemple #13
0
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            int section = indexPath.Section;
            int row     = indexPath.Row;
            var context = Groups[section][row];

            DataTemplate template = ShellController.GetFlyoutItemDataTemplate(context);

            if (context is IMenuItemController)
            {
                if (DefaultMenuItemTemplate != null && _context.Shell.MenuItemTemplate == template)
                {
                    template = DefaultMenuItemTemplate;
                }
            }
            else
            {
                if (DefaultItemTemplate != null && _context.Shell.ItemTemplate == template)
                {
                    template = DefaultItemTemplate;
                }
            }

            var cellId = ((IDataTemplateController)template.SelectDataTemplate(context, _context.Shell)).IdString;

            UIContainerCell cell;

            if (!_cells.TryGetValue(context, out cell))
            {
                var view = (View)template.CreateContent(context, _context.Shell);
                cell = new UIContainerCell(cellId, view);

                // Set Parent after binding context so parent binding context doesn't propagate to view
                cell.BindingContext = context;
                view.Parent         = _context.Shell;
            }
            else
            {
                var view = _cells[context].View;
                cell.Disconnect();
                cell = new UIContainerCell(cellId, view);
                cell.BindingContext = context;
            }

            cell.SetAccessibilityProperties(context);

            _cells[context]              = cell;
            cell.TableView               = tableView;
            cell.IndexPath               = indexPath;
            cell.ViewMeasureInvalidated += OnViewMeasureInvalidated;

            return(cell);
        }
    public override void OnActionReceived(ActionBuffers actionBuffers)
    {
        ActionSegment <int> actions = actionBuffers.DiscreteActions;
        int rotation = actions[0];
        int movement = actions[1];
        int attack   = actions[2];

        currentAttackState   = (AttackState)attack;
        currentMovementState = (MovementState)movement;
        currentRotationState = (RotationState)rotation;

        switch (currentRotationState)
        {
        case RotationState.LEFT:
            rb.transform.Rotate(Vector3.down, velocityRotateY);
            break;

        case RotationState.RIGTH:
            rb.transform.Rotate(Vector3.up, velocityRotateY);
            break;
        }

        switch (currentMovementState)
        {
        case MovementState.FORWARD:
            rb.velocity = this.transform.forward * velocityMovement;
            break;

        case MovementState.BACKWARD:
            rb.velocity = -this.transform.forward * velocityMovement;
            break;
        }

        if (currentAttackState == AttackState.ATTACK && timeLastBullet >= 1.0f / rateFire)
        {
            GameObject shellToSend = null;
            foreach (GameObject s in shells)
            {
                if (!s.activeSelf)
                {
                    shellToSend = s;
                }
            }
            if (shellToSend != null)
            {
                shellToSend.transform.position = this.spawnBullet.position;
                shellToSend.transform.rotation = this.transform.rotation;
                ShellController controller = shellToSend.GetComponent <ShellController>();
                controller.BoomBoom(healthController);
                timeLastBullet = 0;
            }
        }
    }
Exemple #15
0
    public void FinishThrowAnimation()
    {
        var throwDirection = DefaultThrowDirection;

        throwDirection.x = facingRight ? throwDirection.x : throwDirection.x * -1;
        shellController.ThrowShell(throwDirection, DefaultThrowForce);
        shellController = null;
        Lift(false);
        shellEquipped = false;

        Shell.GetComponent <SpriteRenderer>().sortingOrder = -2;

        SoundManager.Instance.PlaySound("throw");
    }
Exemple #16
0
        public ShellFlyoutRenderer(IShellContext shellContext, Context context) : base(context)
        {
            _scrimBrush   = Brush.Default;
            _shellContext = shellContext;
            _flyoutHeight = LP.MatchParent;

            Shell.PropertyChanged += OnShellPropertyChanged;
            ShellController.AddAppearanceObserver(this, Shell);

            this.DrawerClosed       += OnDrawerClosed;
            this.DrawerSlide        += OnDrawerSlide;
            this.DrawerOpened       += OnDrawerOpened;
            this.DrawerStateChanged += OnDrawerStateChanged;
        }
Exemple #17
0
 static void Main()
 {
     using (var controller = new ShellController())
     {
         try
         {
             controller.Run();
         }
         catch (Exception unhandledException)
         {
             controller.Log.Error(unhandledException);
         }
     }
 }
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        ShellController shellController = (ShellController)target;

        if (GUILayout.Button("更新Shell"))
        {
            shellController.UpdateShellEditor();
        }
        if (GUILayout.Button("删除Shell"))
        {
            shellController.ClearShellEditor();
        }
    }
Exemple #19
0
        public ShellItemRenderer(ShellItem item)
        {
            Initialize();
            ShellItem = item;

            ShellItem.PropertyChanged += OnShellItemPropertyChanged;
            if (ShellItem.Items is INotifyCollectionChanged notifyCollectionChanged)
            {
                notifyCollectionChanged.CollectionChanged += OnShellItemsCollectionChanged;
            }
            ShellController.AddAppearanceObserver(this, ShellItem);

            UpdateTabsItems();
            UpdateCurrentItem(ShellItem.CurrentItem);
        }
        public void ManuallyRegisterShell() {
            var aggregateCatalog = new AggregateCatalog();

            var typeCatalog = new TypeCatalog(typeof (FakeController));
            aggregateCatalog.Catalogs.Add(typeCatalog);
            var assemblyCatalog = new AssemblyCatalog(Assembly.Load("TMShopClient"));
            aggregateCatalog.Catalogs.Add(assemblyCatalog);
            var container = new CompositionContainer(aggregateCatalog);

            var shell = new ShellController(new ShellModel());
            container.ComposeExportedValue<IShell>(shell);
            var controller = container.GetExportedValue<FakeController>();

            Assert.AreSame(controller.Shell, shell);
        }
Exemple #21
0
 void Update()
 {
     if (isFiring) //if shots are being fired then the shot counter will be counting down
     {
         shotCounter -= Time.deltaTime;
         if (shotCounter <= 0) //fires bullet and resets shotcounter if it goes below or equal to 0
         {
             shotCounter = timeBetweenShots;
             ShellController newShell = Instantiate(shell, shellStart.position, shellStart.rotation) as ShellController; //creates a new shell at the shell start position
             newShell.speed = shellSpeed;
         }
     }
     else
     {
         shotCounter = 0;
     }
 }
        void TabLayoutMediator.ITabConfigurationStrategy.OnConfigureTab(TabLayout.Tab tab, int position)
        {
            if (_selecting)
            {
                return;
            }

            tab.SetText(new String(SectionController.GetItems()[position].Title));
            // TODO : Find a way to make this cancellable
            var shellSection = ShellSection;
            var shellContent = SectionController.GetItems()[position];

            if (shellContent == shellSection.CurrentItem)
            {
                return;
            }

            var  stack  = shellSection.Stack.ToList();
            bool result = ShellController.ProposeNavigation(ShellNavigationSource.ShellContentChanged,
                                                            (ShellItem)shellSection.Parent, shellSection, shellContent, stack, true);

            if (result)
            {
                UpdateCurrentItem(shellContent);
            }
            else if (shellSection?.CurrentItem != null)
            {
                var currentPosition = SectionController.GetItems().IndexOf(shellSection.CurrentItem);
                _selecting = true;

                // Android doesn't really appreciate you calling SetCurrentItem inside a OnPageSelected callback.
                // It wont crash but the way its programmed doesn't really anticipate re-entrancy around that method
                // and it ends up going to the wrong location. Thus we must invoke.

                Device.BeginInvokeOnMainThread(() =>
                {
                    if (currentPosition < _viewPager.ChildCount && _toolbarTracker != null)
                    {
                        _viewPager.SetCurrentItem(currentPosition, false);
                        UpdateCurrentItem(shellSection.CurrentItem);
                    }

                    _selecting = false;
                });
            }
        }
Exemple #23
0
    private void DoRightGripPressed(object sender, ControllerInteractionEventArgs e)
    {
        if (canFire)
        {
            GameObject      shell           = Instantiate(shellTemplate);
            ShellController shellController = shell.GetComponent <ShellController>();

            shellController.barrel = barrel;
            shellFireAudio.GetComponent <AudioSource>().Play();
            canFire = false;
            StartCoroutine("TurretShellFired", shell);
        }
        else
        {
            clickAudio.GetComponent <AudioSource>().Play();
        }
    }
Exemple #24
0
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            int section = indexPath.Section;
            int row     = indexPath.Row;
            var context = Groups[section][row];

            DataTemplate template = ShellController.GetFlyoutItemDataTemplate(context);

            if (context is IMenuItemController)
            {
                if (DefaultMenuItemTemplate != null && _context.Shell.MenuItemTemplate == template)
                {
                    template = DefaultMenuItemTemplate;
                }
            }
            else
            {
                if (DefaultItemTemplate != null && _context.Shell.ItemTemplate == template)
                {
                    template = DefaultItemTemplate;
                }
            }

            var cellId = ((IDataTemplateController)template.SelectDataTemplate(context, _context.Shell)).IdString;

            var cell = (UIContainerCell)tableView.DequeueReusableCell(cellId);

            if (cell == null)
            {
                var view = (View)template.CreateContent(context, _context.Shell);
                cell = new UIContainerCell(cellId, view);

                // Set Parent after binding context so parent binding context doesn't propagate to view
                cell.BindingContext = context;
                view.Parent         = _context.Shell;
            }
            else
            {
                cell.BindingContext = context;
            }

            cell.SetAccessibilityProperties(context);

            _views[context] = cell.View;
            return(cell);
        }
Exemple #25
0
        private void ToggleInstaller_CheckedChanged(object sender, EventArgs e)
        {
            switch (ToggleInstaller.Checked)
            {
            case true:
                integration.InstallToolbar();

                // Show the deskband
                ShellController shellController = new ShellController();
                shellController.callDeskband();
                break;

            case false:
                integration.UninstallToolbar();
                break;
            }
        }
Exemple #26
0
        void IShellFlyoutRenderer.AttachFlyout(IShellContext context, UIViewController content)
        {
            Context = context;
            Shell   = Context.Shell;
            Detail  = content;

            Shell.PropertyChanged += OnShellPropertyChanged;

            PanGestureRecognizer = new UIPanGestureRecognizer(HandlePanGesture);
            PanGestureRecognizer.ShouldRecognizeSimultaneously += (a, b) =>
            {
                // This handles tapping outside the open flyout
                if (a is UIPanGestureRecognizer pr && pr.State == UIGestureRecognizerState.Failed &&
                    b is UITapGestureRecognizer && b.State == UIGestureRecognizerState.Ended && IsOpen)
                {
                    IsOpen = false;
                    LayoutSidebar(true);
                }

                return(false);
            };

            PanGestureRecognizer.ShouldReceiveTouch += (sender, touch) =>
            {
                if (!context.AllowFlyoutGesture || _flyoutBehavior != FlyoutBehavior.Flyout)
                {
                    return(false);
                }
                var     view = View;
                CGPoint loc  = touch.LocationInView(View);
                if (touch.View is UISlider ||
                    touch.View is MPVolumeView ||
                    IsSwipeView(touch.View) ||
                    (loc.X > view.Frame.Width * 0.1 && !IsOpen))
                {
                    return(false);
                }

                return(true);
            };

            ShellController.AddAppearanceObserver(this, Shell);
            IsOpen = Shell.FlyoutIsPresented;
        }
Exemple #27
0
    void Update()
    {
        if (Vector3.Distance(transform.position, target.transform.position) < sightDistance) //if player is within sight distance, AI fires shells at a certain rate at the players position
        {
            //Debug.Log("enemy is within distance");
            var relativePos = target.position - transform.position;

            var rotation = Quaternion.LookRotation(relativePos);

            transform.rotation = rotation; // looks at the player once it is in sight

            shotCounter1 -= Time.deltaTime;
            if (shotCounter1 <= 0) //fires bullet and resets shotcounter if it goes below or equal to 0
            {
                shotCounter1 = timeBetweenShots1;
                ShellController newShell = Instantiate(shell1, shellStart1.position, shellStart1.rotation) as ShellController; //creates a new shell at the shell start position
                newShell.speed = shellSpeed1;
            }
        }
    }
Exemple #28
0
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (disposing)
            {
                if (!_disposed)
                {
                    ShellController.RemoveAppearanceObserver(this);

                    _disposed = true;

                    Shell.PropertyChanged -= OnShellPropertyChanged;
                    ((IShellController)Shell).RemoveFlyoutBehaviorObserver(this);

                    Context = null;
                    Shell   = null;
                    Detail  = null;
                }
            }
        }
Exemple #29
0
    /// <summary>
    /// Interact with nearable object. Can bem the shell, interrupt, item
    /// </summary>
    public void Interact()
    {
        // Check proximity.
        foreach (var interactable in interactables)
        {
            var scInteractable = interactable.GetComponentInParent <ShellController>();
            if (scInteractable)
            {
                scInteractable.SetAttachedToTurtle(DefaultShellPivot, FinishEquipShell);
                this.shellController = scInteractable;
            }

            var collectableItem = interactable.GetComponent <CollectableItem>();
            if (collectableItem)
            {
                inventory.Add(collectableItem);
                CheckVictory();
            }

            interactable.Interact();
        }
    }
Exemple #30
0
        public ShellItemView(ShellItem item, IMauiContext context)
        {
            ShellItem   = item;
            MauiContext = context;

            //Initialize();
            _mainLayout = new EBox(NativeParent);
            _mainLayout.SetLayoutCallback(OnLayout);
            _mainLayout.Show();
            _contentHolder = new EBox(NativeParent);
            _contentHolder.Show();
            _mainLayout.PackEnd(_contentHolder);

            ShellItem.PropertyChanged += OnShellItemPropertyChanged;
            if (ShellItem.Items is INotifyCollectionChanged notifyCollectionChanged)
            {
                notifyCollectionChanged.CollectionChanged += OnShellItemsCollectionChanged;
            }
            ShellController.AddAppearanceObserver(this, ShellItem);

            UpdateTabsItems();
            UpdateCurrentItem(ShellItem.CurrentItem);
        }
    public void Fire()
    {
        if (timeAccumulator > weaponTweaks.fireDelaySeconds)
        {
            float anglePerShell = weaponTweaks.shotSpread / weaponTweaks.shellsPerShot;
            float startAngle    = this.transform.rotation.eulerAngles.z - (weaponTweaks.shotSpread / 2);
            float endAngle      = startAngle + weaponTweaks.shotSpread;

            for (int i = 0; i < weaponTweaks.shellsPerShot; i++)
            {
                float shellAngle = Random.Range(startAngle, endAngle);

                GameObject shellInst = Instantiate(weaponTweaks.shellPrefab, shellSpawn.position, Quaternion.Euler(0, 0, shellAngle), playerM.gameObject.transform);

                shellInst.layer = LAYER_START_INDEX + playerM.playerNum;

                ShellController shellC = shellInst.GetComponent <ShellController>();
                shellC.playerM = playerM;
                shellC.Init(weaponTweaks.shellDamage, weaponTweaks.shellSpeed, weaponTweaks.shellDestroyTime);
            }

            timeAccumulator = 0.0F;
        }
    }
    public void GetShell(int dmg, float speed, TankSides side)
    {
        ShellController shellInstance = Instantiate(shell, tankTransform.position, tankTransform.rotation);

        shellInstance.Initialize(dmg, speed, side);
    }