/// <summary> /// コンストラクタ /// </summary> /// <param name="wp">WP7</param> /// <param name="horseNum">馬番号</param> /// <param name="type">血統タイプ 父系or母系</param> public Pedigree( WP7 wp, UInt32 horseNum, 血統タイプ type ) { this.wp = wp; this.Type = type; this.HorseNum = horseNum; switch( type ) { case 血統タイプ.父系: var sire_data = new HSireData(); this.wp.HSireTable.GetData( this.HorseNum, ref sire_data ); this.BloodNum = sire_data.blood_num; break; case 血統タイプ.母系: var dam_data = new HDamData(); this.wp.HDamTable.GetData( this.HorseNum, ref dam_data ); this.BloodNum = dam_data.blood_num; break; } this.Tree = new Node( wp, type, 0, this.BloodNum, new 血統タイプ[]{ type } ); this.CreateTree( this.Tree ); var list = new List< NodeLevelPair >(); foreach( var node in this.NodeList() ) { list.Add( new NodeLevelPair( node.NodeLevel, node ) ); } this.NodeAndLevelList = list.ToArray(); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="wp">WP7</param> /// <param name="type">血統タイプ</param> /// <param name="nodeLevel">ノードレベル</param> /// <param name="bloodNum">血統番号</param> /// <param name="line">ノードの位置を示す血統タイプの配列</param> /// <param name="fatherNode">父馬のノード</param> /// <param name="motherNode">母馬のノード</param> public Node( WP7 wp, 血統タイプ type, UInt32 nodeLevel, UInt32 bloodNum, 血統タイプ[] line, Node fatherNode, Node motherNode ) { this.Type = type; this.NodeLevel = nodeLevel; this.BloodNum = bloodNum; this.Line = line; this.Father = fatherNode; this.Mother = motherNode; var blood_data = new HBloodData(); wp.HBloodTable.GetData( bloodNum, ref blood_data ); this.Data = blood_data; }
/// <summary> /// コンストラクタ /// </summary> /// <param name="wp">WP7</param> /// <param name="type">血統タイプ</param> /// <param name="nodeLevel">ノードレベル</param> /// <param name="bloodNum">血統番号</param> /// <param name="line">ノードの位置を示す血統タイプの配列</param> public Node( WP7 wp, 血統タイプ type, UInt32 nodeLevel, UInt32 bloodNum, 血統タイプ[] line ) : this(wp, type, nodeLevel, bloodNum, line, null, null) { }