示例#1
0
    void TryAddWeapon(Firearm item, bool select = false)
    {
        if (!item)
        {
            return;
        }

        var firearm = FindWeapon(item.id);

        if (firearm)
        {
            firearm.Merge(item);

            Destroy(item.gameObject);
        }
        else
        {
            AddNewWeapon(item);

            if (select)
            {
                SelectWeapon(NumberOfWeapons() - 1);
            }

            item.transform.parent        = firearmsHolder.transform;
            item.transform.localPosition = Vector2.zero;
            item.transform.localRotation = Quaternion.identity;
        }
    }
示例#2
0
 public void DoTheThing(Firearm firearm, StatSum stats)
 {
     if (!is_active)
     {
         return;
     }
     if (am_hidden)
     {
         return;
     }
     //Laser
     if (my_hitme == null)
     {
         Debug.Log("No hitme\n"); return;
     }
     if (stats == null)
     {
         Debug.Log("No stats\n");
     }
     if (firearm == null)
     {
         Debug.Log("No firearm\n");
     }
     if (firearm.current_arrow_name == null)
     {
         Debug.Log("No current arrow now\n");
     }
     try
     {
         my_hitme.HurtMe(stats, firearm, EffectTypeOverride(firearm.current_arrow_name.type));
     }catch (NullReferenceException e)
     {
         Debug.LogError($"Something is null: stats {stats == null} firearm {firearm == null} my_hitme {my_hitme == null} firearm.current_arrow_name {firearm?.current_arrow_name == null}");
     }
 }
        //============================================================================*
        // Validate()
        //============================================================================*

        public bool Validate()
        {
            bool fOK = true;

            while (true)
            {
                bool fDeleted = false;

                foreach (cFirearm Firearm in this)
                {
                    if (!Firearm.Validate())
                    {
                        fOK = false;

                        Remove(Firearm);

                        fDeleted = true;

                        break;
                    }
                }

                if (!fDeleted)
                {
                    break;
                }
            }

            return(fOK);
        }
示例#4
0
    public float DOTMe(float[] stats, Firearm firearm, int level)
    {
        Regenerator health_over_time = addModifier <Regenerator>();
        float       xp = health_over_time.Init(this, stats, RegeneratorType.Self, firearm, level);

        return(xp);
    }
 public ActionResult AddFirearm(FirearmDTO firearmDto)
 {
     using (var db = new GunStoreContext())
     {
         if (ModelState.IsValid)
         {
             var firearm = new Firearm()
             {
                 Name        = firearmDto.Name,
                 Description = firearmDto.Description,
                 Price       = firearmDto.Price,
                 Quantity    = firearmDto.Quantity,
                 Model       = firearmDto.Model,
                 Category    = firearmDto.Category
             };
             if (firearmDto.Image != null)
             {
                 firearm.Image = new byte[firearmDto.Image.ContentLength];
                 firearmDto.Image.InputStream.Read(firearm.Image, 0, firearmDto.Image.ContentLength);
             }
             db.Firearms.Add(firearm);
             db.SaveChanges();
             ModelState.Clear();
             return(RedirectToAction("AddProduct", "Admin"));
         }
         ModelState.AddModelError("firearms", "Invalid firearms added");
         return(View());
     }
 }
        private void ListBoxFirearm_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (ListBoxFirearm.SelectedItem != null)
            {
                Firearm currentFirearm = ListBoxFirearm.SelectedItem as Firearm;

                TextBoxFirearmName.Text    = currentFirearm.FirearmName;
                TextBoxMuzzleVelocity.Text = currentFirearm.MuzzleVelocity.ToString();

                foreach (var item in ComboBoxFirearmType.ItemsSource)
                {
                    if (((FirearmType)item).FirearmTypeID == currentFirearm.FirearmTypeID)
                    {
                        ComboBoxFirearmType.SelectedItem = item;
                    }
                }

                foreach (var item in ComboBoxAmmunition.ItemsSource)
                {
                    if (((Ammunition)item).AmmunitionID == currentFirearm.AmmunitionID)
                    {
                        ComboBoxAmmunition.SelectedItem = item;
                    }
                }
            }
        }
示例#7
0
    public void Init(EffectType primary_effecttype, int primary_level, StatSum stats, float lifespan, bool auto_return, Firearm firearm)
    {
        if (!locationSet)
        {
            SetLocation(null, this.transform.position, 1, Quaternion.identity);
        }

        this.my_stats           = stats;
        this.primary_effecttype = primary_effecttype;
        this.lifespan           = lifespan;
        this.auto_return        = auto_return;
        this.primary_level      = primary_level;
        foreach (StatBit s in stats.stats)
        {
            if (primary_effecttype != EffectType.Diffuse && !s.dumb)
            {
                Debug.LogError("Lava " + this.gameObject.name + " is using a smart StatBit!\n");
            }
            s.dumb = true;
        }
        am_enabled     = true;
        my_firearm     = firearm;
        monsters       = null;
        every_so_often = Get.lava_damage_frequency;
        //CancelInvoke();
        //InvokeRepeating("GetVictims", 0f, every_so_often);
        TIME = 0f;
        time_to_next_lava_damage = 0f;
    }
示例#8
0
    //CALAMITY
    public void Init(StatBit bit, HitMe target, Firearm firearm, EffectType type)
    {
        Prepare(bit, firearm, type);

        if (type == EffectType.Calamity)
        {
            my_lava = Peripheral.Instance.zoo.getObject("Wishes/calamity_lava", true).GetComponent <Lava>();
        }
        else
        {
            my_lava = Peripheral.Instance.zoo.getObject("Wishes/foil_lava", true).GetComponent <Lava>();
        }

        my_lava.auto_return = true;

        my_lava.my_firearm = firearm;
        my_lava.Init(type, bit.level, lava_stats, lava_timer, true, firearm);

        my_lava.SetLocation(target.transform, target.transform.position, lava_size, Quaternion.identity);
        my_lava.SetFactor(1);

        my_lava.transform.localPosition = Vector3.zero;
        Vector3 pos = my_lava.transform.position;

        pos.z = 3.75f;
        my_lava.transform.position = pos;
        my_lava.updateMyPosition   = true;

        target.lavas.Add(my_lava);
    }
示例#9
0
    public static void assignXP(float xp, int level, HitMe hitme, Firearm firearm, Vector3 pos, EffectType type)
    {
        if (xp <= 0)
        {
            //    Debug.LogError("WTF " + xp + " " + hitme.gameObject.name + "\n");
            return;
        }
        if (firearm == null)
        {
            return;
        }
        float return_xp = firearm.addXp(xp, true);//if tower is at max xp, return the xp,

        // if xp is from damage done, it is tied to health. Otherwise,
        //if xp is from Speed/Teleport/Weaken etc, just assign the XP. this is handled by HitMe.stats.getXp though


        if (return_xp > 0)
        {
            hitme.stats.returnXp(return_xp);
        }
        float added = xp - return_xp;

        onXpAdded?.Invoke(added, pos);

        firearm.toy.my_tower_stats.addXp(type, level, xp);
    }
示例#10
0
        //============================================================================*
        // PopulateFirearmCombo()
        //============================================================================*

        private void PopulateFirearmCombo()
        {
            m_fPopulating = true;

            //----------------------------------------------------------------------------*
            // Get the currently selected firearm
            //----------------------------------------------------------------------------*

            cFirearm SelectedFirearm = null;

            if (FirearmCombo.SelectedIndex > 0 || FirearmCombo.SelectedItem is cFirearm)
            {
                SelectedFirearm = (cFirearm)FirearmCombo.SelectedItem;
            }

            //----------------------------------------------------------------------------*
            // Reset the firearm combo
            //----------------------------------------------------------------------------*

            FirearmCombo.Items.Clear();

            //----------------------------------------------------------------------------*
            // Get the selected Bullet
            //----------------------------------------------------------------------------*

            cBullet Bullet = null;

            if (BulletCombo.SelectedIndex > 0 || BulletCombo.SelectedItem is cBullet)
            {
                Bullet = (cBullet)BulletCombo.SelectedItem;
            }

            //----------------------------------------------------------------------------*
            // Populate the firearm combo
            //----------------------------------------------------------------------------*

            FirearmCombo.Items.Add("No Specific Firearm");

            foreach (cFirearm Firearm in m_DataFiles.FirearmList)
            {
                if (Firearm.FirearmType == cFirearm.eFireArmType.Rifle &&
                    (Bullet == null || Firearm.CanUseBullet(Bullet)))
                {
                    FirearmCombo.Items.Add(Firearm);
                }
            }

            if (SelectedFirearm != null)
            {
                FirearmCombo.SelectedItem = SelectedFirearm;
            }

            if (FirearmCombo.SelectedIndex == -1)
            {
                FirearmCombo.SelectedIndex = 0;
            }

            m_fPopulating = false;
        }
示例#11
0
        public async Task <Firearm> SaveFirearm(Firearm firearm)
        {
            this.firearmContext.Firearms.Update(firearm);

            await this.firearmContext.SaveChangesAsync();

            return(firearm);
        }
        public static decimal Deceleration(Firearm currentFirearm, decimal velocity, decimal mass, decimal area)
        {
            var constants = Read.ReadDefaults();



            //Return (CrossSection * BallisticCoefficient * AirDensity * (Velocity ^ 2)) / (2 * Mass)
            return(Convert.ToDecimal(area * Convert.ToDecimal(currentFirearm.Ammunition.Coefficient) * Convert.ToDecimal(constants.AirDensity) * (velocity * velocity)) / (2 * mass));
        }
        private void FirearmDelete_Click(object sender, RoutedEventArgs e)
        {
            if (ListBoxFirearm.SelectedItem != null)
            {
                Firearm currentFirearm = ListBoxFirearm.SelectedItem as Firearm;

                _delete.DeleteFirearm(currentFirearm.FirearmID);
                PopulateControls();
            }
        }
 static void Main(string[] args)
 {
     Console.WriteLine("Hello World!");
     Firearm pistol = new Firearm { name = "pistol", sound = "pop", caliber = "9mm" };
     pistol.work();
     Firearm rifle = new Firearm { name = "rifle", sound = "bang", caliber = "7.62mm" };
     rifle.work();
     Firearm shotgun = new Firearm { name = "shotgun", sound = "boom", caliber = "12gauge" };
     shotgun.work();
 }
示例#15
0
        //============================================================================*
        // ResolveIdentities()
        //============================================================================*

        public bool ResolveIdentities(cDataFiles Datafiles)
        {
            bool fChanged = false;

            foreach (cFirearm Firearm in this)
            {
                fChanged = Firearm.ResolveIdentities(Datafiles) ? true : fChanged;
            }

            return(fChanged);
        }
示例#16
0
    public float MassMe(float[] stats, Firearm firearm, EffectType effect_type, int level)
    {
        float xp = mass.Init(stats);

        if (xp > 0)
        {
            Get.assignXP(xp, level, this, firearm, this.transform.position, effect_type);
        }

        return(xp);
    }
示例#17
0
        static void Main(string[] args)
        {
            Firearm pistol = new Firearm();

            pistol.Name    = "pistol";
            pistol.Sound   = "pop";
            pistol.Caliber = "9 mm";
            Console.WriteLine
                ("I am a "
                + pistol.Name
                + ", and I go "
                + pistol.Sound
                + " with a "
                + pistol.Caliber
                + ", and we have "
                + Firearm.GetCount().ToString()
                + " "
                + pistol.GetType().Name
                + "'s");

            Firearm rifle = new Firearm();

            rifle.Name    = "rifle";
            rifle.Sound   = "bang";
            rifle.Caliber = "7.62 mm";
            Console.WriteLine
                ("I am a "
                + rifle.Name
                + ", and I go "
                + rifle.Sound
                + " with a "
                + rifle.Caliber
                + ", and we have "
                + Firearm.GetCount().ToString()
                + " "
                + rifle.GetType().Name + "'s");

            Firearm shotgun = new Firearm();

            shotgun.Name    = "shotgun";
            shotgun.Sound   = "boom";
            shotgun.Caliber = "12 gauge";
            Console.WriteLine
                ("I am a "
                + shotgun.Name
                + ", and I go "
                + shotgun.Sound
                + " with a "
                + shotgun.Caliber
                + ", and we have "
                + Firearm.GetCount().ToString()
                + " " + shotgun.GetType().Name
                + "'s");
        }
示例#18
0
    void assignXp(float add, Firearm firearm, EffectType primary_effecttype, EffectType override_effecttype, int primary_level, int override_level)
    {
        //  Debug.Log($"Assigned xp {add}\n");
        EffectType use_effecttype = (primary_effecttype == EffectType.Null) ? override_effecttype : primary_effecttype;
        int        use_level      = (primary_level == -1) ? override_level : primary_level;

        if (firearm != null)
        {
            Get.assignXP(add, use_level, this, firearm, this.transform.position, use_effecttype);
        }
    }
示例#19
0
    private void Awake()
    {
        //create weapon dictionary wrapper
        if (WeaponAttached.transform.name == "Pistol")
        {
            weapon = WeaponAttached.GetComponent <Pistol>();
        }

        bulletSpawn   = GameObject.Find("BulletSpawnPoint").GetComponent <Transform>();
        reloadText    = GameObject.Find("ReloadTextLabel").GetComponent <Text>();
        reloadingText = GameObject.Find("ReloadingTextLabel").GetComponent <Text>();;
    }
        private void FirearmUpdate_Click(object sender, RoutedEventArgs e)
        {
            if (ListBoxFirearm.SelectedItem != null && ComboBoxAmmunition.SelectedItem != null && ComboBoxFirearmType.SelectedItem != null && TextBoxFirearmName.Text != "" && TextBoxMuzzleVelocity.Text != null)
            {
                Firearm     currentFirearm    = ListBoxFirearm.SelectedItem as Firearm;
                Ammunition  currentAmmunition = ComboBoxAmmunition.SelectedItem as Ammunition;
                FirearmType currentType       = ComboBoxFirearmType.SelectedItem as FirearmType;

                _update.UpdateFirearm(currentFirearm.FirearmID, TextBoxFirearmName.Text, Int32.Parse(TextBoxMuzzleVelocity.Text), currentType.FirearmTypeID, currentAmmunition.AmmunitionID);
                PopulateControls();
            }
        }
示例#21
0
    public void Merge(Firearm firearm)
    {
        if (id != firearm.id)
        {
            return;
        }

        if (limitedAmmo && firearm.limitedAmmo)
        {
            AddAmmo(firearm.ammo);
        }
    }
示例#22
0
    void Start()
    {
        alive          = true;
        playerAnimator = this.GetComponent <Animator>();
        controller     = this.GetComponent <CharacterController>();
        CameraScript playerCameraScript = Instantiate(cameraPrefab, new Vector3(0, 0, 0), Quaternion.identity) as CameraScript;

        playerCameraScript.SetObjectToLookAt(Instance);
        playerCamera = playerCameraScript.GetComponent <Camera>();
        CalculateCrosshairPosition();
        healthBar     = GameObject.FindGameObjectWithTag("HealthBar").GetComponent <HealthBar>();
        equipedWeapon = equipment[0];
    }
        private void LoadLineChartData()
        {
            Firearm currentFirearm = ComboBoxFirearm.SelectedItem as Firearm;

            if (graphType() == "HeightTime")
            {
                ((LineSeries)HeightTime.Series[0]).ItemsSource = Calculation.Speed(currentFirearm.FirearmID, Convert.ToInt32(SliderAngle.Value), Convert.ToDecimal(TextBoxStartingHeight.Text), Convert.ToDecimal(TextBoxTimeInterval.Text), "HeightTime");
            }
            else
            {
                ((LineSeries)HeightDistance.Series[0]).ItemsSource = Calculation.Speed(currentFirearm.FirearmID, Convert.ToInt32(SliderAngle.Value), Convert.ToDecimal(TextBoxStartingHeight.Text), Convert.ToDecimal(TextBoxTimeInterval.Text), "HeightDistance");
            }
        }
示例#24
0
    // Update is called once per frame
    void Update()
    {
        Firearm firearm = null;

        string text = "No weapon";

        if (shooter.Weapon != null)
        {
            if (shooter.Weapon is Firearm)
            {
                firearm = shooter.Weapon as Firearm;
            }
            else
            {
                text = shooter.Weapon.gameObject.name;
            }
        }


        if (firearm != null)
        {
            text = firearm.Ammo + "/" + firearm.magazine + "\n";
            switch (firearm.Firemode)
            {
            case Firearm.FireMode.SemiAuto:
                text += "Semi-auto";
                break;

            case Firearm.FireMode.Burst:
                text += "Burst " + firearm.burstSize;
                break;

            case Firearm.FireMode.Automatic:
                text += "Automatic";
                break;
            }
        }
        ammoText.text = text;

        if (firearm != null && firearm.Reloading)
        {
            reloadText.enabled = true;
            var time = Mathf.Floor(firearm.ReloadRemaining * 10) / 10;
            reloadText.text = "" + time;
        }
        else
        {
            reloadText.enabled = false;
        }
    }
示例#25
0
        private void updateWeapon(Firearm _weapon, int _index)
        {
            if (_index == 0)
            {
                weapon.transform.GetChild(0).GetComponent <Text>().text = "--";
            }
            else
            {
                var _text = weapon.transform.GetChild(0).GetComponent <Text>().text = _weapon.ammo.ToString();
            }

            weapon.GetComponent <Image>().sprite = _weapon.transform.GetChild(0).GetComponent <SpriteRenderer>().sprite;
            weapon.GetComponent <Image>().color  = _weapon.transform.GetChild(0).GetComponent <SpriteRenderer>().color;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ChangingAttachmentsEventArgs"/> class.
 /// </summary>
 /// <param name="player"><inheritdoc cref="Player"/></param>
 /// <param name="firearm"><inheritdoc cref="Firearm"/></param>
 /// <param name="code">The attachments code.</param>
 /// <param name="isAllowed"><inheritdoc cref="IsAllowed"/></param>
 public ChangingAttachmentsEventArgs(
     Player player,
     Firearm firearm,
     uint code,
     bool isAllowed = true)
 {
     Player  = player;
     Firearm = firearm;
     CurrentAttachmentIdentifiers = firearm.AttachmentIdentifiers;
     NewAttachmentIdentifiers     = firearm.Type.GetAttachmentIdentifiers(code).ToList();
     CurrentCode = firearm.Base.GetCurrentAttachmentsCode();
     NewCode     = code;
     IsAllowed   = isAllowed;
 }
示例#27
0
    //DOT
    //regenerator doing damage => has negative stats[0]
    public float Init(HitMe _hitme, float[]  stats, RegeneratorType _type, Firearm firearm, int level)
    {
        repeat_rate   = Get.regenerator_repeat_rate;
        heal_duration = -1;
        type          = _type;
        my_hitme      = _hitme;
        effect_type   = EffectType.DOT;
        //if (_towerID != 0 && towerID != _towerID)
        //{
        //  towerID = _towerID;
        //my_firearm = getFirearm(towerID);
        // }
        my_firearm = firearm;
        monsters   = null;

        this.level = level;
        duration   = stats[1];
        EnableVisuals(_hitme, duration);
        TIME = 0f;
        if (is_active)
        {
            if (my_lava != null)
            {
                my_lava.lifespan = duration;
            }
            return(0f);
        }

        float finisher_percent = (stats.Length == StaticStat.StatLength(EffectType.DOT, true)) ? stats[3] : 0;

        if (finisher_percent > 0 && UnityEngine.Random.RandomRange(0, 1) < finisher_percent)
        {
            //  SetEverythingOnFire(stats);
            //    Debug.Log("Fin\n");
        }

        total_time     = duration + .1f; // this isn only intended for 1 time use, not repeating
        period         = -1;
        rate           = Get.getRegeneratorModRate(repeat_rate, stats[0], duration);
        type           = _type;
        done_for_good  = false;
        is_active      = true;
        am_doing_stuff = false;
        first_invoke   = true;
        //    Debug.Log("initializing regenerator total time " + total_time + " duration " + duration + " rate " + rate
        //                   + " repeat_rate " + repeat_rate + " stat " + stats[0] + "\n");
        return(0);
    }
示例#28
0
 public void ChangeWeapon(Firearm weapon)
 {
     if (weapon != null)
     {
         _weapon = weapon;
         if (_reloadCorroutine != null)
         {
             StopCoroutine(_reloadCorroutine);
             _reloadCorroutine = null;
         }
         if (ammoUpdate != null)
         {
             ammoUpdate(_weapon.Magazine);
         }
     }
 }
示例#29
0
    void SelectWeapon(int index)
    {
        if (index < 0 || index >= equippedFirearms.Count)
        {
            Debug.LogError("Weapon index out of bounds");
            return;
        }

        currentFirearmIndex = index;
        currentFirearm      = equippedFirearms[index];

        foreach (var firearm in equippedFirearms)
        {
            firearm.gameObject.SetActive(firearm == currentFirearm);
        }
    }
示例#30
0
    public void initStats(Firearm _firearm)
    {
        // setFirearm(_firearm);
        statsum         = _firearm.toy.rune.GetStats(false);
        statsum.towerID = this.gameObject.GetInstanceID();
        //float strength = statsum.GetStatBit(EffectType.Laser).stat;
        //	Debug.Log("Initializing laser with strength " + strength + "\n");
        //	float times = 6;


        ammo_frequency   = statsum.getReloadTime(false);
        damage_frequency = Get.laser_damage_frequency;

        statsum.factor = Get.laser_damage_factor;
        initLaser();
    }
	private bool AssignFirearm()
	{
		if(firearm != null)
		{
			return true;
		}

		if(entity == null)
		{
			entity = EntityUtils.GetEntityWithTag("Player");

			if(entity == null)
			{
				return false;
			}
		}

		firearm = entity.GetComponentInChildren<Firearm>();
		return firearm != null;
	}
示例#32
0
        public UnitShoot( Unit attacker, Unit attackee, Firearm weapon )
            : base("Shoot", attacker)
        {
            this.attacker = attacker;
            this.attackee = attackee;
            this.weapon = weapon;

            result = attacker.relations.GetAttackResult( attackee );
        }
示例#33
0
 public Reload( Unit owner, Firearm source )
     : base(owner, source, "Reload")
 {
 }