• R/O
  • SSH
  • HTTPS

nlgp1: Commit


Commit MetaInfo

Revision837 (tree)
Zeit2011-03-02 07:47:17
Autorbiikame

Log Message

Nlgp1.Charactersを修正

Ändern Zusammenfassung

Diff

--- trunk/Nlgp1/Nlgp1/Characters/Character.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Characters/Character.cs (revision 837)
@@ -1,4 +1,5 @@
11 using System;
2+using System.Collections.Generic;
23 using Box2DX.Collision;
34 using Nlgp1.Attacks;
45 using Nlgp1.Attacks.Guns;
@@ -14,48 +15,53 @@
1415 /// </summary>
1516 public class Character : ISpriteOwner {
1617 public Character( int typeID , SpriteType spriteType , VectorI characterSize , Vector position ) {
18+ UpGravity = 0.75f;
19+ DownGravity = 2;
20+ JumpPower = 5;
21+ FlyGravity = 0.05f;
22+ HitPoint = 1;
23+ jumpBoost = 5;
1724 this.Sprite = new Sprite( LayerType.Character , typeID , spriteType , this , "CharacterImages" , characterSize , () => {
18- Sprite sprite = this.Sprite;
1925 MotionType result = MotionType.RestRight;
20- if( sprite.IsNowJumping == false &&
21- ( sprite.MovingDirections == Directions.Left || sprite.MovingDirections == Directions.Right ) && sprite.Body.Velocity != Vector.Zero ) {
26+ if( this.IsNowJumping == false &&
27+ ( this.MovingDirections == Directions.Left || this.MovingDirections == Directions.Right ) && this.Sprite.Body.Velocity != Vector.Zero ) {
2228 // 静止状態
23- if( sprite.Directions == ( sprite.Directions | Directions.Right ) )
29+ if( this.Directions == ( this.Directions | Directions.Right ) )
2430 result = MotionType.RestRight;
2531 else
2632 result = MotionType.RestLeft;
27- } else if( sprite.Directions == Directions.Right ) {
28- if( sprite.IsBoosting )
33+ } else if( this.Directions == Directions.Right ) {
34+ if( this.IsBoosting )
2935 result = MotionType.BoostRight;
3036 else
3137 result = MotionType.WalkRight;
32- } else if( sprite.Directions == Directions.Left ) {
33- if( sprite.IsBoosting )
38+ } else if( this.Directions == Directions.Left ) {
39+ if( this.IsBoosting )
3440 result = MotionType.BoostLeft;
3541 else
3642 result = MotionType.WalkLeft;
37- } else if( sprite.Directions == ( sprite.Directions | Directions.Right ) ) {
43+ } else if( this.Directions == ( this.Directions | Directions.Right ) ) {
3844 // 右方向
39- if( sprite.Directions == ( sprite.Directions | Directions.Top ) ) {
40- if( sprite.IsBoosting )
45+ if( this.Directions == ( this.Directions | Directions.Top ) ) {
46+ if( this.IsBoosting )
4147 result = MotionType.BoostUpRight;
4248 else
4349 result = MotionType.UpRight;
4450 } else {
45- if( sprite.IsBoosting )
51+ if( this.IsBoosting )
4652 result = MotionType.BoostDownRight;
4753 else
4854 result = MotionType.UpRight;
4955 }
50- } else if( sprite.Directions == ( sprite.Directions | Directions.Left ) ) {
56+ } else if( this.Directions == ( this.Directions | Directions.Left ) ) {
5157 // 左方向
52- if( sprite.Directions == ( sprite.Directions | Directions.Top ) ) {
53- if( sprite.IsBoosting )
58+ if( this.Directions == ( this.Directions | Directions.Top ) ) {
59+ if( this.IsBoosting )
5460 result = MotionType.BoostUpLeft;
5561 else
5662 result = MotionType.UpLeft;
5763 } else {
58- if( sprite.IsBoosting )
64+ if( this.IsBoosting )
5965 result = MotionType.BoostLeft;
6066 else
6167 result = MotionType.DownLeft;
@@ -94,5 +100,184 @@
94100 }
95101 }
96102 #endregion
103+
104+ /// <summary>
105+ /// 攻撃スロットに関連付けられているIAttackOwnerオブジェクトを取得します。
106+ /// </summary>
107+ /// <param name="attackType">攻撃方法</param>
108+ /// <returns>IAttackOwnerオブジェクト</returns>
109+ public IAttackOwner GetAttackOwner( AttackType attackType ) {
110+ return attackOwnerSlot[attackType];
111+ }
112+
113+ /// <summary>
114+ /// 攻撃のためのIAttackOwnerインスタンスを指定したスロットに登録する。
115+ /// </summary>
116+ /// <param name="attackType">攻撃方法</param>
117+ /// <param name="attackOwner">攻撃方法を実装したインスタンス</param>
118+ public void SetAttackOwner( AttackType attackType , IAttackOwner attackOwner ) {
119+ if( attackOwnerSlot.ContainsKey( attackType ) ) {
120+ if( attackOwnerSlot[attackType] != null )
121+ attackOwnerSlot[attackType].Unload();
122+ attackOwnerSlot.Remove( attackType );
123+ }
124+ attackOwnerSlot.Add( attackType , attackOwner );
125+ }
126+
127+ private Dictionary<AttackType,IAttackOwner> attackOwnerSlot = new Dictionary<AttackType , IAttackOwner>();
128+
129+ #region 方向
130+ /// <summary>
131+ /// スプライトの静止状態での向きを取得します。
132+ /// </summary>
133+ public Directions Directions {
134+ get;
135+ private set;
136+ }
137+ /// <summary>
138+ /// スプライトが移動している方向を取得します。
139+ /// </summary>
140+ public Directions MovingDirections {
141+ get;
142+ private set;
143+ }
144+ /// <summary>
145+ /// スプライトが衝突したBlock属性のセルの方向を取得します。
146+ /// </summary>
147+ public Directions HitBlockDirections {
148+ get;
149+ private set;
150+ }
151+ /// <summary>
152+ /// スプライトが上または、下方向に衝突したセル座標を取得します。
153+ /// </summary>
154+ public Vector VerticalPos {
155+ get;
156+ private set;
157+ }
158+ /// <summary>
159+ /// スプライトが左または、右方向に衝突したセル座標を取得します。
160+ /// </summary>
161+ public Vector HorizontalPos {
162+ get;
163+ private set;
164+ }
165+ #endregion
166+
167+ #region 動きを制御するパラメータ
168+ /// <summary>
169+ /// 上昇重力を設定または、取得します。
170+ /// </summary>
171+ public float UpGravity {
172+ get;
173+ set;
174+ }
175+ /// <summary>
176+ /// 降下重力を設定または、取得します。
177+ /// </summary>
178+ public float DownGravity {
179+ get;
180+ set;
181+ }
182+ /// <summary>
183+ /// 滞空時に掛かる重力を設定または、取得します。
184+ /// </summary>
185+ public float FlyGravity {
186+ get;
187+ set;
188+ }
189+ /// <summary>
190+ /// スプライトのジャンプ力を取得または、設定します。
191+ /// </summary>
192+ public float JumpPower {
193+ get;
194+ set;
195+ }
196+ /// <summary>
197+ /// 飛行中かどうか取得します。
198+ /// </summary>
199+ public bool IsFlying {
200+ get;
201+ private set;
202+ }
203+ /// <summary>
204+ /// スプライトを高速移動するかどうか設定または、取得します。
205+ /// </summary>
206+ public bool IsBoosting {
207+ get;
208+ set;
209+ }
210+ #endregion
211+
212+ #region 状態を管理するパラメータ
213+ /// <summary>
214+ /// スプライトが静止状態かどうか取得します。
215+ /// </summary>
216+ public bool IsRest {
217+ get {
218+ return IsNowJumping == false && Sprite.Body.Velocity != Vector.Zero;
219+ }
220+ }
221+ /// <summary>
222+ /// スプライトが飛行中かどうか取得します。
223+ /// </summary>
224+ public bool IsNowJumping {
225+ get;
226+ private set;
227+ }
228+ /// <summary>
229+ /// スプライトがダメージを受けないようにするかどうか設定または、取得します。
230+ /// </summary>
231+ public bool IsNotDamage {
232+ get;
233+ set;
234+ }
235+ /// <summary>
236+ /// 残りヒットポイント
237+ /// </summary>
238+ public int HitPoint {
239+ get;
240+ set;
241+ }
242+ #endregion
243+
244+ #region ロジック
245+ /// <summary>
246+ /// ジャンプを入力を開始します。
247+ /// </summary>
248+ public void StartJump() {
249+ if( IsNowJumping == false ) {
250+ Sprite.Body.ApplyForce( new Vector( 0 , -JumpPower ) );
251+ jumpBoost = JumpPower;
252+ }
253+ }
254+ /// <summary>
255+ /// 強制的にジャンプする
256+ /// </summary>
257+ public void StartConstraintJump() {
258+ Sprite.Body.ApplyForce( new Vector( 0 , -JumpPower ) );
259+ jumpBoost = JumpPower;
260+ }
261+ /// <summary>
262+ /// ジャンプ入力を停止します。
263+ /// </summary>
264+ public void StopJump() {
265+ Sprite.Body.ApplyForce( new Vector( 0 , 0 ) );
266+ }
267+ /// <summary>
268+ /// 飛行を開始します。
269+ /// </summary>
270+ public void StartFly() {
271+ if( IsBoosting && IsNowJumping && MovingDirections == ( MovingDirections | Directions.Bottom ) )
272+ IsFlying = true;
273+ }
274+ /// <summary>
275+ /// 飛行を停止します。
276+ /// </summary>
277+ public void StopFly() {
278+ IsFlying = false;
279+ }
280+ private float jumpBoost = 0;
281+ #endregion
97282 }
98283 }
--- trunk/Nlgp1/Nlgp1/Characters/SpriteFactory.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Characters/SpriteFactory.cs (revision 837)
@@ -11,9 +11,9 @@
1111
1212 namespace Nlgp1.Characters {
1313 public static class SpriteFactory {
14- private static Sprite create( int typeID , Vector position , VectorI characterSize ){
15- var sprite = new Character( typeID , SpriteType.Monster , characterSize , position ).Sprite;
16- return sprite;
14+ private static Character create( int typeID , Vector position , VectorI characterSize ){
15+ var character = new Character( typeID , SpriteType.Monster , characterSize , position );
16+ return character;
1717 }
1818 /// <summary>
1919 /// キャラクタを生成してマップ上に配置します。
@@ -23,13 +23,13 @@
2323 /// <param name="characterSize">スプライトのサイズ</param>
2424 /// <returns>生成されたキャラクタオブジェクト</returns>
2525 public static Sprite CreateSprite( int typeID , Vector position , VectorI characterSize ) {
26- var sprite = create( typeID , position , characterSize );
26+ var character = create( typeID , position , characterSize );
2727 switch( typeID ) {
2828 case 2:
2929 break;
3030 case 4:
3131 #region ゆっくりと左に歩いてくる
32- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
32+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
3333 e.SpriteOwner.Sprite.Body.ApplyForce( new Vector( -0.01f , 0 ) );
3434 } );
3535 #endregion
@@ -36,7 +36,7 @@
3636 break;
3737 case 5:
3838 #region ゆっくりと右に歩いてくる
39- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
39+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
4040 e.SpriteOwner.Sprite.Body.ApplyForce( new Vector( +0.01f , 0 ) );
4141 } );
4242 #endregion
@@ -44,20 +44,20 @@
4444 case 6:
4545 #region ジャンプしながら左に向かってくる
4646
47- sprite.JumpPower = 4;
48- sprite.UpGravity = 0.05f;
49- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
47+ character.JumpPower = 4;
48+ character.UpGravity = 0.05f;
49+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
5050 e.SpriteOwner.Sprite.Body.ApplyForce( new Vector( -0.01f , 0 ) );
51- e.SpriteOwner.Sprite.StartJump();
51+ ( ( Character )( e.SpriteOwner ) ).StartJump();
5252 } );
5353 #endregion
5454 break;
5555 case 7:
5656 #region ジャンプしながら右に向かってくる
57- sprite.JumpPower = 4;
58- sprite.UpGravity = 0.05f;
59- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
60- e.SpriteOwner.Sprite.StartJump();
57+ character.JumpPower = 4;
58+ character.UpGravity = 0.05f;
59+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
60+ ( ( Character)( e.SpriteOwner ) ).StartJump();
6161 } );
6262 #endregion
6363 break;
@@ -69,14 +69,14 @@
6969 // newSprite.GetRectangle.PrevReset();
7070 // newSprite.LogicParameter.InitX = cellX * MapData.CellSize;
7171 // newSprite.LogicParameter.InitY = cellY * MapData.CellSize;
72- sprite.Body.ApplyForce( new Vector( 1 , 0 ) );
73- sprite.Shape.Stepped += ( sender , e ) => {
72+ character.Sprite.Body.ApplyForce( new Vector( 1 , 0 ) );
73+ character.Sprite.Shape.Stepped += ( sender , e ) => {
7474 };
7575 #endregion
7676 break;
7777 case 9:
7878 #region 床から落下しないように左右に移動する。
79- sprite.Shape.Stepped += ( sender , e ) => {
79+ character.Sprite.Shape.Stepped += ( sender , e ) => {
8080 };
8181 #endregion
8282 break;
@@ -83,29 +83,29 @@
8383 case 10:
8484 #region 上下に浮遊する
8585 // newSprite.CanDefaultAction = false;
86- sprite.LogicParameter.Radius = 50;   // 半径
87- sprite.LogicParameter.Angle = 90; // 角度
88- sprite.LogicParameter.Speed = 1; // 速度
89- sprite.LogicParameter.LimitDistance = 100;// 移動距離
90- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
86+ character.Sprite.LogicParameter.Radius = 50;   // 半径
87+ character.Sprite.LogicParameter.Angle = 90; // 角度
88+ character.Sprite.LogicParameter.Speed = 1; // 速度
89+ character.Sprite.LogicParameter.LimitDistance = 100;// 移動距離
90+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
9191 } );
9292 #endregion
9393 break;
9494 case 11:
9595 #region 時計回り
96- sprite.CanActDefault = false; // 既定の重力計算などを無効にする。
97- sprite.LogicParameter.Radius = 100; // 半径
98- sprite.LogicParameter.Speed = 8; // 回転速度
99- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
96+ character.Sprite.CanActDefault = false; // 既定の重力計算などを無効にする。
97+ character.Sprite.LogicParameter.Radius = 100; // 半径
98+ character.Sprite.LogicParameter.Speed = 8; // 回転速度
99+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
100100 } );
101101 #endregion
102102 break;
103103 case 12:
104104 #region 反時計回り
105- sprite.IsBlock = false;
106- sprite.LogicParameter.Speed = 2;
107- sprite.LogicParameter.Radius = 100;
108- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
105+ character.Sprite.IsBlock = false;
106+ character.Sprite.LogicParameter.Speed = 2;
107+ character.Sprite.LogicParameter.Radius = 100;
108+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
109109 // Sprite.HitStop( PlayerStatus.Player , e.Target );
110110 } );
111111 #endregion
@@ -112,18 +112,18 @@
112112 break;
113113 case 13:
114114 #region 空中を回転しながら浮遊する
115- sprite.LogicParameter.LimitDistance = 150; // 移動距離
116- sprite.LogicParameter.Speed = 2; // 上下に移動するときの速度
117- sprite.LogicParameter.Angle = 90; // 移動する方向。90度 = 上下方向。45度 = 斜めなど。
118- sprite.CanActDefault = false;
119- sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
120- sprite.LogicParameter.Angle++;
115+ character.Sprite.LogicParameter.LimitDistance = 150; // 移動距離
116+ character.Sprite.LogicParameter.Speed = 2; // 上下に移動するときの速度
117+ character.Sprite.LogicParameter.Angle = 90; // 移動する方向。90度 = 上下方向。45度 = 斜めなど。
118+ character.Sprite.CanActDefault = false;
119+ character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
120+ character.Sprite.LogicParameter.Angle++;
121121 } );
122122 #endregion
123123 break;
124124 case 14:
125125 #region 10秒アイテム
126- sprite.Shape.Stepped += ( sender ,e ) => {
126+ character.Sprite.Shape.Stepped += ( sender ,e ) => {
127127 foreach( ISpriteContact contact in e.Shape.Contacts ) {
128128 if( contact.Target == PlayerStatus.Player.Sprite.Shape ) {
129129 PlayerStatus.TimerInitialize();
@@ -145,7 +145,7 @@
145145 default:
146146 break;
147147 }
148- return sprite;
148+ return character.Sprite;
149149 }
150150 }
151151 }
--- trunk/Nlgp1/Nlgp1/Players/PlayerController.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Players/PlayerController.cs (revision 837)
@@ -109,17 +109,17 @@
109109
110110
111111 if( PlayerController.Jump ) {
112- PlayerStatus.Player.Sprite.StartJump();
112+ PlayerStatus.Player.StartJump();
113113 } else if( PlayerController.Jumping == false ) {
114- PlayerStatus.Player.Sprite.StopJump();
114+ PlayerStatus.Player.StopJump();
115115 }
116116
117- PlayerStatus.Player.Sprite.IsBoosting = PlayerController.Boost;
117+ PlayerStatus.Player.IsBoosting = PlayerController.Boost;
118118
119119 if( PlayerController.Fly )
120- PlayerStatus.Player.Sprite.StartFly();
120+ PlayerStatus.Player.StartFly();
121121 else
122- PlayerStatus.Player.Sprite.StopFly();
122+ PlayerStatus.Player.StopFly();
123123
124124 PlayerStatus.Player.AttackType = PlayerController.Attack ? AttackType.DivineBuster : AttackType.None;
125125 #endregion
--- trunk/Nlgp1/Nlgp1/Players/PlayerStatus.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Players/PlayerStatus.cs (revision 837)
@@ -21,7 +21,7 @@
2121 private static int playerTimer = 0;
2222
2323 /// <summary>
24- /// 残り時間の最大値をミリ秒単位で取得します。
24+ /// 残り時間の最大値をフレーム単位で取得します。
2525 /// </summary>
2626 public static int LimitMax {
2727 get {
@@ -29,11 +29,11 @@
2929 }
3030 }
3131 /// <summary>
32- /// 残り時間(ミリ秒単位)で取得します。
32+ /// 残り時間(フレーム単位)で取得します。
3333 /// </summary>
3434 public static int TimeLimit {
3535 get {
36- return LimitMax - ( Environment.TickCount - playerTimer );
36+ return LimitMax - ( StageMap.TickCount - playerTimer );
3737 }
3838 }
3939 /// <summary>
@@ -40,7 +40,7 @@
4040 /// 残り時間を初期化します。
4141 /// </summary>
4242 public static void TimerInitialize() {
43- playerTimer = Environment.TickCount;
43+ playerTimer = StageMap.TickCount;
4444 }
4545
4646 /// <summary>
@@ -63,7 +63,7 @@
6363
6464 // 自分自身のパラメータは、ここで設定する
6565 Player = new Character( 1 , SpriteType.Player , MapData.DefaultChipSize , position );
66- Player.Sprite.HitPoint = 100;
66+ Player.HitPoint = 100;
6767 // Player.GetRectangle.BlankLeft = -2;
6868 // Player.GetRectangle.BlankRight = -2;
6969 // Player.GetRectangle.BlankBottom = 32;
--- trunk/Nlgp1/Nlgp1/Stages/StageMap.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Stages/StageMap.cs (revision 837)
@@ -112,14 +112,9 @@
112112 else {
113113 this.sprite = SpriteFactory.CreateSprite( this.Cell.TypeID , this.Position , MapData.DefaultChipSize ); // キャラクタ
114114 }
115- this.sprite.Stepped += ( sender , e ) => {
116- this.sprite.Body.ApplyForce( new Vector( 0 , this.sprite.DownGravity ) );
117- };
118115 }
119116 else {
120117 this.sprite = new Sprite( this.LayerType , this.Cell.TypeID , SpriteType.Monster , null , Path.Combine( @"Stages\Defines\Maps\Normal" , this.LayerType.ToString() ) , MapData.DefaultChipSize , null , null , this.Position );
121- this.sprite.UpGravity = 0;
122- this.sprite.DownGravity = 0;
123118 }
124119 this.sprite.IsBlock = ( this.Cell.Types & CellTypes.Wall ) != 0;
125120 this.sprite.IsDestroyable = ( this.Cell.Types & CellTypes.Destroy ) != 0;
--- trunk/Nlgp1/Nlgp1/Sprites/Types.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Sprites/Types.cs (revision 837)
@@ -26,7 +26,7 @@
2626 /// <summary>
2727 /// 上
2828 /// </summary>
29- Top = 3 ,
29+ Top = 4 ,
3030 /// <summary>
3131 /// 下
3232 /// </summary>
--- trunk/Nlgp1/Nlgp1/Sprites/Sprite.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Sprites/Sprite.cs (revision 837)
@@ -19,7 +19,6 @@
1919 /// <summary>
2020 /// 生存するスプライトをコレクションで取得します。
2121 /// </summary>
22- /// <returns></returns>
2322 public static IEnumerable<Sprite> GetCollection() {
2423 lock( objectList ) {
2524 int count = objectList.Count;
@@ -42,10 +41,6 @@
4241 }
4342
4443 private int startTick = 0;
45- private float jumpBoost = 0;
46- private Vector verticalPos = new Vector();
47- private Vector horizontalPos = new Vector();
48- private Dictionary<AttackType,IAttackOwner> attackOwnerSlot = new Dictionary<AttackType , IAttackOwner>();
4944
5045 /// <summary>
5146 /// Spriteのコンストラクタ
@@ -74,12 +69,6 @@
7469 this.TypeID = typeID;
7570 this.DebugID = debugID;
7671 if( layerType != LayerType.Back ) {
77- this.HitPoint = 1;
78- jumpBoost = 5;
79- UpGravity = 0.75f;
80- DownGravity = 2;
81- JumpPower = 5;
82- FlyGravity = 0.05f;
8372 IsBlock = true;
8473 ActiveCellCount = 2;
8574 CanActDefault = true;
@@ -115,29 +104,6 @@
115104 }
116105
117106 /// <summary>
118- /// 攻撃スロットに関連付けられているIAttackOwnerオブジェクトを取得します。
119- /// </summary>
120- /// <param name="attackType">攻撃方法</param>
121- /// <returns>IAttackOwnerオブジェクト</returns>
122- public IAttackOwner GetAttackOwner( AttackType attackType ) {
123- return attackOwnerSlot[attackType];
124- }
125-
126- /// <summary>
127- /// 攻撃のためのIAttackOwnerインスタンスを指定したスロットに登録する。
128- /// </summary>
129- /// <param name="attackType">攻撃方法</param>
130- /// <param name="attackOwner">攻撃方法を実装したインスタンス</param>
131- public void SetAttackOwner( AttackType attackType , IAttackOwner attackOwner ) {
132- if( attackOwnerSlot.ContainsKey( attackType ) ) {
133- if( attackOwnerSlot[attackType] != null )
134- attackOwnerSlot[attackType].Unload();
135- attackOwnerSlot.Remove( attackType );
136- }
137- attackOwnerSlot.Add( attackType , attackOwner );
138- }
139-
140- /// <summary>
141107 /// レイヤーの種類を取得します。
142108 /// </summary>
143109 public LayerType LayerType {
@@ -177,90 +143,8 @@
177143 private set;
178144 }
179145
180- #region 方向
181- /// <summary>
182- /// スプライトの静止状態での向きを取得します。
183- /// </summary>
184- public Directions Directions {
185- get;
186- private set;
187- }
188- /// <summary>
189- /// スプライトが移動している方向を取得します。
190- /// </summary>
191- public Directions MovingDirections {
192- get;
193- private set;
194- }
195- /// <summary>
196- /// スプライトが衝突したBlock属性のセルの方向を取得します。
197- /// </summary>
198- public Directions HitBlockDirections {
199- get;
200- private set;
201- }
202- /// <summary>
203- /// スプライトが上または、下方向に衝突したセル座標を取得します。
204- /// </summary>
205- public Vector VerticalPos {
206- get {
207- return verticalPos;
208- }
209- }
210- /// <summary>
211- /// スプライトが左または、右方向に衝突したセル座標を取得します。
212- /// </summary>
213- public Vector HorizontalPos {
214- get {
215- return horizontalPos;
216- }
217- }
218- #endregion
219-
220146 #region 動きを制御するパラメータ
221147 /// <summary>
222- /// 上昇重力を設定または、取得します。
223- /// </summary>
224- public float UpGravity {
225- get;
226- set;
227- }
228- /// <summary>
229- /// 降下重力を設定または、取得します。
230- /// </summary>
231- public float DownGravity {
232- get;
233- set;
234- }
235- /// <summary>
236- /// 滞空時に掛かる重力を設定または、取得します。
237- /// </summary>
238- public float FlyGravity {
239- get;
240- set;
241- }
242- /// <summary>
243- /// スプライトのジャンプ力を取得または、設定します。
244- /// </summary>
245- public float JumpPower {
246- get;
247- set;
248- }
249- /// <summary>
250- /// 飛行中かどうか取得します。
251- /// </summary>
252- public bool IsFlying {
253- get;
254- private set;
255- }
256- /// <summary>
257- /// スプライトを高速移動するかどうか設定または、取得します。
258- /// </summary>
259- public bool IsBoosting {
260- get;
261- set;
262- }
263- /// <summary>
264148 /// スプライトの既定のアクションを実行してスプライトを適切に移動します。
265149 /// 規定値は、trueです。falseの場合も衝突判定を行いますがスプライトの移動は、行いません。
266150 /// </summary>
@@ -295,14 +179,6 @@
295179 set;
296180 }
297181 /// <summary>
298- /// スプライトが静止状態かどうか取得します。
299- /// </summary>
300- public bool IsRest {
301- get {
302- return IsNowJumping == false && Body.Velocity != Vector.Zero;
303- }
304- }
305- /// <summary>
306182 /// スプライトを通過可能かどうか設定または、取得します。
307183 /// </summary>
308184 public bool IsBlock {
@@ -310,27 +186,6 @@
310186 set;
311187 }
312188 /// <summary>
313- /// スプライトが飛行中かどうか取得します。
314- /// </summary>
315- public bool IsNowJumping {
316- get;
317- private set;
318- }
319- /// <summary>
320- /// スプライトがダメージを受けないようにするかどうか設定または、取得します。
321- /// </summary>
322- public bool IsNotDamage {
323- get;
324- set;
325- }
326- /// <summary>
327- /// 残りヒットポイント
328- /// </summary>
329- public int HitPoint {
330- get;
331- set;
332- }
333- /// <summary>
334189 /// 破壊可能か
335190 /// </summary>
336191 public bool IsDestroyable {
@@ -367,41 +222,6 @@
367222
368223 this.OnStepped( this , this.steppedEventParameter );
369224 }
370- /// <summary>
371- /// ジャンプを入力を開始します。
372- /// </summary>
373- public void StartJump() {
374- if( IsNowJumping == false ) {
375- Body.ApplyForce( new Vector( 0 , -JumpPower ) );
376- jumpBoost = JumpPower;
377- }
378- }
379- /// <summary>
380- /// 強制的にジャンプする
381- /// </summary>
382- public void StartConstraintJump() {
383- Body.ApplyForce( new Vector( 0 , -JumpPower ) );
384- jumpBoost = JumpPower;
385- }
386- /// <summary>
387- /// ジャンプ入力を停止します。
388- /// </summary>
389- public void StopJump() {
390- Body.ApplyForce( new Vector( 0 , 0 ) );
391- }
392- /// <summary>
393- /// 飛行を開始します。
394- /// </summary>
395- public void StartFly() {
396- if( IsBoosting && IsNowJumping && MovingDirections == ( MovingDirections | Directions.Bottom ) )
397- IsFlying = true;
398- }
399- /// <summary>
400- /// 飛行を停止します。
401- /// </summary>
402- public void StopFly() {
403- IsFlying = false;
404- }
405225 #endregion
406226
407227 #region ロジック拡張
--- trunk/Nlgp1/Nlgp1/Attacks/IAttackOwner.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Attacks/IAttackOwner.cs (revision 837)
@@ -1,4 +1,5 @@
11 using System;
2+using Nlgp1.Characters;
23 using Nlgp1.Sprites;
34
45 namespace Nlgp1.Attacks {
@@ -14,7 +15,7 @@
1415 /// <summary>
1516 /// オブジェクトを所有するスプライトを取得します。
1617 /// </summary>
17- ISpriteOwner SpriteOwner {
18+ Character Character {
1819 get;
1920 }
2021
--- trunk/Nlgp1/Nlgp1/Attacks/Shot.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Attacks/Shot.cs (revision 837)
@@ -1,6 +1,7 @@
11 using System;
22 using System.Collections.Generic;
33 using Nlgp1.Attacks.Guns;
4+using Nlgp1.Characters;
45 using Nlgp1.Common;
56 using Nlgp1.Common.Parameters;
67 using Nlgp1.Sprites;
@@ -13,7 +14,7 @@
1314 /// <typeparam name="T">弾丸クラスの型</typeparam>
1415 public class Shot<T> : IAttackOwner where T : IGun , new() {
1516 private List<T> gunList = new List<T>();
16- private ISpriteOwner ownerObject;
17+ private Character character;
1718
1819 /// <summary>
1920 /// Shotクラスのコンストラクタ
@@ -21,9 +22,9 @@
2122 /// <param name="typeID">Shotクラスのオブジェクトに適応するイメージID</param>
2223 /// <param name="gunTypeID">弾丸(IGun)に適応するイメージID</param>
2324 /// <param name="gunSize">生成する弾のサイズ</param>
24- public Shot( int typeID , int gunTypeID , ISpriteOwner spriteOwner , VectorI gunSize ) {
25- this.Attack = new Attack( spriteOwner , typeID , spriteOwner.Sprite.SpriteType , gunSize );
26- this.ownerObject = spriteOwner;
25+ public Shot( int typeID , int gunTypeID , Character character , VectorI gunSize ) {
26+ this.Attack = new Attack( character , typeID , character.Sprite.SpriteType , gunSize );
27+ this.character = character;
2728 this.GunTypeID = gunTypeID;
2829 this.GunSize = gunSize;
2930 this.Attack.CanMovingAttack = false;
@@ -81,9 +82,9 @@
8182 void IAttackOwner.Start() {
8283 this.Attack.Start();
8384 }
84- ISpriteOwner IAttackOwner.SpriteOwner {
85+ Character IAttackOwner.Character {
8586 get {
86- return ownerObject;
87+ return character;
8788 }
8889 }
8990 #endregion
--- trunk/Nlgp1/Nlgp1/Attacks/Attack.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Attacks/Attack.cs (revision 837)
@@ -1,4 +1,5 @@
11 using System;
2+using Nlgp1.Characters;
23 using Nlgp1.Common;
34 using Nlgp1.Common.Parameters;
45 using Nlgp1.Parameters;
@@ -17,14 +18,14 @@
1718 /// Attackクラスのインスタンスを作成します。
1819 /// </summary>
1920 /// <param name="sprite">攻撃アクションを実行するスプライト(キャラクタなど)</param>
20- public Attack( ISpriteOwner spriteOwner , int typeID , SpriteType spriteType , VectorI attackSize ) {
21+ public Attack( Character character , int typeID , SpriteType spriteType , VectorI attackSize ) {
2122 CanMovingAttack = true;
22- this.SpriteOwner = spriteOwner;
23+ this.Character = character;
2324 // キャラクタスプライトが破棄されたとき、自分も破棄する。
24- this.SpriteOwner.Sprite.Unloaded += new EventHandler( ( sender , e ) => Unload() );
25+ this.Character.Sprite.Unloaded += new EventHandler( ( sender , e ) => Unload() );
2526
2627 #region 攻撃状態の変化
27- this.SpriteOwner.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
28+ this.Character.Sprite.Stepped += new EventHandler<SpriteSteppedEventArgs>( ( sender , e ) => {
2829 if( ActionType == ActionType.None )
2930 return;
3031 else if( ActionType == ActionType.Starting && StageMap.TickCount - attackTick >= StartingWait && canAttack ) {
@@ -51,7 +52,7 @@
5152 /// <summary>
5253 /// Attackオブジェクトを所有するスプライトを取得します。
5354 /// </summary>
54- public ISpriteOwner SpriteOwner {
55+ public Character Character {
5556 get;
5657 private set;
5758 }
@@ -115,7 +116,7 @@
115116
116117 private bool canAttack {
117118 get {
118- return CanMovingAttack || SpriteOwner.Sprite.IsRest;
119+ return CanMovingAttack || Character.IsRest;
119120 }
120121 }
121122
--- trunk/Nlgp1/Nlgp1/Attacks/Guns/Gun.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Attacks/Guns/Gun.cs (revision 837)
@@ -22,7 +22,7 @@
2222 }
2323
2424 /// <summary>
25- /// 弾を生成したIShotオブジェクトを取得します。
25+ /// 弾を生成したIAttackOwnerオブジェクトを取得します。
2626 /// </summary>
2727 public IAttackOwner Owner {
2828 get;
@@ -32,7 +32,7 @@
3232 #region IGun メンバー
3333 void IGun.Initialize( int typeID , IAttackOwner source , VectorI gunSize ) {
3434 this.Owner = source;
35- this.Sprite = new Sprite( LayerType.Character , typeID , source.SpriteOwner.Sprite.SpriteType , this , "GunImages" , gunSize , null , null , new Vector() );
35+ this.Sprite = new Sprite( LayerType.Character , typeID , source.Character.Sprite.SpriteType , this , "GunImages" , gunSize , null , null , new Vector() );
3636
3737
3838 }
--- trunk/Nlgp1/Nlgp1/Program.cs (revision 836)
+++ trunk/Nlgp1/Nlgp1/Program.cs (revision 837)
@@ -62,7 +62,7 @@
6262 meiryoFont , new Common.Parameters.ColorI( 0x00 , 0xFF , 0xFF ) );
6363
6464 // if( message == null )
65- DebugSprite( PlayerStatus.Player.Sprite );
65+ DebugCharacter( PlayerStatus.Player );
6666
6767 Form.DrawString( new VectorI( 5 , 32 ), message , meiryoFont , new Common.Parameters.ColorI( 0x00 , 0xFF , 0x00 ) );
6868
@@ -83,7 +83,7 @@
8383
8484 private static string message = null;
8585
86- public static void DebugSprite( Sprite s ) {
86+ public static void DebugCharacter( Character c ) {
8787 message = string.Format(
8888 @"Pos > X ={0} Y ={1}
8989 Speed > X ={2} Y ={3}
@@ -91,14 +91,14 @@
9191 MovingDir = {5}
9292 Jump={6} Hit={7} FPS = {8}
9393 " ,
94- s.Body.Position.X ,
95- s.Body.Position.Y ,
96- s.Body.Velocity.X ,
97- s.Body.Velocity.Y ,
98- s.Directions ,
99- s.MovingDirections ,
100- s.IsNowJumping ,
101- s.HitPoint ,
94+ c.Sprite.Body.Position.X ,
95+ c.Sprite.Body.Position.Y ,
96+ c.Sprite.Body.Velocity.X ,
97+ c.Sprite.Body.Velocity.Y ,
98+ c.Directions ,
99+ c.MovingDirections ,
100+ c.IsNowJumping ,
101+ c.HitPoint ,
102102 rate.FlameRate
103103 );
104104 }
Show on old repository browser