using FrameWorkDesign; using System.Collections.Generic; using System.Linq;
namespaceShootingEditor2D { interfaceIGunSystem : ISystem { GunInfo CurrentGun { get; } voidPickGun(string name, int ammoNumInGun, int bulletCountOutGun); voidShiftGun();// }
publicclassOnCurrrentGunChanged { publicstring Name { get; set; } }
publicclassGunSystem : AbstractSystem, IGunSystem { public GunInfo CurrentGun { get; } = new GunInfo() { AmmoNumInGun = new BindableProperty<int>() { Value = 3 }, BulletCountOutGun = new BindableProperty<int>() { Value = 1 }, Name = new BindableProperty<string>() { Value = "手枪" }, State = new BindableProperty<GunState>() { Value = GunState.Idle } };
private Queue<GunInfo> mGunInfos = new Queue<GunInfo>(); //...
publicvoidShiftGun()// { if(mGunInfos.Count > 0) { var previousGunInfo = mGunInfos.Dequeue();
var currentGunInfo = new GunInfo() { AmmoNumInGun = new BindableProperty<int>() { Value = CurrentGun.AmmoNumInGun.Value }, BulletCountOutGun = new BindableProperty<int>() { Value = CurrentGun.BulletCountOutGun.Value }, Name = new BindableProperty<string>() { Value = CurrentGun.Name.Value }, State = new BindableProperty<GunState>() { Value = GunState.Idle } };
voidEnqueueCurrentGun(string nextGunName, int nextAmmoNumInGun, int nextBulletCountOutGun)// { var currentGunInfo = new GunInfo() { AmmoNumInGun = new BindableProperty<int>() { Value = CurrentGun.AmmoNumInGun.Value }, BulletCountOutGun = new BindableProperty<int>() { Value = CurrentGun.BulletCountOutGun.Value }, Name = new BindableProperty<string>() { Value = CurrentGun.Name.Value }, State = new BindableProperty<GunState>() { Value = GunState.Idle } };