From 0fecc52396cc78feb62ebbec95120c1683dbafed Mon Sep 17 00:00:00 2001 From: Joseph Hewitt Date: Fri, 19 Jan 2018 17:55:06 -0800 Subject: [PATCH] Added Claymore image --- Design/Claymore.txt | 1 + GameData/messages.txt | 10 ++++-- Image/aaGradientTest.png | Bin 0 -> 13958 bytes Image/mecha_claymore.png | Bin 0 -> 15051 bytes Series/TS_GSP_Hermit_STORY.txt | 3 +- Series/TS_MIL_Default_PLOT_Default.txt | 2 +- colormenu.pp | 45 +++++++++++++------------ gharena.pas | 17 +++++++++- history.txt | 5 +++ pcaction.pp | 4 ++- randchar.pp | 6 +++- sdlgfx.pp | 17 ++++++++-- sdlinfo.pp | 1 - texutil.pp | 17 ++++++++++ 14 files changed, 96 insertions(+), 32 deletions(-) create mode 100644 Image/aaGradientTest.png create mode 100644 Image/mecha_claymore.png diff --git a/Design/Claymore.txt b/Design/Claymore.txt index 9ef664e..eca0eea 100644 --- a/Design/Claymore.txt +++ b/Design/Claymore.txt @@ -2,6 +2,7 @@ Battroid 6 Name Desig SDL_Sprite +SDL_Portrait Desc Mod Body diff --git a/GameData/messages.txt b/GameData/messages.txt index 77a50b6..003d583 100644 --- a/GameData/messages.txt +++ b/GameData/messages.txt @@ -642,7 +642,11 @@ GENDER_3 MAX_SPEED PHONE_INSTRUCTIONS SELECTGENDER_NONBINARY - - - +ColorSet_0 +ColorSet_1 +ColorSet_2 +ColorSet_3 +ColorSet_4 +ColorSet_5 +ColorSet_6
diff --git a/Image/aaGradientTest.png b/Image/aaGradientTest.png new file mode 100644 index 0000000000000000000000000000000000000000..a3385ecf858d3650e97123b2299a6ad2178545d8 GIT binary patch literal 13958 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 literal 0 HcmV?d00001 diff --git a/Series/TS_GSP_Hermit_STORY.txt b/Series/TS_GSP_Hermit_STORY.txt index 5914d4f..861187e 100644 --- a/Series/TS_GSP_Hermit_STORY.txt +++ b/Series/TS_GSP_Hermit_STORY.txt @@ -15,7 +15,8 @@ Story GoDelete sub Persona 3 - greeting + % V99 = History counter + greeting GoNoMaster result1 diff --git a/Series/TS_MIL_Default_PLOT_Default.txt b/Series/TS_MIL_Default_PLOT_Default.txt index d4c6b73..9a32dfc 100644 --- a/Series/TS_MIL_Default_PLOT_Default.txt +++ b/Series/TS_MIL_Default_PLOT_Default.txt @@ -225,7 +225,7 @@ sub Msg16_3 Msg16_4 Msg16_5 - Msg16_6 + Msg16_6 CMsg16_6 Msg16_7 CMsg16_7 diff --git a/colormenu.pp b/colormenu.pp index da2fe90..c9c876a 100644 --- a/colormenu.pp +++ b/colormenu.pp @@ -66,8 +66,8 @@ implementation cm_panel_width = 600; cm_panel_height = 456; - cm_window_x = 100; - cm_window_y = 65; + cm_window_dx = -cm_panel_width div 2; + cm_window_dy = -230; cm_image_x_offset = 20; cm_image_y_offset = 20; @@ -82,19 +82,19 @@ implementation off_swatches_x = 3; off_swatches_y = 19; - ZONE_colormenu_base: TSDL_Rect = ( x: cm_window_x; y: cm_window_y; w: cm_panel_width; h: cm_panel_height ); - ZONE_colormenu_sprite: TSDL_Rect = ( x: cm_window_x + cm_image_x_offset; y: cm_window_y + cm_image_y_offset; w: 211; h: 308 ); + ZONE_colormenu_base: DynamicRect = ( dx: cm_window_dx; dy: cm_window_dy; w: cm_panel_width; h: cm_panel_height; anchor: ANC_MIDDLE ); + ZONE_colormenu_sprite: DynamicRect = ( dx: cm_image_x_offset+cm_window_dx; dy: cm_window_dy + cm_image_y_offset; w: 211; h: 308; anchor: ANC_MIDDLE ); - ZONE_colorselectionboxes: Array [1..3] of TSDL_Rect = ( - ( x: cm_window_x + cm_swatchzone_x_offset; y: cm_window_y + cm_swatchzone_y_start; w: 600; h: 145 ), - ( x: cm_window_x + cm_swatchzone_x_offset; y: cm_window_y + cm_swatchzone_y_start + cm_swatchzone_height; w: 600; h: 145 ), - ( x: cm_window_x + cm_swatchzone_x_offset; y: cm_window_y + cm_swatchzone_y_start + 2 * cm_swatchzone_height; w: 600; h: 145 ) + ZONE_colorselectionboxes: Array [1..3] of DynamicRect = ( + ( dx: cm_window_dx + cm_swatchzone_x_offset; dy: cm_window_dy + cm_swatchzone_y_start; w: 600; h: 145; anchor: ANC_MIDDLE ), + ( dx: cm_window_dx + cm_swatchzone_x_offset; dy: cm_window_dy + cm_swatchzone_y_start + cm_swatchzone_height; w: 600; h: 145; anchor: ANC_MIDDLE ), + ( dx: cm_window_dx + cm_swatchzone_x_offset; dy: cm_window_dy + cm_swatchzone_y_start + 2 * cm_swatchzone_height; w: 600; h: 145; anchor: ANC_MIDDLE ) ); - ZONE_swatch_area: Array [1..3] of TSDL_Rect = ( - ( x: cm_window_x + cm_swatchzone_x_offset + off_swatches_x; y: cm_window_y + cm_swatchzone_y_start + off_swatches_y; w: Swatch_Width * Swatch_Columns; h: Swatch_Height * Swatch_Rows ), - ( x: cm_window_x + cm_swatchzone_x_offset + off_swatches_x; y: cm_window_y + cm_swatchzone_y_start + cm_swatchzone_height + off_swatches_y; w: Swatch_Width * Swatch_Columns; h: Swatch_Height * Swatch_Rows ), - ( x: cm_window_x + cm_swatchzone_x_offset + off_swatches_x; y: cm_window_y + cm_swatchzone_y_start + 2 * cm_swatchzone_height + off_swatches_y; w: Swatch_Width * Swatch_Columns; h: Swatch_Height * Swatch_Rows ) + ZONE_swatch_area: Array [1..3] of DynamicRect = ( + ( dx: cm_window_dx + cm_swatchzone_x_offset + off_swatches_x; dy: cm_window_dy + cm_swatchzone_y_start + off_swatches_y; w: Swatch_Width * Swatch_Columns; h: Swatch_Height * Swatch_Rows; anchor: ANC_MIDDLE ), + ( dx: cm_window_dx + cm_swatchzone_x_offset + off_swatches_x; dy: cm_window_dy + cm_swatchzone_y_start + cm_swatchzone_height + off_swatches_y; w: Swatch_Width * Swatch_Columns; h: Swatch_Height * Swatch_Rows; anchor: ANC_MIDDLE ), + ( dx: cm_window_dx + cm_swatchzone_x_offset + off_swatches_x; dy: cm_window_dy + cm_swatchzone_y_start + 2 * cm_swatchzone_height + off_swatches_y; w: Swatch_Width * Swatch_Columns; h: Swatch_Height * Swatch_Rows; anchor: ANC_MIDDLE ) ); var @@ -191,13 +191,14 @@ implementation if colormenu_ReDrawer <> Nil then colormenu_ReDrawer; { Display the panel. } - ClearExtendedBorder( ZONE_colormenu_base ); - SDL_FillRect( game_screen , @ZONE_colormenu_base , SDL_MapRGB( Game_Screen^.Format , PlayerBlue.R , PlayerBlue.G , PlayerBlue.B ) ); - DrawSprite( cm_panel , ZONE_colormenu_base , 0 ); + MyDest := ZONE_colormenu_base.GetRect(); + ClearExtendedBorder( MyDest ); + SDL_FillRect( game_screen , @MyDest , SDL_MapRGB( Game_Screen^.Format , PlayerBlue.R , PlayerBlue.G , PlayerBlue.B ) ); + DrawSprite( cm_panel , MyDest , 0 ); { Display the sprite we're editing. } MySprite := ConfirmSprite( colormenu_imagename, colormenu_imagepalette, colormenu_imagewidth, colormenu_imageheight ); - MyDest := ZONE_colormenu_sprite; + MyDest := ZONE_colormenu_sprite.GetRect(); if MySprite <> Nil then begin MyDest.X := MyDest.X + ( MyDest.W div 2 ) - ( colormenu_imagewidth div 2 ); MyDest.Y := MyDest.Y + ( MyDest.H div 2 ) - ( colormenu_imageheight div 2 ); @@ -214,9 +215,9 @@ implementation { Display the three color swatch areas. } for t := 1 to 3 do begin if t = colormenu_channel then begin - DrawColorSelectionBox( ZONE_colorselectionboxes[t], colormenu_colorset[ t ], colormenu_currentpen[ t ], colormenu_rowoffset[ t ], colormenu_Curs_X, colormenu_Curs_Y ); + DrawColorSelectionBox( ZONE_colorselectionboxes[t].GetRect(), colormenu_colorset[ t ], colormenu_currentpen[ t ], colormenu_rowoffset[ t ], colormenu_Curs_X, colormenu_Curs_Y ); end else begin - DrawColorSelectionBox( ZONE_colorselectionboxes[t], colormenu_colorset[ t ], colormenu_currentpen[ t ], colormenu_rowoffset[ t ], -1, -1 ); + DrawColorSelectionBox( ZONE_colorselectionboxes[t].GetRect(), colormenu_colorset[ t ], colormenu_currentpen[ t ], colormenu_rowoffset[ t ], -1, -1 ); end; end; end; @@ -252,15 +253,17 @@ implementation { Alright, so the mouse button has just been pressed. Figure out if it hit anything } { interesting and maybe change one of the color pens. } var + MyHit: TSDL_Rect; T,C,HitX,HitY: Integer; begin { There are three color channels to worry about. See if it hit any of those. } for t := 1 to 3 do begin - if ( Mouse_X >= ZONE_swatch_area[t].X ) and ( Mouse_Y >= ZONE_swatch_area[t].Y ) and ( Mouse_X < ( ZONE_swatch_area[t].X + ZONE_swatch_area[t].W ) ) and ( Mouse_Y < ( ZONE_swatch_area[t].Y + ZONE_swatch_area[t].H ) ) then begin + MyHit := ZONE_swatch_area[t].GetRect(); + if ( Mouse_X >= MyHit.X ) and ( Mouse_Y >= MyHit.Y ) and ( Mouse_X < ( MyHit.X + MyHit.W ) ) and ( Mouse_Y < ( MyHit.Y + MyHit.H ) ) then begin { Alright, we're in the hit box. We've definitely hit a swatch, if there's one at this position. } { Determine HitX and HitY. } - HitX := ( Mouse_X - ZONE_swatch_area[t].X ) div Swatch_Width; - HitY := ( Mouse_Y - ZONE_swatch_area[t].Y ) div Swatch_Height; + HitX := ( Mouse_X - MyHit.X ) div Swatch_Width; + HitY := ( Mouse_Y - MyHit.Y ) div Swatch_Height; { Now the question becomes, is there a color at this area? } colormenu_channel := T; diff --git a/gharena.pas b/gharena.pas index 17f26b6..7c91641 100644 --- a/gharena.pas +++ b/gharena.pas @@ -30,7 +30,7 @@ {$IFNDEF DEBUG} {$APPTYPE GUI} {$ENDIF} -uses gears,sdlgfx,arenahq,sdlmenus,randchar,navigate,sdlmap; +uses gears,sdlgfx,arenahq,sdlmenus,randchar,navigate,sdlmap,ghchars; {$ELSE} uses gears,congfx,arenahq,conmenus,randchar,navigate,context,mapedit; {$ENDIF} @@ -45,6 +45,19 @@ {$IFDEF SDLMODE} MyLogo: SensibleSpritePtr; +Procedure GenNames; +var + t: Integer; + mylist: SAttPtr; +begin + mylist := Nil; + for t := 1 to 10000 do begin + StoreSAtt( mylist, RandomName ); + end; + SaveStringList( 'names.txt', mylist ); + DisposeSAtt( mylist ); +end; + Procedure MainMenuRedraw; { Draw the opening screen, and add the infobox + logo. } begin @@ -76,6 +89,8 @@ AddRPGMenuItem( RPM , 'View Design Files' , 7 ); AddRPGMenuItem( RPM , 'Quit Game' , -1 ); + {GenNames();} + repeat {$IFNDEF SDLMODE} ClrScreen; diff --git a/history.txt b/history.txt index 7ecb9de..bcb2cbd 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +- Fixed problem with SanitizeFilename on Windows (pcaction.pp,navigate.pp) +- Some illegal characters removed from filenames (texutil.pp) +- FillRectWithSprite can now accept x,y offsets (sdlgfx.pp) +- ColorMenu is properly centered when screen is resized (colormenu.pp) + 1.302 June 26 2016 - Fixed lone enemy bug in SCENE_CaptureMecha.txt - Updated PLOT_BanditJob1.txt, PLOT_BanditJob2.txt, PLOT_BanditJob3.txt, diff --git a/pcaction.pp b/pcaction.pp index 9c9bdf6..932330f 100644 --- a/pcaction.pp +++ b/pcaction.pp @@ -1434,7 +1434,9 @@ implementation end; { Find the PC's name, open the file, and save. } - Name := Save_Campaign_Base + PilotName( PC ) + Default_File_Ending; + Name := PilotName( PC ); + SanitizeFilename( Name ); + Name := Save_Campaign_Base + Name + Default_File_Ending; Assign( F , Name ); Rewrite( F ); WriteCampaign( Camp , F ); diff --git a/randchar.pp b/randchar.pp index b63a181..c1fd90a 100644 --- a/randchar.pp +++ b/randchar.pp @@ -115,7 +115,11 @@ implementation while ( Leader <> Nil ) and ( ( Leader^.G <> GG_Character ) or ( NAttValue( Leader^.NA , NAG_CharDescription , NAS_CharType ) <> 0 ) ) do Leader := Leader^.Next; if Leader = Nil then Exit; - FName := Save_Character_Base + GearName(Leader) + Default_File_Ending; + FName := GearName( Leader ); + SanitizeFilename( FName ); + + FName := Save_Character_Base + FName + Default_File_Ending; + Assign( F , FName ); Rewrite( F ); WriteCGears( F , PC ); diff --git a/sdlgfx.pp b/sdlgfx.pp index 816fb5b..6b8fc8b 100644 --- a/sdlgfx.pp +++ b/sdlgfx.pp @@ -143,7 +143,7 @@ interface ZONE_ShopText: DynamicRect = ( dx:-225; dy: -230; w: 287; h: 170; anchor: ANC_middle ); ZONE_ShopPCName: DynamicRect = ( dx:-330; dy: -30; w: 100; h: 32; anchor: ANC_middle ); ZONE_ShopPCPortrait: DynamicRect = ( dx:-330; dy: -10; w: 100; h: 150; anchor: ANC_middle ); - ZONE_ShopMenu: DynamicRect = ( dx:-225; dy: -30; w: 287; h: 190; anchor: ANC_middle ); + ZONE_ShopMenu: DynamicRect = ( dx:-225; dy: -30; w: 287; h: 170; anchor: ANC_middle ); ZONE_ShopInfo: DynamicRect = (dx:85; dY:-225; W: 250; H: 340; anchor: ANC_middle); ZONE_ShopCash: DynamicRect = ( dx:135; dy: 130; w: 150; h: 16; anchor: ANC_middle ); @@ -199,6 +199,10 @@ procedure DrawSprite( Spr: SensibleSpritePtr; MyDest: TSDL_Rect; Frame: Integer procedure DrawAlphaSprite( Spr: SensibleSpritePtr; MyDest: TSDL_Rect; Frame: Integer ); Function ConfirmSprite( Name: String; const Color: String; W,H: Integer ): SensibleSpritePtr; +Procedure FillRectWithSprite( MyRect: TSDL_Rect; MySprite: SensibleSpritePtr; MyFrame,OffX,OffY: Integer ); +Procedure FillRectWithSprite( MyRect: TSDL_Rect; MySprite: SensibleSpritePtr; MyFrame: Integer ); + + function RPGKey: Char; Procedure ClrZone( var Z: TSDL_Rect ); Procedure ClrScreen; @@ -1069,7 +1073,7 @@ function RPGKey: Char; GrowRect := MyRect; end; -Procedure FillRectWithSprite( MyRect: TSDL_Rect; MySprite: SensibleSpritePtr; MyFrame: Integer ); +Procedure FillRectWithSprite( MyRect: TSDL_Rect; MySprite: SensibleSpritePtr; MyFrame,OffX,OffY: Integer ); { Fill this area of the screen perfectly with the provided sprite. } var MyDest: TSDL_Rect; @@ -1079,6 +1083,9 @@ function RPGKey: Char; GridH := MyRect.H div MySprite^.H + 1; SDL_SetClipRect( Game_Screen , @MyRect ); + MyRect.X := MyRect.X + (OffX mod MySprite^.W) - MySprite^.W; + MyRect.Y := MyRect.Y + (OffY mod MySprite^.H) - MySprite^.H; + { Draw the backdrop. } for X := 0 to GridW do begin MyDest.X := MyRect.X + X * MySprite^.W; @@ -1091,6 +1098,12 @@ function RPGKey: Char; SDL_SetClipRect( Game_Screen , Nil ); end; +Procedure FillRectWithSprite( MyRect: TSDL_Rect; MySprite: SensibleSpritePtr; MyFrame: Integer ); + { Do a FillRect with offset 0,0. } +begin + FillRectWithSprite( MyRect, MySprite, MyFrame, 0, 0 ); +end; + Procedure InfoBox( MyBox: TSDL_Rect ); { Do a box for drawing something else inside of. } const diff --git a/sdlinfo.pp b/sdlinfo.pp index eb8d198..f5f9d0e 100644 --- a/sdlinfo.pp +++ b/sdlinfo.pp @@ -752,7 +752,6 @@ implementation CDest := ZONE_PCInfo; { Error check } - { Note that we want the area cleared, even in case of an error. } if Part = Nil then exit; { Depending upon PART's type, branch to an appropriate procedure. } diff --git a/texutil.pp b/texutil.pp index d42c44e..a061431 100644 --- a/texutil.pp +++ b/texutil.pp @@ -54,6 +54,8 @@ interface Procedure ReplacePat( var msg: String; const pat_in,s: String ); Function ReplaceHash( const msg, s: String ): String; +Procedure SanitizeFilename( var S: String ); + implementation @@ -393,4 +395,19 @@ function IsAlpha( C: Char ): Boolean; ReplaceHash := msg_out; end; +Procedure SanitizeFilename( var S: String ); + { Replace all proscribed characters with an underscore. } +const + ProscribedCharacters = ',?"*~#%&{}:<>+|'; +var + T: Integer; +begin + for T := 1 to Length( S ) do begin + if Pos( S[T] , ProscribedCharacters ) > 0 then begin + S[T] := '_'; + end; + end; +end; + + end.