//数値の桁数を取得 int GRH_GET_KETA(int nInt){ string s=nInt.String(); return s.Length(); } //戦国ランス風の数字描画するクラス //ランダムを使用しています。 class HeisuuDamage{ const int CONST_MAX_KETA=5;//最大桁数 public: void Init(bool bRight); ~HeisuuDamage(); void Update(); void Damage(int nDamage); void SetHP(int nHP){NowHP=nHP;NowHPChange=true;} void SetShow(bool bshow){show=bshow;NowHPChange=true;} bool GetShow(){return show;} void SetPos(int nX,int nY){posX=nX;posY=nY;NowHPChange=true;} void SetZ(int nZ){posZ=nZ;NowHPChange=true;} void GetPos(ref int nX,ref int nY){nX=posX;nY=posY;} int GetZ(){return posZ;} private: void SuziMake(); void InitViewDownSprites(); void DrawArrayNumber(int number,ref array@int aSps,float rate); public: private: bool isRight; array@int aNumberSprites;//数字隠しスプライト array@int aViewSprites;//表示スプライト(格納は、0が1の位) array@int aDownSprites;//落下スプライト int posX,posY,posZ; bool show; int NowHP; bool NowHPChange; array@int HakkaHP;//HP変化 int DownHP; array@int DownToX; array@int DownToY; ss_timer_t m_timer; ss_timming m_timming; ss_timming m_downtimming; }; void HeisuuDamage::Init(bool bRight){ isRight=bRight; SuziMake(); InitViewDownSprites(); NowHPChange=false; m_timming.InitTimming(m_timer); m_timming.StartInterval(300); m_timming.Stop(); m_downtimming.InitTimming(m_timer); m_downtimming.StartInterval(300); m_downtimming.Stop(); } void HeisuuDamage::InitViewDownSprites(){ //表示用のスプライト設定 aViewSprites.Alloc(CONST_MAX_KETA); aDownSprites.Alloc(CONST_MAX_KETA); SP_GET_UNUSE_NUM_ARRAY(aViewSprites); SP_GET_UNUSE_NUM_ARRAY(aDownSprites); int i; for(i=0;iCONST_MAX_KETA){ //ケタを超えてれば、99999 number=Math.Pow(10,CONST_MAX_KETA+1) -1; keta=CONST_MAX_KETA; } int i; //一番下からとってくよ for(i=0;i=8) ima=7; CG_COPY(aSps[i],0,0, aNumberSprites[kai+ima*10],0,0, 50,50); CG_COPY_AMAP(aSps[i],0,0, aNumberSprites[kai+ima*10],0,0, 50,50); } for(i=keta;i