Newer
Older
DungeonShooting / DungeonShooting_Godot / src / weapon / gun / GunManager.cs
@小李xl 小李xl on 4 Aug 2022 7 KB 替换武器
using System.Collections.Generic;
using Godot;

public static class GunManager
{

    public static Gun GetGun1()
    {
        //加载枪的 prefab
        var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn");
        //设置基础属性
        var attr = new GunAttribute();
        attr.Id = "1";
        attr.Name = "Gun1";
        attr.Weight = 40;
        attr.CenterPosition = new Vector2(0.4f, -2.6f);
        attr.StartFiringSpeed = 480;
        attr.StartScatteringRange = 30;
        attr.FinalScatteringRange = 90;
        attr.ScatteringRangeAddValue = 2f;
        attr.ScatteringRangeBackSpeed = 40;
        //连发
        attr.ContinuousShoot = true;
        //扳机检测间隔
        attr.TriggerInterval = 0f;
        //连发数量
        attr.MinContinuousCount = 3;
        attr.MaxContinuousCount = 3;
        //开火前延时
        attr.DelayedTime = 0f;
        //攻击距离
        attr.MinDistance = 500;
        attr.MaxDistance = 600;
        //发射子弹数量
        attr.MinFireBulletCount = 1;
        attr.MaxFireBulletCount = 1;
        //抬起角度
        attr.UpliftAngle = 10;
        //枪身长度
        attr.FirePosition = new Vector2(16, 1.5f);
        attr.Sprite = ResourceManager.Load<Texture>("res://resource/sprite/gun/gun4.png");
        attr.BulletPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/bullet/OrdinaryBullets.tscn");
        attr.ShellPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/shell/ShellCase.tscn");
        gun.Init(attr);
        return gun;
    }

    public static Gun GetGun2()
    {
        //加载枪的 prefab
        var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn");
        //设置基础属性
        var attr = new GunAttribute();
        attr.Id = "2";
        attr.Name = "Gun2";
        attr.Weight = 20;
        attr.CenterPosition = new Vector2(0.4f, -2.6f);
        attr.WeightType = GunWeightType.DeputyWeapon;
        attr.StartFiringSpeed = 600;
        attr.StartScatteringRange = 5;
        attr.FinalScatteringRange = 60;
        attr.ScatteringRangeAddValue = 8f;
        attr.ScatteringRangeBackSpeed = 40;
        //连发
        attr.ContinuousShoot = false;
        //扳机检测间隔
        attr.TriggerInterval = 0.4f;
        //连发数量
        attr.MinContinuousCount = 3;
        attr.MaxContinuousCount = 3;
        //开火前延时
        attr.DelayedTime = 0f;
        //攻击距离
        attr.MinDistance = 500;
        attr.MaxDistance = 600;
        //发射子弹数量
        attr.MinFireBulletCount = 1;
        attr.MaxFireBulletCount = 1;
        //抬起角度
        attr.UpliftAngle = 30;
        //枪身长度
        attr.FirePosition = new Vector2(10, 1.5f);
        attr.Sprite = ResourceManager.Load<Texture>("res://resource/sprite/gun/gun3.png");
        attr.BulletPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/bullet/HighSpeedBullet.tscn");
        attr.ShellPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/shell/ShellCase.tscn");
        gun.Init(attr);
        return gun;
    }

    public static Gun GetGun3()
    {
        //加载枪的 prefab
        var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn");
        //设置基础属性
        var attr = new GunAttribute();
        attr.Id = "3";
        attr.Name = "Gun3";
        attr.Weight = 30;
        attr.CenterPosition = new Vector2(0.4f, -2.6f);
        attr.StartFiringSpeed = 480;
        attr.StartScatteringRange = 30;
        attr.FinalScatteringRange = 90;
        attr.ScatteringRangeAddValue = 2f;
        attr.ScatteringRangeBackSpeed = 40;
        //连发
        attr.ContinuousShoot = false;
        //扳机检测间隔
        attr.TriggerInterval = 0f;
        //连发数量
        attr.MinContinuousCount = 3;
        attr.MaxContinuousCount = 3;
        //开火前延时
        attr.DelayedTime = 0f;
        //攻击距离
        attr.MinDistance = 500;
        attr.MaxDistance = 600;
        //发射子弹数量
        attr.MinFireBulletCount = 1;
        attr.MaxFireBulletCount = 1;
        //抬起角度
        attr.UpliftAngle = 10;
        //枪身长度
        attr.FirePosition = new Vector2(16, 1.5f);
        attr.Sprite = ResourceManager.Load<Texture>("res://resource/sprite/gun/gun2.png");
        attr.BulletPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/bullet/OrdinaryBullets.tscn");
        attr.ShellPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/shell/ShellCase.tscn");
        gun.Init(attr);
        return gun;
    }

    public static Gun GetGun4()
    {
        //加载枪的 prefab
        var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn");
        //设置基础属性
        var attr = new GunAttribute();
        attr.Id = "4";
        attr.Name = "Gun4";
        attr.Weight = 10;
        attr.CenterPosition = new Vector2(0.4f, -2.6f);
        attr.WeightType = GunWeightType.DeputyWeapon;
        attr.StartFiringSpeed = 600;
        attr.StartScatteringRange = 5;
        attr.FinalScatteringRange = 60;
        attr.ScatteringRangeAddValue = 8f;
        attr.ScatteringRangeBackSpeed = 40;
        //连发
        attr.ContinuousShoot = false;
        //扳机检测间隔
        attr.TriggerInterval = 0.4f;
        //连发数量
        attr.MinContinuousCount = 3;
        attr.MaxContinuousCount = 3;
        //开火前延时
        attr.DelayedTime = 0f;
        //攻击距离
        attr.MinDistance = 500;
        attr.MaxDistance = 600;
        //发射子弹数量
        attr.MinFireBulletCount = 1;
        attr.MaxFireBulletCount = 1;
        //抬起角度
        attr.UpliftAngle = 30;
        //枪身长度
        attr.FirePosition = new Vector2(10, 1.5f);
        attr.Sprite = ResourceManager.Load<Texture>("res://resource/sprite/gun/gun7.png");
        attr.BulletPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/bullet/HighSpeedBullet.tscn");
        attr.ShellPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/shell/ShellCase.tscn");
        gun.Init(attr);
        return gun;
    }

    public static Gun GetGun5()
    {
        //加载枪的 prefab
        var gun = ResourceManager.LoadGunAndInstance("res://prefab/weapon/Gun.tscn");
        //设置基础属性
        var attr = new GunAttribute();
        attr.Id = "5";
        attr.Name = "Gun5";
        attr.Weight = 10;
        attr.CenterPosition = new Vector2(0.4f, -2.6f);
        attr.WeightType = GunWeightType.DeputyWeapon;
        attr.StartFiringSpeed = 480;
        attr.StartScatteringRange = 5;
        attr.FinalScatteringRange = 30;
        attr.ScatteringRangeAddValue = 8f;
        attr.ScatteringRangeBackSpeed = 40;
        //连发
        attr.ContinuousShoot = true;
        //扳机检测间隔
        attr.TriggerInterval = 0.4f;
        //连发数量
        attr.MinContinuousCount = 1;
        attr.MaxContinuousCount = 1;
        //开火前延时
        attr.DelayedTime = 0f;
        //攻击距离
        attr.MinDistance = 500;
        attr.MaxDistance = 600;
        //发射子弹数量
        attr.MinFireBulletCount = 1;
        attr.MaxFireBulletCount = 1;
        //弹夹容量
        attr.AmmoCapacity = 120;
        attr.MaxAmmoCapacity = 360;
        //抬起角度
        attr.UpliftAngle = 30;
        //枪身长度
        attr.FirePosition = new Vector2(10, 1.5f);
        attr.Sprite = ResourceManager.Load<Texture>("res://resource/sprite/gun/gun5.png");
        attr.BulletPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/bullet/HighSpeedBullet.tscn");
        attr.ShellPack = ResourceManager.Load<PackedScene>("res://prefab/weapon/shell/ShellCase.tscn");
        gun.Init(attr);
        return gun;
    }
}