dougmencken / HeadOverHeels

The free and open source remake of the game “Head over Heels”

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Final scene

dougmencken opened this issue · comments

Need some nice music for final scene. Maybe some looooong ‘n’ jazzy mix of various room entry tunes?

And yep, final room freezes after some time

Here’s game saved just before final scene

save7.xml.zip

On final scene, there’re tints from “ static-head ” on “ static-heels ”

finalroom

Maybe just use “ plain ” head, heels, and headoverheels there ? And remove these

  <!-- Static Head -->
  <item label="static-head">
    <widthX>12</widthX>
    <widthY>12</widthY>
    <height>24</height>
    <directionFrames>2</directionFrames>
    <mortal>false</mortal>
    <weight>0</weight>
    <framesDelay>0</framesDelay>
    <speed>0</speed>
    <picture file="freedonian-head.png">
      <frameWidth>48</frameWidth>
      <frameHeight>48</frameHeight>
    </picture>
    <shadow file="freedonian-head-shadows.png">
      <shadowWidth>48</shadowWidth>
      <shadowHeight>25</shadowHeight>
    </shadow>
    <frame>0</frame>
  </item>

  <!-- Static Heels -->
  <item label="static-heels">
    <widthX>12</widthX>
    <widthY>12</widthY>
    <height>24</height>
    <directionFrames>2</directionFrames>
    <mortal>false</mortal>
    <weight>0</weight>
    <framesDelay>0</framesDelay>
    <speed>0</speed>
    <picture file="freedonian-heels.png">
      <frameWidth>48</frameWidth>
      <frameHeight>48</frameHeight>
    </picture>
    <shadow file="freedonian-heels-shadows.png">
      <shadowWidth>48</shadowWidth>
      <shadowHeight>25</shadowHeight>
    </shadow>
    <frame>0</frame>
  </item>

And the effect of cycling colors of FREEDOM in the original game is soooo nice 😌

finalroom-speccy

Yep, with 85a6cce it looks prettier

finalroom new

...besides the absence of arrived character
oops, can’t add the second character "headoverheels" to this room

But I have this patch to fix it

--- a/src/Room.cpp
+++ b/src/Room.cpp
@@ -478,7 +478,7 @@ bool Room::addPlayerToRoom( PlayerItem* playerItem, bool playerEntersRoom )

         mediator->clearStackOfCollisions ();

-        std::string labelOfItem = playerItem->getLabel() ;
+        std::string labelOfItem = "character " + playerItem->getOriginalLabel() ;
         unsigned int uniqueNumberOfItem = nextNumbers[ labelOfItem ] ;
         if ( uniqueNumberOfItem > 0 ) // is there some player with the same label
         {
@@ -650,7 +650,7 @@ bool Room::removePlayerFromRoom( PlayerItem* playerItem, bool playerExitsRoom )
                                         "\" from room \"" << getNameOfFileWithDataAboutRoom() << "\"" << std::endl ;

                         mediator->removeFreeItemFromList( playerItem );
-                        nextNumbers[ playerItem->getLabel() ] -- ;
+                        nextNumbers[ "character " + playerItem->getOriginalLabel() ] -- ;

                         if ( this->shadingScale < 256 && playerItem->getImageOfShadow() != nilPointer )
                         {

yeah, too nice to be truth (;

final scene animated freedom

There’s need for walls of living trees, not dead fences

much prettier yet

new floor for freedom

new floor or freedom monochrome

plant trees not fences

final room gfx

three different flower tiles

post picturum~ yeah, I added filling of transparent pixels with pattern of checkerboard

void Picture::fillWithTransparencyChequerboard( const unsigned int sizeOfSquare )
{
        const unsigned int sizeOfSquareDoubled = sizeOfSquare << 1 ;

        unsigned int width = getWidth ();
        unsigned int height = getHeight ();

        for ( unsigned int y = 0 ; y < height ; y ++ )
        {
                for ( unsigned int x = 0 ; x < width ; x ++ )
                {
                        if ( getPixelAt( x, y ).isKeyColor() )
                        {
                                Color whichColor = Color::whiteColor() ;
                                if ( ( ( y % sizeOfSquare ) == ( y % sizeOfSquareDoubled ) && ( x % sizeOfSquare ) != ( x % sizeOfSquareDoubled ) ) ||
                                        ( ( y % sizeOfSquare ) != ( y % sizeOfSquareDoubled ) && ( x % sizeOfSquare ) == ( x % sizeOfSquareDoubled ) ) )
                                {
                                        whichColor = Color::gray75Color() ;
                                }

                                putPixelAt( x, y, whichColor );
                        }
                }
        }
}

closing this now