From: <ze...@us...> - 2009-03-08 22:56:50
|
Revision: 5780 http://gemrb.svn.sourceforge.net/gemrb/?rev=5780&view=rev Author: zefklop Date: 2009-03-08 22:56:48 +0000 (Sun, 08 Mar 2009) Log Message: ----------- Better handle failure when creating creature animations. Modified Paths: -------------- gemrb/trunk/gemrb/plugins/CREImporter/CREImp.cpp gemrb/trunk/gemrb/plugins/Core/Actor.cpp Modified: gemrb/trunk/gemrb/plugins/CREImporter/CREImp.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/CREImporter/CREImp.cpp 2009-03-08 21:45:11 UTC (rev 5779) +++ gemrb/trunk/gemrb/plugins/CREImporter/CREImp.cpp 2009-03-08 22:56:48 UTC (rev 5780) @@ -509,7 +509,9 @@ //this is required so the actor has animation already act->SetAnimationID( ( ieWord ) act->BaseStats[IE_ANIMATION_ID] ); //Speed is determined by the number of frames in each cycle of its animation - Animation* anim = act->GetAnims()->GetAnimation(IE_ANI_WALK, 0)[0]; + CharAnimations* anims = act->GetAnims(); + assert(anims) ; + Animation* anim = anims->GetAnimation(IE_ANI_WALK, 0)[0]; assert(anim) ; act->SetBase(IE_MOVEMENTRATE, anim->GetFrameCount()) ; // Setting up derived stats Modified: gemrb/trunk/gemrb/plugins/Core/Actor.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Actor.cpp 2009-03-08 21:45:11 UTC (rev 5779) +++ gemrb/trunk/gemrb/plugins/Core/Actor.cpp 2009-03-08 22:56:48 UTC (rev 5780) @@ -394,31 +394,33 @@ } } anims = new CharAnimations( AnimID&0xffff, BaseStats[IE_ARMOR_TYPE]); - if (anims) { - anims->SetOffhandRef(ShieldRef); - anims->SetHelmetRef(HelmetRef); - anims->SetWeaponRef(WeaponRef); + if(anims->ResRef[0] == 0) { + delete anims ; + anims = NULL ; + printMessage("Actor", " ",LIGHT_RED); + printf("Missing animation for %s\n",LongName); + return ; + } + anims->SetOffhandRef(ShieldRef); + anims->SetHelmetRef(HelmetRef); + anims->SetWeaponRef(WeaponRef); - //if we have a recovery palette, then set it back - assert(anims->palette[PAL_MAIN] == 0); - anims->palette[PAL_MAIN] = recover; - if (recover) { - anims->lockPalette = true; - } - //bird animations are not hindered by searchmap - //only animtype==7 (bird) uses this feature - //this is a hardcoded hack, but works for all engine type - if (anims->GetAnimType()!=IE_ANI_BIRD) { - BaseStats[IE_DONOTJUMP]=0; - } else { - BaseStats[IE_DONOTJUMP]=DNJ_BIRD; - } - SetCircleSize(); - anims->SetColors(BaseStats+IE_COLORS); - } else { - printMessage("Actor", " ",LIGHT_RED); - printf("Missing animation for %s\n",LongName); - } + //if we have a recovery palette, then set it back + assert(anims->palette[PAL_MAIN] == 0); + anims->palette[PAL_MAIN] = recover; + if (recover) { + anims->lockPalette = true; + } + //bird animations are not hindered by searchmap + //only animtype==7 (bird) uses this feature + //this is a hardcoded hack, but works for all engine type + if (anims->GetAnimType()!=IE_ANI_BIRD) { + BaseStats[IE_DONOTJUMP]=0; + } else { + BaseStats[IE_DONOTJUMP]=DNJ_BIRD; + } + SetCircleSize(); + anims->SetColors(BaseStats+IE_COLORS); } CharAnimations* Actor::GetAnims() @@ -3233,7 +3235,7 @@ // currently we don't have a real direction, but the orientation field // could be used with higher granularity. When we need the face value // it could be divided so it will become a 0-15 number. - // + // SpriteCover *sc = 0, *newsc = 0; int blurx = cx; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |