From: <ave...@us...> - 2007-03-13 20:18:07
|
Revision: 4558 http://gemrb.svn.sourceforge.net/gemrb/?rev=4558&view=rev Author: avenger_teambg Date: 2007-03-13 13:17:59 -0700 (Tue, 13 Mar 2007) Log Message: ----------- clarified PST color slot hack a bit Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp Modified: gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-03-13 19:41:06 UTC (rev 4557) +++ gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-03-13 20:17:59 UTC (rev 4558) @@ -238,9 +238,12 @@ } if (GetAnimType() >= IE_ANI_PST_ANIMATION_1) { - // TODO: handle equipment colours (How?) + // TODO: handle equipment colour glows - // Avatars in PS:T + //Colors[6] is the COLORCOUNT stat in PST + //it tells how many customisable color slots we have + //the color slots start from the end of the palette and go + //backwards There are 5 available slots with a size of 32 each int size = 32; int dest = 256-Colors[6]*size; if (Colors[6] == 0) { @@ -250,7 +253,7 @@ } for (unsigned int i = 0; i < Colors[6]; i++) { core->GetPalette( Colors[i]&255, size, - &palette[PAL_MAIN]->col[dest] ); + &palette[PAL_MAIN]->col[dest] ); //Color* NewPal = core->GetPalette( Colors[i]&255, size ); //memcpy( &palette->col[dest], NewPal, size*sizeof( Color ) ); dest +=size; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ave...@us...> - 2007-04-11 19:08:03
|
Revision: 4589 http://gemrb.svn.sourceforge.net/gemrb/?rev=4589&view=rev Author: avenger_teambg Date: 2007-04-11 12:08:02 -0700 (Wed, 11 Apr 2007) Log Message: ----------- rgb mods for pst and fixed palette (not clown colour) animations Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp Modified: gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-04-11 18:08:29 UTC (rev 4588) +++ gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-04-11 19:08:02 UTC (rev 4589) @@ -238,6 +238,9 @@ } if (GetAnimType() >= IE_ANI_PST_ANIMATION_1) { + if (type!=PAL_MAIN) { + return; + } // TODO: handle equipment colour glows //Colors[6] is the COLORCOUNT stat in PST @@ -246,36 +249,56 @@ //backwards There are 5 available slots with a size of 32 each int size = 32; int dest = 256-Colors[6]*size; - if (Colors[6] == 0) { + bool needmod = false; + if (GlobalColorMod.type != RGBModifier::NONE) { + needmod = true; + } + if ((Colors[6] == 0) && (needmod==false) ) { core->FreePalette(palette[PAL_MAIN], PaletteResRef); PaletteResRef[0]=0; return; } + for (unsigned int i = 0; i < Colors[6]; i++) { - core->GetPalette( Colors[i]&255, size, - &palette[PAL_MAIN]->col[dest] ); - //Color* NewPal = core->GetPalette( Colors[i]&255, size ); - //memcpy( &palette->col[dest], NewPal, size*sizeof( Color ) ); - dest +=size; - //free( NewPal ); + core->GetPalette( Colors[i]&255, size, + &palette[PAL_MAIN]->col[dest] ); + dest +=size; } + + if (GlobalColorMod.type != RGBModifier::NONE) { + if (!modifiedPalette[PAL_MAIN]) + modifiedPalette[PAL_MAIN] = new Palette(); + //pst needs all color slots changed, luckily i already made this function + modifiedPalette[PAL_MAIN]->SetupCompleteRGBModification(palette[PAL_MAIN], GlobalColorMod); + } return; } int PType = NoPalette(); - if ( PType && type == PAL_MAIN ) { - core->FreePalette(palette[PAL_MAIN], PaletteResRef); + if ( PType && (type == PAL_MAIN) ) { + bool needmod = false; + if (GlobalColorMod.type != RGBModifier::NONE) { + needmod = true; + } + if (!needmod && PaletteResRef[0]) { + core->FreePalette(palette[PAL_MAIN], PaletteResRef); + } PaletteResRef[0]=0; //handling special palettes like MBER_BL (black bear) - if (PType==1) { - return; + if (PType!=1) { + snprintf(PaletteResRef,8,"%.4s_%-.2s",ResRef, (char *) &PType); + strlwr(PaletteResRef); + Palette *tmppal = core->GetPalette(PaletteResRef); + if (tmppal) { + palette[PAL_MAIN] = tmppal; + } else { + PaletteResRef[0]=0; + } } - snprintf(PaletteResRef,8,"%.4s_%-.2s",ResRef, (char *) &PType); - strlwr(PaletteResRef); - palette[PAL_MAIN] = core->GetPalette(PaletteResRef); - //invalid palette, rolling back - if (!palette) { - PaletteResRef[0]=0; + if (needmod) { + if (!modifiedPalette[PAL_MAIN]) + modifiedPalette[PAL_MAIN] = new Palette(); + modifiedPalette[PAL_MAIN]->SetupCompleteRGBModification(palette[PAL_MAIN], GlobalColorMod); } return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ave...@us...> - 2007-04-28 13:22:29
|
Revision: 4614 http://gemrb.svn.sourceforge.net/gemrb/?rev=4614&view=rev Author: avenger_teambg Date: 2007-04-28 06:22:31 -0700 (Sat, 28 Apr 2007) Log Message: ----------- fixed global color pulse effect in iwd fixed cast/conjure stances in iwd Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp Modified: gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-04-28 13:20:57 UTC (rev 4613) +++ gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-04-28 13:22:31 UTC (rev 4614) @@ -423,7 +423,7 @@ } GlobalColorMod.type = RGBModifier::NONE; GlobalColorMod.speed = 0; - + GlobalColorMod.phase = 0; lastModUpdate = 0; @@ -652,7 +652,7 @@ break; case IE_ANI_WALK: case IE_ANI_RUN: - case IE_ANI_CAST: //IE_ANI_CONJURE is the ending casting anim + case IE_ANI_CAST: // looping case IE_ANI_READY: break; case IE_ANI_AWAKE: @@ -664,7 +664,7 @@ nextStanceID = IE_ANI_AWAKE; autoSwitchOnEnd = true; break; - case IE_ANI_CONJURE: + case IE_ANI_CONJURE: //ending case IE_ANI_SHOOT: case IE_ANI_ATTACK: case IE_ANI_ATTACK_JAB: @@ -820,6 +820,7 @@ case IE_ANI_DIE: case IE_ANI_PST_START: case IE_ANI_HEAD_TURN: + case IE_ANI_CONJURE: a->Flags |= A_ANI_PLAYONCE; break; case IE_ANI_EMERGE: @@ -1121,12 +1122,12 @@ Cycle+=45; break; - case IE_ANI_CAST: + case IE_ANI_CAST: //looping strcat( ResRef, "g25" ); Cycle+=45; break; - case IE_ANI_CONJURE: + case IE_ANI_CONJURE://ending strcat( ResRef, "g26" ); Cycle+=54; break; @@ -1292,15 +1293,15 @@ Cycle += 63; break; - case IE_ANI_CAST: + case IE_ANI_CAST: //looping strcat( ResRef, "ca" ); strcpy( EquipData->Suffix, "ca" ); - Cycle += 9; break; - case IE_ANI_CONJURE: + case IE_ANI_CONJURE: //ending strcat( ResRef, "ca" ); strcpy( EquipData->Suffix, "ca" ); + Cycle += 9; break; case IE_ANI_DAMAGE: @@ -1464,8 +1465,8 @@ switch (StanceID) { case IE_ANI_READY: - case IE_ANI_CAST: - case IE_ANI_CONJURE: + case IE_ANI_CAST: //looping + case IE_ANI_CONJURE://ending case IE_ANI_HIDE: case IE_ANI_WALK: case IE_ANI_AWAKE: @@ -1545,13 +1546,13 @@ } break; - case IE_ANI_CAST: + case IE_ANI_CAST://looping strcat( ResRef, "ca" ); strcpy( EquipData->Suffix, "ca" ); Cycle = 8 + Orient; break; - case IE_ANI_CONJURE: + case IE_ANI_CONJURE://ending strcat( ResRef, "ca" ); strcpy( EquipData->Suffix, "ca" ); Cycle = Orient; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ave...@us...> - 2007-04-30 16:05:52
|
Revision: 4623 http://gemrb.svn.sourceforge.net/gemrb/?rev=4623&view=rev Author: avenger_teambg Date: 2007-04-30 09:05:51 -0700 (Mon, 30 Apr 2007) Log Message: ----------- fixed lockpalette (used by sanctuary) Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp Modified: gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-04-29 23:27:18 UTC (rev 4622) +++ gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-04-30 16:05:51 UTC (rev 4623) @@ -233,10 +233,6 @@ return; } - if (lockPalette) { - return; - } - if (GetAnimType() >= IE_ANI_PST_ANIMATION_1) { // Only do main palette if (type != PAL_MAIN) { @@ -310,6 +306,9 @@ } pal->SetupPaperdollColours(Colors, (int)type); + if (!lockPalette) { + return; + } int i; bool needmod = false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ave...@us...> - 2007-05-06 06:45:34
|
Revision: 4640 http://gemrb.svn.sourceforge.net/gemrb/?rev=4640&view=rev Author: avenger_teambg Date: 2007-05-05 23:45:35 -0700 (Sat, 05 May 2007) Log Message: ----------- fixed a palette problem causing assert crash Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp Modified: gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-05-05 09:51:23 UTC (rev 4639) +++ gemrb/trunk/gemrb/plugins/Core/CharAnimations.cpp 2007-05-06 06:45:35 UTC (rev 4640) @@ -205,7 +205,7 @@ { OffhandRef[0] = ref[0]; OffhandRef[1] = ref[1]; - + // TODO: Only drop shield/offhand anims? DropAnims(); core->FreePalette(palette[PAL_OFFHAND], 0); @@ -778,7 +778,7 @@ } if (part < actorPartCount) { - if (!palette[PAL_MAIN] && (GlobalColorMod.type!=RGBModifier::NONE) || (NoPalette()!=1) ) { + if (!palette[PAL_MAIN] && ((GlobalColorMod.type!=RGBModifier::NONE) || (NoPalette()!=1)) ) { // This is the first time we're loading an Animation. // We copy the palette of its first frame into our own palette palette[PAL_MAIN] = @@ -806,7 +806,7 @@ SetupColors(PAL_HELMET); } } - + //animation is affected by game flags a->gameAnimation = true; a->SetPos( 0 ); @@ -864,7 +864,7 @@ case IE_ANI_CODE_MIRROR: Anims[StanceID][Orient] = anims; break; - + case IE_ANI_SIX_FILES: //16 anims some are stored elsewhere case IE_ANI_ONE_FILE: //16 orientations Anims[StanceID][Orient] = anims; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |