├── License.txt ├── README.html ├── README.md ├── game ├── cache │ ├── bytecode.rpyb │ ├── pyanalysis.rpyb │ └── screens.rpyb ├── hunt │ ├── crosshair.png │ ├── crosshair_focused.png │ ├── hunt.rpy │ ├── hunt.rpyc │ └── target.png ├── images │ ├── beached.jpg │ └── eileen.png ├── options.rpy ├── options.rpy.bak ├── options.rpyc ├── saves │ └── persistent ├── screens.rpy ├── screens.rpy.bak ├── screens.rpyc ├── script.rpy └── script.rpyc └── tmp └── navigation.json /License.txt: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | 26 | NOTE: THIS LICENSE APPLIES TO THE SOURCE CODE FILES THAT MAKE UP THE SHOOTER GAME ONLY. 27 | Art assets and Ren'Py are subject to their respective licenses. 28 | 29 | -------------------------------------------------------------------------------- /README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | README 4 | 35 | 36 | 37 | 38 |

Basic Help

39 |

40 | To advance through the game, left-click or press the space or enter keys. When at a menu, 41 | left-click to make a choice, or use the arrow keys to select a choice and enter to activate it. 42 |

43 | 44 |

Game Menu

45 |

46 | When playing a game, right-click or press the escape key to enter the game menu. The game menu 47 | gives the following choices: 48 |

49 | 50 |
51 |
Return
52 |
Returns to the game.
53 |
Save Game
54 |
Allows you to save a game by clicking on a save slot.
55 |
Load Game
56 |
Allows you to load a game by clicking on a save slot. Clicking on "Auto" accesses the automatic save slots.
57 |
Preferences
58 |
59 | Changes the game preferences (options/configuration): 60 |
61 |
Display
62 |
Switches between fullscreen and windowed mode.
63 |
Transitions
64 |
Controls the display of transitions between game screens.
65 |
Text Speed
66 |
Controls the rate at which text displays. The further to the right this slider is, the faster the text 67 | will display. All the way to the right causes text to be shown instantly.
68 |
Joystick
69 |
Lets you control the game using a joystick.
70 |
Skip
71 |
Chooses between skipping messages that have been already seen (in any play through the game), and 72 | skipping all messages.
73 |
Begin Skipping
74 |
Returns to the game, while skipping.
75 |
After Choices
76 |
Controls if skipping stops upon reaching a menu.
77 |
Auto-Forward Time
78 |
Controls automatic advance. The further to the left this slider is, the shorter the amount of time 79 | before the game advances. All the way to the right means text will never auto-forward.
80 |
Music, Sound, and Voice Volume
81 |
Controls the volume of the Music, Sound effect, and Voice channels, respectively. The further to the 82 | right these are, the louder the volume.
83 |
84 |
85 |
Main Menu
86 |
Returns to the main menu, ending the current game.
87 |
Help
88 |
Shows this help screen.
89 |
Quit
90 |
Exits the game; the game will be closed and ended.
91 |
92 | 93 |

Key and Mouse Bindings

94 |
95 |
Left-click, Enter
96 |
Advances through the game, activates menu choices, buttons, and sliders.
97 |
Space
98 |
Advances through the game, but does not activate choices.
99 |
Arrow Keys
100 |
Navigates between menu choices, buttons, and sliders.
101 |
Ctrl
102 |
Causes skipping to occur while the ctrl key is held down.
103 |
Tab
104 |
Toggles skipping, causing it to occur until tab is pressed again.
105 |
Mousewheel-Up, PageUp
106 |
Causes rollback to occur. Rollback reverses the game back in time, showing prior text and even allowing 107 | menu choices to be changed.
108 |
Mousewheel-Down, PageDown
109 |
Causes rollforward to occur, canceling out a previous rollback.
110 |
Right-click, Escape
111 |
Enters the game menu. When in the game menu, returns to the game.
112 |
Middle-click, H
113 |
Hides the text window and other transient displays.
114 |
F
115 |
Toggles fullscreen mode
116 |
S
117 |
Takes a screenshot, saving it in a file named screenshotxxxx.png, where xxxx is a serial number.
118 |
Alt-M, Command-H
119 |
Hides (iconifies) the window.
120 |
Alt-F4, Command-Q
121 |
Quits the game.
122 |
Delete
123 |
When a save slot is selected, deletes that save slot.
124 |
v
125 |
126 | Toggles self-voicing mode, which reads text to the user using an os-supplied speech synthesizer. For more 127 | information, please read the self-voicing 128 | documentation. 129 |
130 |
Shift+C
131 |
Toggles clipboard-voicing mode, which copies text to the clipboard so it can be read by a screen reader.
132 |
133 | 134 |

Controller Support and Bindings

135 | 136 |

137 | This game should automatically detect and use game controllers supported by 138 | SDL2. Other controllers can be configured using third-party configuration tools 139 | like the SDL2 Gampad Tool 140 |

141 | 142 |

143 | A small number of systems may have problems using detected game controllers. Should 144 | that happen, hold down shift as the game starts, and disable the controller support. 145 |

146 | 147 |

The following bindings are used:

148 | 149 |
150 |
Right Trigger, A (Bottom Button)
151 |
Advances through the game, activates menu choices, buttons, and sliders.
152 | 153 |
Guide, Start
154 |
Enters the game menu. When in the game menu, returns to the game.
155 | 156 |
Directional Pad, Analog Sticks
157 |
Navigates between menu choices, buttons, and sliders.
158 | 159 |
Left Trigger, Left Shoulder, Back
160 |
Causes rollback to occur. Rollback reverses the game back in time, showing prior text and even allowing 161 | menu choices to be changed.
162 | 163 |
Right Shoulder
164 |
Causes rollforward to occur, canceling out a previous rollback.
165 | 166 |
Y (Top Button)
167 |
Hides the text window and other transient displays.
168 | 169 |
170 | 171 |

Legal Notice

172 |

173 | This program contains free software licensed under a number of licenses, including the GNU Lesser Public License. A 174 | complete list of software is available at http://www.renpy.org/doc/html/license.html. 175 |

176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Renpy_Shooter 2 | Written by Colorado Stark 3 | 4 | Simple shooting minigame and integration for Ren'Py visual novels. 5 | Example includes how to transition from a standard Ren'Py Visual Novel story format to the shooting minigame 6 | and then to transition back return to the story and bring the results of the shooting as something you can 7 | use as a decision variable to branch your story. 8 | 9 | No Copyright. Released to the Public Domain. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /game/cache/bytecode.rpyb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/cache/bytecode.rpyb -------------------------------------------------------------------------------- /game/cache/pyanalysis.rpyb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/cache/pyanalysis.rpyb -------------------------------------------------------------------------------- /game/cache/screens.rpyb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/cache/screens.rpyb -------------------------------------------------------------------------------- /game/hunt/crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/hunt/crosshair.png -------------------------------------------------------------------------------- /game/hunt/crosshair_focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/hunt/crosshair_focused.png -------------------------------------------------------------------------------- /game/hunt/hunt.rpy: -------------------------------------------------------------------------------- 1 | image target: 2 | "hunt/target.png" 3 | zoom 0.5 4 | 5 | transform moving_target: 6 | ypos 275 7 | linear 3.0 xpos 2000 8 | xpos -300 9 | repeat 10 | 11 | label begin_hunt: 12 | 13 | $ shots_fired = 0 14 | $ targets_hit = 0 15 | call hunting 16 | return 17 | 18 | label hunting: 19 | 20 | scene black 21 | show target at moving_target 22 | $ position = At(ImageReference("target"), moving_target) 23 | show expression position 24 | 25 | $ ui.imagebutton("hunt/crosshair.png", "hunt/crosshair_focused.png", clicked = ui.returns("fired"), xpos= 996, ypos = 163) 26 | $ fired_gun = ui.interact() 27 | 28 | show expression position 29 | if position.xpos > 950: 30 | if position.xpos < 1100: 31 | with vpunch 32 | "You Hit. " 33 | $ shots_fired = shots_fired + 1 34 | $ targets_hit = targets_hit + 1 35 | if shots_fired >= 3: 36 | return 37 | call hunting 38 | 39 | with vpunch 40 | "You Missed." 41 | $ shots_fired = shots_fired + 1 42 | if shots_fired >= 3: 43 | return 44 | 45 | call hunting 46 | 47 | return 48 | -------------------------------------------------------------------------------- /game/hunt/hunt.rpyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/hunt/hunt.rpyc -------------------------------------------------------------------------------- /game/hunt/target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/hunt/target.png -------------------------------------------------------------------------------- /game/images/beached.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/images/beached.jpg -------------------------------------------------------------------------------- /game/images/eileen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/images/eileen.png -------------------------------------------------------------------------------- /game/options.rpy: -------------------------------------------------------------------------------- 1 | ## This file contains some of the options that can be changed to customize 2 | ## your Ren'Py game. It only contains the most common options... there 3 | ## is quite a bit more customization you can do. 4 | ## 5 | ## Lines beginning with two '#' marks are comments, and you shouldn't 6 | ## uncomment them. Lines beginning with a single '#' mark are 7 | ## commented-out code, and you may want to uncomment them when 8 | ## appropriate. 9 | 10 | init -1 python hide: 11 | 12 | ## These control the width and height of the screen. 13 | 14 | config.screen_width = 1920 15 | config.screen_height = 1080 16 | 17 | ## This controls the title of the window, when Ren'Py is 18 | ## running in a window. 19 | 20 | config.window_title = u"Shooting Game" 21 | 22 | # These control the name and version of the game, that are reported 23 | # with tracebacks and other debugging logs. 24 | config.name = "Shooting Game" 25 | config.version = "0.0" 26 | 27 | ######################################### 28 | # Themes 29 | 30 | ## We then want to call a theme function. theme.roundrect is 31 | ## a theme that features the use of rounded rectangles. 32 | ## 33 | ## The theme function takes a number of parameters that can 34 | ## customize the color scheme. 35 | 36 | theme.a_white_tulip( 37 | ## Theme: A White Tulip 38 | ## Scheme A White Tulip 39 | 40 | ## The color of an idle widget face. 41 | widget = "#c1c6d3", 42 | 43 | ## The color of a focused widget face. 44 | widget_hover = "#d7dbe5", 45 | 46 | ## The color of the text in a selected widget. (For 47 | ## example, the current value of a preference.) 48 | widget_selected = "#c1c6d3", 49 | 50 | ## The color of a disabled widget face. 51 | disabled = "#b4b4b4", 52 | 53 | ## The color of a frame containing widgets. 54 | frame = "#9391c9", 55 | 56 | ## The background of the main menu. This can be a color 57 | ## beginning with '#', or an image filename. The latter 58 | ## should take up the full height and width of the screen. 59 | mm_root = "#ffffff", 60 | 61 | ## The background of the game menu. This can be a color 62 | ## beginning with '#', or an image filename. The latter 63 | ## should take up the full height and width of the screen. 64 | gm_root = "#ffffff", 65 | 66 | ## The fonts used by this theme. The default fonts may not be 67 | ## suitable for non-English languages. 68 | regular_font = "_theme_awt/Quicksand-Regular.ttf", 69 | bold_font = "_theme_awt/Quicksand-Bold.ttf", 70 | 71 | ## And we're done with the theme. The theme will customize 72 | ## various styles, so if we want to change them, we should 73 | ## do so below. 74 | ) 75 | 76 | 77 | ######################################### 78 | ## These settings let you customize the window containing the 79 | ## dialogue and narration, by replacing it with an image. 80 | 81 | ## The background of the window. In a Frame, the two numbers 82 | ## are the size of the left/right and top/bottom borders, 83 | ## respectively. 84 | 85 | # style.window.background = Frame("frame.png", 12, 12) 86 | 87 | ## Margin is space surrounding the window, where the background 88 | ## is not drawn. 89 | 90 | # style.window.left_margin = 6 91 | # style.window.right_margin = 6 92 | # style.window.top_margin = 6 93 | # style.window.bottom_margin = 6 94 | 95 | ## Padding is space inside the window, where the background is 96 | ## drawn. 97 | 98 | # style.window.left_padding = 6 99 | # style.window.right_padding = 6 100 | # style.window.top_padding = 6 101 | # style.window.bottom_padding = 6 102 | 103 | ## This is the minimum height of the window, including the margins 104 | ## and padding. 105 | 106 | # style.window.yminimum = 250 107 | 108 | 109 | ######################################### 110 | ## This lets you change the placement of the main menu. 111 | 112 | ## The way placement works is that we find an anchor point 113 | ## inside a displayable, and a position (pos) point on the 114 | ## screen. We then place the displayable so the two points are 115 | ## at the same place. 116 | 117 | ## An anchor/pos can be given as an integer or a floating point 118 | ## number. If an integer, the number is interpreted as a number 119 | ## of pixels from the upper-left corner. If a floating point, 120 | ## the number is interpreted as a fraction of the size of the 121 | ## displayable or screen. 122 | 123 | # style.mm_menu_frame.xpos = 0.5 124 | # style.mm_menu_frame.xanchor = 0.5 125 | # style.mm_menu_frame.ypos = 0.75 126 | # style.mm_menu_frame.yanchor = 0.5 127 | 128 | 129 | ######################################### 130 | ## These let you customize the default font used for text in Ren'Py. 131 | 132 | ## The file containing the default font. 133 | 134 | # style.default.font = "DejaVuSans.ttf" 135 | 136 | ## The default size of text. 137 | 138 | # style.default.size = 22 139 | 140 | ## Note that these only change the size of some of the text. Other 141 | ## buttons have their own styles. 142 | 143 | 144 | ######################################### 145 | ## These settings let you change some of the sounds that are used by 146 | ## Ren'Py. 147 | 148 | ## Set this to False if the game does not have any sound effects. 149 | 150 | config.has_sound = True 151 | 152 | ## Set this to False if the game does not have any music. 153 | 154 | config.has_music = True 155 | 156 | ## Set this to True if the game has voicing. 157 | 158 | config.has_voice = False 159 | 160 | ## Sounds that are used when button and imagemaps are clicked. 161 | 162 | # style.button.activate_sound = "click.wav" 163 | # style.imagemap.activate_sound = "click.wav" 164 | 165 | ## Sounds that are used when entering and exiting the game menu. 166 | 167 | # config.enter_sound = "click.wav" 168 | # config.exit_sound = "click.wav" 169 | 170 | ## A sample sound that can be played to check the sound volume. 171 | 172 | # config.sample_sound = "click.wav" 173 | 174 | ## Music that is played while the user is at the main menu. 175 | 176 | # config.main_menu_music = "main_menu_theme.ogg" 177 | 178 | 179 | ######################################### 180 | ## Help. 181 | 182 | ## This lets you configure the help option on the Ren'Py menus. 183 | ## It may be: 184 | ## - A label in the script, in which case that label is called to 185 | ## show help to the user. 186 | ## - A file name relative to the base directory, which is opened in a 187 | ## web browser. 188 | ## - None, to disable help. 189 | config.help = "README.html" 190 | 191 | 192 | ######################################### 193 | ## Transitions. 194 | 195 | ## Used when entering the game menu from the game. 196 | config.enter_transition = None 197 | 198 | ## Used when exiting the game menu to the game. 199 | config.exit_transition = None 200 | 201 | ## Used between screens of the game menu. 202 | config.intra_transition = None 203 | 204 | ## Used when entering the game menu from the main menu. 205 | config.main_game_transition = None 206 | 207 | ## Used when returning to the main menu from the game. 208 | config.game_main_transition = None 209 | 210 | ## Used when entering the main menu from the splashscreen. 211 | config.end_splash_transition = None 212 | 213 | ## Used when entering the main menu after the game has ended. 214 | config.end_game_transition = None 215 | 216 | ## Used when a game is loaded. 217 | config.after_load_transition = None 218 | 219 | ## Used when the window is shown. 220 | config.window_show_transition = None 221 | 222 | ## Used when the window is hidden. 223 | config.window_hide_transition = None 224 | 225 | ## Used when showing NVL-mode text directly after ADV-mode text. 226 | config.adv_nvl_transition = dissolve 227 | 228 | ## Used when showing ADV-mode text directly after NVL-mode text. 229 | config.nvl_adv_transition = dissolve 230 | 231 | ## Used when yesno is shown. 232 | config.enter_yesno_transition = None 233 | 234 | ## Used when the yesno is hidden. 235 | config.exit_yesno_transition = None 236 | 237 | ## Used when entering a replay 238 | config.enter_replay_transition = None 239 | 240 | ## Used when exiting a replay 241 | config.exit_replay_transition = None 242 | 243 | ## Used when the image is changed by a say statement with image attributes. 244 | config.say_attribute_transition = None 245 | 246 | ######################################### 247 | ## This is the name of the directory where the game's data is 248 | ## stored. (It needs to be set early, before any other init code 249 | ## is run, so the persistent information can be found by the init code.) 250 | python early: 251 | config.save_directory = "Shooting Game-1480015227" 252 | 253 | init -1 python hide: 254 | ######################################### 255 | ## Default values of Preferences. 256 | 257 | ## Note: These options are only evaluated the first time a 258 | ## game is run. To have them run a second time, delete 259 | ## game/saves/persistent 260 | 261 | ## Should we start in fullscreen mode? 262 | 263 | config.default_fullscreen = True 264 | 265 | ## The default text speed in characters per second. 0 is infinite. 266 | 267 | config.default_text_cps = 0 268 | 269 | ## The default auto-forward time setting. 270 | 271 | config.default_afm_time = 10 272 | 273 | ######################################### 274 | ## More customizations can go here. 275 | -------------------------------------------------------------------------------- /game/options.rpy.bak: -------------------------------------------------------------------------------- 1 | ## This file contains some of the options that can be changed to customize 2 | ## your Ren'Py game. It only contains the most common options... there 3 | ## is quite a bit more customization you can do. 4 | ## 5 | ## Lines beginning with two '#' marks are comments, and you shouldn't 6 | ## uncomment them. Lines beginning with a single '#' mark are 7 | ## commented-out code, and you may want to uncomment them when 8 | ## appropriate. 9 | 10 | init -1 python hide: 11 | 12 | ## These control the width and height of the screen. 13 | 14 | config.screen_width = 800 15 | config.screen_height = 600 16 | 17 | ## This controls the title of the window, when Ren'Py is 18 | ## running in a window. 19 | 20 | config.window_title = u"Shooting Game" 21 | 22 | # These control the name and version of the game, that are reported 23 | # with tracebacks and other debugging logs. 24 | config.name = "Shooting Game" 25 | config.version = "0.0" 26 | 27 | ######################################### 28 | # Themes 29 | 30 | ## We then want to call a theme function. theme.roundrect is 31 | ## a theme that features the use of rounded rectangles. 32 | ## 33 | ## The theme function takes a number of parameters that can 34 | ## customize the color scheme. 35 | 36 | theme.roundrect( 37 | 38 | ## The color of an idle widget face. 39 | widget = "#003c78", 40 | 41 | ## The color of a focused widget face. 42 | widget_hover = "#0050a0", 43 | 44 | ## The color of the text in a widget. 45 | widget_text = "#c8ffff", 46 | 47 | ## The color of the text in a selected widget. (For 48 | ## example, the current value of a preference.) 49 | widget_selected = "#ffffc8", 50 | 51 | ## The color of a disabled widget face. 52 | disabled = "#404040", 53 | 54 | ## The color of disabled widget text. 55 | disabled_text = "#c8c8c8", 56 | 57 | ## The color of informational labels. 58 | label = "#ffffff", 59 | 60 | ## The color of a frame containing widgets. 61 | frame = "#6496c8", 62 | 63 | ## If this is True, the in-game window is rounded. If False, 64 | ## the in-game window is square. 65 | rounded_window = False, 66 | 67 | ## The background of the main menu. This can be a color 68 | ## beginning with '#', or an image filename. The latter 69 | ## should take up the full height and width of the screen. 70 | mm_root = "#dcebff", 71 | 72 | ## The background of the game menu. This can be a color 73 | ## beginning with '#', or an image filename. The latter 74 | ## should take up the full height and width of the screen. 75 | gm_root = "#dcebff", 76 | 77 | ## And we're done with the theme. The theme will customize 78 | ## various styles, so if we want to change them, we should 79 | ## do so below. 80 | ) 81 | 82 | 83 | ######################################### 84 | ## These settings let you customize the window containing the 85 | ## dialogue and narration, by replacing it with an image. 86 | 87 | ## The background of the window. In a Frame, the two numbers 88 | ## are the size of the left/right and top/bottom borders, 89 | ## respectively. 90 | 91 | # style.window.background = Frame("frame.png", 12, 12) 92 | 93 | ## Margin is space surrounding the window, where the background 94 | ## is not drawn. 95 | 96 | # style.window.left_margin = 6 97 | # style.window.right_margin = 6 98 | # style.window.top_margin = 6 99 | # style.window.bottom_margin = 6 100 | 101 | ## Padding is space inside the window, where the background is 102 | ## drawn. 103 | 104 | # style.window.left_padding = 6 105 | # style.window.right_padding = 6 106 | # style.window.top_padding = 6 107 | # style.window.bottom_padding = 6 108 | 109 | ## This is the minimum height of the window, including the margins 110 | ## and padding. 111 | 112 | # style.window.yminimum = 250 113 | 114 | 115 | ######################################### 116 | ## This lets you change the placement of the main menu. 117 | 118 | ## The way placement works is that we find an anchor point 119 | ## inside a displayable, and a position (pos) point on the 120 | ## screen. We then place the displayable so the two points are 121 | ## at the same place. 122 | 123 | ## An anchor/pos can be given as an integer or a floating point 124 | ## number. If an integer, the number is interpreted as a number 125 | ## of pixels from the upper-left corner. If a floating point, 126 | ## the number is interpreted as a fraction of the size of the 127 | ## displayable or screen. 128 | 129 | # style.mm_menu_frame.xpos = 0.5 130 | # style.mm_menu_frame.xanchor = 0.5 131 | # style.mm_menu_frame.ypos = 0.75 132 | # style.mm_menu_frame.yanchor = 0.5 133 | 134 | 135 | ######################################### 136 | ## These let you customize the default font used for text in Ren'Py. 137 | 138 | ## The file containing the default font. 139 | 140 | # style.default.font = "DejaVuSans.ttf" 141 | 142 | ## The default size of text. 143 | 144 | # style.default.size = 22 145 | 146 | ## Note that these only change the size of some of the text. Other 147 | ## buttons have their own styles. 148 | 149 | 150 | ######################################### 151 | ## These settings let you change some of the sounds that are used by 152 | ## Ren'Py. 153 | 154 | ## Set this to False if the game does not have any sound effects. 155 | 156 | config.has_sound = True 157 | 158 | ## Set this to False if the game does not have any music. 159 | 160 | config.has_music = True 161 | 162 | ## Set this to True if the game has voicing. 163 | 164 | config.has_voice = False 165 | 166 | ## Sounds that are used when button and imagemaps are clicked. 167 | 168 | # style.button.activate_sound = "click.wav" 169 | # style.imagemap.activate_sound = "click.wav" 170 | 171 | ## Sounds that are used when entering and exiting the game menu. 172 | 173 | # config.enter_sound = "click.wav" 174 | # config.exit_sound = "click.wav" 175 | 176 | ## A sample sound that can be played to check the sound volume. 177 | 178 | # config.sample_sound = "click.wav" 179 | 180 | ## Music that is played while the user is at the main menu. 181 | 182 | # config.main_menu_music = "main_menu_theme.ogg" 183 | 184 | 185 | ######################################### 186 | ## Help. 187 | 188 | ## This lets you configure the help option on the Ren'Py menus. 189 | ## It may be: 190 | ## - A label in the script, in which case that label is called to 191 | ## show help to the user. 192 | ## - A file name relative to the base directory, which is opened in a 193 | ## web browser. 194 | ## - None, to disable help. 195 | config.help = "README.html" 196 | 197 | 198 | ######################################### 199 | ## Transitions. 200 | 201 | ## Used when entering the game menu from the game. 202 | config.enter_transition = None 203 | 204 | ## Used when exiting the game menu to the game. 205 | config.exit_transition = None 206 | 207 | ## Used between screens of the game menu. 208 | config.intra_transition = None 209 | 210 | ## Used when entering the game menu from the main menu. 211 | config.main_game_transition = None 212 | 213 | ## Used when returning to the main menu from the game. 214 | config.game_main_transition = None 215 | 216 | ## Used when entering the main menu from the splashscreen. 217 | config.end_splash_transition = None 218 | 219 | ## Used when entering the main menu after the game has ended. 220 | config.end_game_transition = None 221 | 222 | ## Used when a game is loaded. 223 | config.after_load_transition = None 224 | 225 | ## Used when the window is shown. 226 | config.window_show_transition = None 227 | 228 | ## Used when the window is hidden. 229 | config.window_hide_transition = None 230 | 231 | ## Used when showing NVL-mode text directly after ADV-mode text. 232 | config.adv_nvl_transition = dissolve 233 | 234 | ## Used when showing ADV-mode text directly after NVL-mode text. 235 | config.nvl_adv_transition = dissolve 236 | 237 | ## Used when yesno is shown. 238 | config.enter_yesno_transition = None 239 | 240 | ## Used when the yesno is hidden. 241 | config.exit_yesno_transition = None 242 | 243 | ## Used when entering a replay 244 | config.enter_replay_transition = None 245 | 246 | ## Used when exiting a replay 247 | config.exit_replay_transition = None 248 | 249 | ## Used when the image is changed by a say statement with image attributes. 250 | config.say_attribute_transition = None 251 | 252 | ######################################### 253 | ## This is the name of the directory where the game's data is 254 | ## stored. (It needs to be set early, before any other init code 255 | ## is run, so the persistent information can be found by the init code.) 256 | python early: 257 | config.save_directory = "Shooting Game-1480015227" 258 | 259 | init -1 python hide: 260 | ######################################### 261 | ## Default values of Preferences. 262 | 263 | ## Note: These options are only evaluated the first time a 264 | ## game is run. To have them run a second time, delete 265 | ## game/saves/persistent 266 | 267 | ## Should we start in fullscreen mode? 268 | 269 | config.default_fullscreen = False 270 | 271 | ## The default text speed in characters per second. 0 is infinite. 272 | 273 | config.default_text_cps = 0 274 | 275 | ## The default auto-forward time setting. 276 | 277 | config.default_afm_time = 10 278 | 279 | ######################################### 280 | ## More customizations can go here. 281 | -------------------------------------------------------------------------------- /game/options.rpyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/options.rpyc -------------------------------------------------------------------------------- /game/saves/persistent: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/saves/persistent -------------------------------------------------------------------------------- /game/screens.rpy: -------------------------------------------------------------------------------- 1 | # This file is in the public domain. Feel free to modify it as a basis 2 | # for your own screens. 3 | 4 | # Note that many of these screens may be given additional arguments in the 5 | # future. The use of **kwargs in the parameter list ensures your code will 6 | # work in the future. 7 | 8 | ############################################################################## 9 | # Say 10 | # 11 | # Screen that's used to display adv-mode dialogue. 12 | # http://www.renpy.org/doc/html/screen_special.html#say 13 | screen say(who, what, side_image=None, two_window=False): 14 | 15 | # Decide if we want to use the one-window or two-window variant. 16 | if not two_window: 17 | 18 | # The one window variant. 19 | window: 20 | id "window" 21 | 22 | has vbox: 23 | style "say_vbox" 24 | 25 | if who: 26 | text who id "who" 27 | 28 | text what id "what" 29 | 30 | else: 31 | 32 | # The two window variant. 33 | vbox: 34 | style "say_two_window_vbox" 35 | 36 | if who: 37 | window: 38 | style "say_who_window" 39 | 40 | text who: 41 | id "who" 42 | 43 | window: 44 | id "window" 45 | 46 | has vbox: 47 | style "say_vbox" 48 | 49 | text what id "what" 50 | 51 | # If there's a side image, display it above the text. 52 | if side_image: 53 | add side_image 54 | else: 55 | add SideImage() xalign 0.0 yalign 1.0 56 | 57 | # Use the quick menu. 58 | use quick_menu 59 | 60 | 61 | ############################################################################## 62 | # Choice 63 | # 64 | # Screen that's used to display in-game menus. 65 | # http://www.renpy.org/doc/html/screen_special.html#choice 66 | 67 | screen choice(items): 68 | 69 | window: 70 | style "menu_window" 71 | xalign 0.5 72 | yalign 0.5 73 | 74 | vbox: 75 | style "menu" 76 | spacing 2 77 | 78 | for caption, action, chosen in items: 79 | 80 | if action: 81 | 82 | button: 83 | action action 84 | style "menu_choice_button" 85 | 86 | text caption style "menu_choice" 87 | 88 | else: 89 | text caption style "menu_caption" 90 | 91 | init -2: 92 | $ config.narrator_menu = True 93 | 94 | style menu_window is default 95 | 96 | style menu_choice is button_text: 97 | clear 98 | 99 | style menu_choice_button is button: 100 | xminimum int(config.screen_width * 0.75) 101 | xmaximum int(config.screen_width * 0.75) 102 | 103 | 104 | ############################################################################## 105 | # Input 106 | # 107 | # Screen that's used to display renpy.input() 108 | # http://www.renpy.org/doc/html/screen_special.html#input 109 | 110 | screen input(prompt): 111 | 112 | window style "input_window": 113 | has vbox 114 | 115 | text prompt style "input_prompt" 116 | input id "input" style "input_text" 117 | 118 | use quick_menu 119 | 120 | ############################################################################## 121 | # Nvl 122 | # 123 | # Screen used for nvl-mode dialogue and menus. 124 | # http://www.renpy.org/doc/html/screen_special.html#nvl 125 | 126 | screen nvl(dialogue, items=None): 127 | 128 | window: 129 | style "nvl_window" 130 | 131 | has vbox: 132 | style "nvl_vbox" 133 | 134 | # Display dialogue. 135 | for who, what, who_id, what_id, window_id in dialogue: 136 | window: 137 | id window_id 138 | 139 | has hbox: 140 | spacing 10 141 | 142 | if who is not None: 143 | text who id who_id 144 | 145 | text what id what_id 146 | 147 | # Display a menu, if given. 148 | if items: 149 | 150 | vbox: 151 | id "menu" 152 | 153 | for caption, action, chosen in items: 154 | 155 | if action: 156 | 157 | button: 158 | style "nvl_menu_choice_button" 159 | action action 160 | 161 | text caption style "nvl_menu_choice" 162 | 163 | else: 164 | 165 | text caption style "nvl_dialogue" 166 | 167 | add SideImage() xalign 0.0 yalign 1.0 168 | 169 | use quick_menu 170 | 171 | ############################################################################## 172 | # Main Menu 173 | # 174 | # Screen that's used to display the main menu, when Ren'Py first starts 175 | # http://www.renpy.org/doc/html/screen_special.html#main-menu 176 | 177 | screen main_menu(): 178 | 179 | # This ensures that any other menu screen is replaced. 180 | tag menu 181 | 182 | # The background of the main menu. 183 | window: 184 | style "mm_root" 185 | 186 | # The main menu buttons. 187 | frame: 188 | style_group "mm" 189 | xalign .98 190 | yalign .98 191 | 192 | has vbox 193 | 194 | textbutton _("Start Game") action Start() 195 | textbutton _("Load Game") action ShowMenu("load") 196 | textbutton _("Preferences") action ShowMenu("preferences") 197 | textbutton _("Help") action Help() 198 | textbutton _("Quit") action Quit(confirm=False) 199 | 200 | init -2: 201 | 202 | # Make all the main menu buttons be the same size. 203 | style mm_button: 204 | size_group "mm" 205 | 206 | 207 | 208 | ############################################################################## 209 | # Navigation 210 | # 211 | # Screen that's included in other screens to display the game menu 212 | # navigation and background. 213 | # http://www.renpy.org/doc/html/screen_special.html#navigation 214 | screen navigation(): 215 | 216 | # The background of the game menu. 217 | window: 218 | style "gm_root" 219 | 220 | # The various buttons. 221 | frame: 222 | style_group "gm_nav" 223 | xalign .98 224 | yalign .98 225 | 226 | has vbox 227 | 228 | textbutton _("Return") action Return() 229 | textbutton _("Preferences") action ShowMenu("preferences") 230 | textbutton _("Save Game") action ShowMenu("save") 231 | textbutton _("Load Game") action ShowMenu("load") 232 | textbutton _("Main Menu") action MainMenu() 233 | textbutton _("Help") action Help() 234 | textbutton _("Quit") action Quit() 235 | 236 | init -2: 237 | 238 | # Make all game menu navigation buttons the same size. 239 | style gm_nav_button: 240 | size_group "gm_nav" 241 | 242 | 243 | ############################################################################## 244 | # Save, Load 245 | # 246 | # Screens that allow the user to save and load the game. 247 | # http://www.renpy.org/doc/html/screen_special.html#save 248 | # http://www.renpy.org/doc/html/screen_special.html#load 249 | 250 | # Since saving and loading are so similar, we combine them into 251 | # a single screen, file_picker. We then use the file_picker screen 252 | # from simple load and save screens. 253 | 254 | screen file_picker(): 255 | 256 | frame: 257 | style "file_picker_frame" 258 | 259 | has vbox 260 | 261 | # The buttons at the top allow the user to pick a 262 | # page of files. 263 | hbox: 264 | style_group "file_picker_nav" 265 | 266 | textbutton _("Previous"): 267 | action FilePagePrevious() 268 | 269 | textbutton _("Auto"): 270 | action FilePage("auto") 271 | 272 | textbutton _("Quick"): 273 | action FilePage("quick") 274 | 275 | for i in range(1, 9): 276 | textbutton str(i): 277 | action FilePage(i) 278 | 279 | textbutton _("Next"): 280 | action FilePageNext() 281 | 282 | $ columns = 2 283 | $ rows = 5 284 | 285 | # Display a grid of file slots. 286 | grid columns rows: 287 | transpose True 288 | xfill True 289 | style_group "file_picker" 290 | 291 | # Display ten file slots, numbered 1 - 10. 292 | for i in range(1, columns * rows + 1): 293 | 294 | # Each file slot is a button. 295 | button: 296 | action FileAction(i) 297 | xfill True 298 | 299 | has hbox 300 | 301 | # Add the screenshot. 302 | add FileScreenshot(i) 303 | 304 | $ file_name = FileSlotName(i, columns * rows) 305 | $ file_time = FileTime(i, empty=_("Empty Slot.")) 306 | $ save_name = FileSaveName(i) 307 | 308 | text "[file_name]. [file_time!t]\n[save_name!t]" 309 | 310 | key "save_delete" action FileDelete(i) 311 | 312 | 313 | screen save(): 314 | 315 | # This ensures that any other menu screen is replaced. 316 | tag menu 317 | 318 | use navigation 319 | use file_picker 320 | 321 | screen load(): 322 | 323 | # This ensures that any other menu screen is replaced. 324 | tag menu 325 | 326 | use navigation 327 | use file_picker 328 | 329 | init -2: 330 | style file_picker_frame is menu_frame 331 | style file_picker_nav_button is small_button 332 | style file_picker_nav_button_text is small_button_text 333 | style file_picker_button is large_button 334 | style file_picker_text is large_button_text 335 | 336 | 337 | ############################################################################## 338 | # Preferences 339 | # 340 | # Screen that allows the user to change the preferences. 341 | # http://www.renpy.org/doc/html/screen_special.html#prefereces 342 | 343 | screen preferences(): 344 | 345 | tag menu 346 | 347 | # Include the navigation. 348 | use navigation 349 | 350 | # Put the navigation columns in a three-wide grid. 351 | grid 3 1: 352 | style_group "prefs" 353 | xfill True 354 | 355 | # The left column. 356 | vbox: 357 | frame: 358 | style_group "pref" 359 | has vbox 360 | 361 | label _("Display") 362 | textbutton _("Window") action Preference("display", "window") 363 | textbutton _("Fullscreen") action Preference("display", "fullscreen") 364 | 365 | frame: 366 | style_group "pref" 367 | has vbox 368 | 369 | label _("Transitions") 370 | textbutton _("All") action Preference("transitions", "all") 371 | textbutton _("None") action Preference("transitions", "none") 372 | 373 | frame: 374 | style_group "pref" 375 | has vbox 376 | 377 | label _("Text Speed") 378 | bar value Preference("text speed") 379 | 380 | frame: 381 | style_group "pref" 382 | has vbox 383 | 384 | textbutton _("Joystick...") action Preference("joystick") 385 | 386 | 387 | vbox: 388 | frame: 389 | style_group "pref" 390 | has vbox 391 | 392 | label _("Skip") 393 | textbutton _("Seen Messages") action Preference("skip", "seen") 394 | textbutton _("All Messages") action Preference("skip", "all") 395 | 396 | frame: 397 | style_group "pref" 398 | has vbox 399 | 400 | textbutton _("Begin Skipping") action Skip() 401 | 402 | frame: 403 | style_group "pref" 404 | has vbox 405 | 406 | label _("After Choices") 407 | textbutton _("Stop Skipping") action Preference("after choices", "stop") 408 | textbutton _("Keep Skipping") action Preference("after choices", "skip") 409 | 410 | frame: 411 | style_group "pref" 412 | has vbox 413 | 414 | label _("Auto-Forward Time") 415 | bar value Preference("auto-forward time") 416 | 417 | if config.has_voice: 418 | textbutton _("Wait for Voice") action Preference("wait for voice", "toggle") 419 | 420 | vbox: 421 | frame: 422 | style_group "pref" 423 | has vbox 424 | 425 | label _("Music Volume") 426 | bar value Preference("music volume") 427 | 428 | frame: 429 | style_group "pref" 430 | has vbox 431 | 432 | label _("Sound Volume") 433 | bar value Preference("sound volume") 434 | 435 | if config.sample_sound: 436 | textbutton _("Test"): 437 | action Play("sound", config.sample_sound) 438 | style "soundtest_button" 439 | 440 | if config.has_voice: 441 | frame: 442 | style_group "pref" 443 | has vbox 444 | 445 | label _("Voice Volume") 446 | bar value Preference("voice volume") 447 | 448 | textbutton _("Voice Sustain") action Preference("voice sustain", "toggle") 449 | if config.sample_voice: 450 | textbutton _("Test"): 451 | action Play("voice", config.sample_voice) 452 | style "soundtest_button" 453 | 454 | init -2: 455 | style pref_frame: 456 | xfill True 457 | xmargin 5 458 | top_margin 5 459 | 460 | style pref_vbox: 461 | xfill True 462 | 463 | style pref_button: 464 | size_group "pref" 465 | xalign 1.0 466 | 467 | style pref_slider: 468 | xmaximum 192 469 | xalign 1.0 470 | 471 | style soundtest_button: 472 | xalign 1.0 473 | 474 | 475 | ############################################################################## 476 | # Yes/No Prompt 477 | # 478 | # Screen that asks the user a yes or no question. 479 | # http://www.renpy.org/doc/html/screen_special.html#yesno-prompt 480 | 481 | screen yesno_prompt(message, yes_action, no_action): 482 | 483 | modal True 484 | 485 | window: 486 | style "gm_root" 487 | 488 | frame: 489 | style_group "yesno" 490 | 491 | xfill True 492 | xmargin .05 493 | ypos .1 494 | yanchor 0 495 | ypadding .05 496 | 497 | has vbox: 498 | xalign .5 499 | yalign .5 500 | spacing 30 501 | 502 | label _(message): 503 | xalign 0.5 504 | 505 | hbox: 506 | xalign 0.5 507 | spacing 100 508 | 509 | textbutton _("Yes") action yes_action 510 | textbutton _("No") action no_action 511 | 512 | # Right-click and escape answer "no". 513 | key "game_menu" action no_action 514 | 515 | init -2: 516 | style yesno_button: 517 | size_group "yesno" 518 | 519 | style yesno_label_text: 520 | text_align 0.5 521 | layout "subtitle" 522 | 523 | 524 | ############################################################################## 525 | # Quick Menu 526 | # 527 | # A screen that's included by the default say screen, and adds quick access to 528 | # several useful functions. 529 | screen quick_menu(): 530 | 531 | # Add an in-game quick menu. 532 | hbox: 533 | style_group "quick" 534 | 535 | xalign 1.0 536 | yalign 1.0 537 | 538 | textbutton _("Back") action Rollback() 539 | textbutton _("Save") action ShowMenu('save') 540 | textbutton _("Q.Save") action QuickSave() 541 | textbutton _("Q.Load") action QuickLoad() 542 | textbutton _("Skip") action Skip() 543 | textbutton _("F.Skip") action Skip(fast=True, confirm=True) 544 | textbutton _("Auto") action Preference("auto-forward", "toggle") 545 | textbutton _("Prefs") action ShowMenu('preferences') 546 | 547 | init -2: 548 | style quick_button: 549 | is default 550 | background None 551 | xpadding 5 552 | 553 | style quick_button_text: 554 | is default 555 | size 12 556 | idle_color "#8888" 557 | hover_color "#ccc" 558 | selected_idle_color "#cc08" 559 | selected_hover_color "#cc0" 560 | insensitive_color "#4448" 561 | 562 | -------------------------------------------------------------------------------- /game/screens.rpy.bak: -------------------------------------------------------------------------------- 1 | # This file is in the public domain. Feel free to modify it as a basis 2 | # for your own screens. 3 | 4 | # Note that many of these screens may be given additional arguments in the 5 | # future. The use of **kwargs in the parameter list ensures your code will 6 | # work in the future. 7 | 8 | ############################################################################## 9 | # Say 10 | # 11 | # Screen that's used to display adv-mode dialogue. 12 | # http://www.renpy.org/doc/html/screen_special.html#say 13 | screen say(who, what, side_image=None, two_window=False): 14 | 15 | # Decide if we want to use the one-window or two-window variant. 16 | if not two_window: 17 | 18 | # The one window variant. 19 | window: 20 | id "window" 21 | 22 | has vbox: 23 | style "say_vbox" 24 | 25 | if who: 26 | text who id "who" 27 | 28 | text what id "what" 29 | 30 | else: 31 | 32 | # The two window variant. 33 | vbox: 34 | style "say_two_window_vbox" 35 | 36 | if who: 37 | window: 38 | style "say_who_window" 39 | 40 | text who: 41 | id "who" 42 | 43 | window: 44 | id "window" 45 | 46 | has vbox: 47 | style "say_vbox" 48 | 49 | text what id "what" 50 | 51 | # If there's a side image, display it above the text. 52 | if side_image: 53 | add side_image 54 | else: 55 | add SideImage() xalign 0.0 yalign 1.0 56 | 57 | # Use the quick menu. 58 | use quick_menu 59 | 60 | 61 | ############################################################################## 62 | # Choice 63 | # 64 | # Screen that's used to display in-game menus. 65 | # http://www.renpy.org/doc/html/screen_special.html#choice 66 | 67 | screen choice(items): 68 | 69 | window: 70 | style "menu_window" 71 | xalign 0.5 72 | yalign 0.5 73 | 74 | vbox: 75 | style "menu" 76 | spacing 2 77 | 78 | for caption, action, chosen in items: 79 | 80 | if action: 81 | 82 | button: 83 | action action 84 | style "menu_choice_button" 85 | 86 | text caption style "menu_choice" 87 | 88 | else: 89 | text caption style "menu_caption" 90 | 91 | init -2: 92 | $ config.narrator_menu = True 93 | 94 | style menu_window is default 95 | 96 | style menu_choice is button_text: 97 | clear 98 | 99 | style menu_choice_button is button: 100 | xminimum int(config.screen_width * 0.75) 101 | xmaximum int(config.screen_width * 0.75) 102 | 103 | 104 | ############################################################################## 105 | # Input 106 | # 107 | # Screen that's used to display renpy.input() 108 | # http://www.renpy.org/doc/html/screen_special.html#input 109 | 110 | screen input(prompt): 111 | 112 | window style "input_window": 113 | has vbox 114 | 115 | text prompt style "input_prompt" 116 | input id "input" style "input_text" 117 | 118 | use quick_menu 119 | 120 | ############################################################################## 121 | # Nvl 122 | # 123 | # Screen used for nvl-mode dialogue and menus. 124 | # http://www.renpy.org/doc/html/screen_special.html#nvl 125 | 126 | screen nvl(dialogue, items=None): 127 | 128 | window: 129 | style "nvl_window" 130 | 131 | has vbox: 132 | style "nvl_vbox" 133 | 134 | # Display dialogue. 135 | for who, what, who_id, what_id, window_id in dialogue: 136 | window: 137 | id window_id 138 | 139 | has hbox: 140 | spacing 10 141 | 142 | if who is not None: 143 | text who id who_id 144 | 145 | text what id what_id 146 | 147 | # Display a menu, if given. 148 | if items: 149 | 150 | vbox: 151 | id "menu" 152 | 153 | for caption, action, chosen in items: 154 | 155 | if action: 156 | 157 | button: 158 | style "nvl_menu_choice_button" 159 | action action 160 | 161 | text caption style "nvl_menu_choice" 162 | 163 | else: 164 | 165 | text caption style "nvl_dialogue" 166 | 167 | add SideImage() xalign 0.0 yalign 1.0 168 | 169 | use quick_menu 170 | 171 | ############################################################################## 172 | # Main Menu 173 | # 174 | # Screen that's used to display the main menu, when Ren'Py first starts 175 | # http://www.renpy.org/doc/html/screen_special.html#main-menu 176 | 177 | screen main_menu(): 178 | 179 | # This ensures that any other menu screen is replaced. 180 | tag menu 181 | 182 | # The background of the main menu. 183 | window: 184 | style "mm_root" 185 | 186 | # The main menu buttons. 187 | frame: 188 | style_group "mm" 189 | xalign .98 190 | yalign .98 191 | 192 | has vbox 193 | 194 | textbutton _("Start Game") action Start() 195 | textbutton _("Load Game") action ShowMenu("load") 196 | textbutton _("Preferences") action ShowMenu("preferences") 197 | textbutton _("Help") action Help() 198 | textbutton _("Quit") action Quit(confirm=False) 199 | 200 | init -2: 201 | 202 | # Make all the main menu buttons be the same size. 203 | style mm_button: 204 | size_group "mm" 205 | 206 | 207 | 208 | ############################################################################## 209 | # Navigation 210 | # 211 | # Screen that's included in other screens to display the game menu 212 | # navigation and background. 213 | # http://www.renpy.org/doc/html/screen_special.html#navigation 214 | screen navigation(): 215 | 216 | # The background of the game menu. 217 | window: 218 | style "gm_root" 219 | 220 | # The various buttons. 221 | frame: 222 | style_group "gm_nav" 223 | xalign .98 224 | yalign .98 225 | 226 | has vbox 227 | 228 | textbutton _("Return") action Return() 229 | textbutton _("Preferences") action ShowMenu("preferences") 230 | textbutton _("Save Game") action ShowMenu("save") 231 | textbutton _("Load Game") action ShowMenu("load") 232 | textbutton _("Main Menu") action MainMenu() 233 | textbutton _("Help") action Help() 234 | textbutton _("Quit") action Quit() 235 | 236 | init -2: 237 | 238 | # Make all game menu navigation buttons the same size. 239 | style gm_nav_button: 240 | size_group "gm_nav" 241 | 242 | 243 | ############################################################################## 244 | # Save, Load 245 | # 246 | # Screens that allow the user to save and load the game. 247 | # http://www.renpy.org/doc/html/screen_special.html#save 248 | # http://www.renpy.org/doc/html/screen_special.html#load 249 | 250 | # Since saving and loading are so similar, we combine them into 251 | # a single screen, file_picker. We then use the file_picker screen 252 | # from simple load and save screens. 253 | 254 | screen file_picker(): 255 | 256 | frame: 257 | style "file_picker_frame" 258 | 259 | has vbox 260 | 261 | # The buttons at the top allow the user to pick a 262 | # page of files. 263 | hbox: 264 | style_group "file_picker_nav" 265 | 266 | textbutton _("Previous"): 267 | action FilePagePrevious() 268 | 269 | textbutton _("Auto"): 270 | action FilePage("auto") 271 | 272 | textbutton _("Quick"): 273 | action FilePage("quick") 274 | 275 | for i in range(1, 9): 276 | textbutton str(i): 277 | action FilePage(i) 278 | 279 | textbutton _("Next"): 280 | action FilePageNext() 281 | 282 | $ columns = 2 283 | $ rows = 5 284 | 285 | # Display a grid of file slots. 286 | grid columns rows: 287 | transpose True 288 | xfill True 289 | style_group "file_picker" 290 | 291 | # Display ten file slots, numbered 1 - 10. 292 | for i in range(1, columns * rows + 1): 293 | 294 | # Each file slot is a button. 295 | button: 296 | action FileAction(i) 297 | xfill True 298 | 299 | has hbox 300 | 301 | # Add the screenshot. 302 | add FileScreenshot(i) 303 | 304 | $ file_name = FileSlotName(i, columns * rows) 305 | $ file_time = FileTime(i, empty=_("Empty Slot.")) 306 | $ save_name = FileSaveName(i) 307 | 308 | text "[file_name]. [file_time!t]\n[save_name!t]" 309 | 310 | key "save_delete" action FileDelete(i) 311 | 312 | 313 | screen save(): 314 | 315 | # This ensures that any other menu screen is replaced. 316 | tag menu 317 | 318 | use navigation 319 | use file_picker 320 | 321 | screen load(): 322 | 323 | # This ensures that any other menu screen is replaced. 324 | tag menu 325 | 326 | use navigation 327 | use file_picker 328 | 329 | init -2: 330 | style file_picker_frame is menu_frame 331 | style file_picker_nav_button is small_button 332 | style file_picker_nav_button_text is small_button_text 333 | style file_picker_button is large_button 334 | style file_picker_text is large_button_text 335 | 336 | 337 | ############################################################################## 338 | # Preferences 339 | # 340 | # Screen that allows the user to change the preferences. 341 | # http://www.renpy.org/doc/html/screen_special.html#prefereces 342 | 343 | screen preferences(): 344 | 345 | tag menu 346 | 347 | # Include the navigation. 348 | use navigation 349 | 350 | # Put the navigation columns in a three-wide grid. 351 | grid 3 1: 352 | style_group "prefs" 353 | xfill True 354 | 355 | # The left column. 356 | vbox: 357 | frame: 358 | style_group "pref" 359 | has vbox 360 | 361 | label _("Display") 362 | textbutton _("Window") action Preference("display", "window") 363 | textbutton _("Fullscreen") action Preference("display", "fullscreen") 364 | 365 | frame: 366 | style_group "pref" 367 | has vbox 368 | 369 | label _("Transitions") 370 | textbutton _("All") action Preference("transitions", "all") 371 | textbutton _("None") action Preference("transitions", "none") 372 | 373 | frame: 374 | style_group "pref" 375 | has vbox 376 | 377 | label _("Text Speed") 378 | bar value Preference("text speed") 379 | 380 | frame: 381 | style_group "pref" 382 | has vbox 383 | 384 | textbutton _("Joystick...") action Preference("joystick") 385 | 386 | 387 | vbox: 388 | frame: 389 | style_group "pref" 390 | has vbox 391 | 392 | label _("Skip") 393 | textbutton _("Seen Messages") action Preference("skip", "seen") 394 | textbutton _("All Messages") action Preference("skip", "all") 395 | 396 | frame: 397 | style_group "pref" 398 | has vbox 399 | 400 | textbutton _("Begin Skipping") action Skip() 401 | 402 | frame: 403 | style_group "pref" 404 | has vbox 405 | 406 | label _("After Choices") 407 | textbutton _("Stop Skipping") action Preference("after choices", "stop") 408 | textbutton _("Keep Skipping") action Preference("after choices", "skip") 409 | 410 | frame: 411 | style_group "pref" 412 | has vbox 413 | 414 | label _("Auto-Forward Time") 415 | bar value Preference("auto-forward time") 416 | 417 | if config.has_voice: 418 | textbutton _("Wait for Voice") action Preference("wait for voice", "toggle") 419 | 420 | vbox: 421 | frame: 422 | style_group "pref" 423 | has vbox 424 | 425 | label _("Music Volume") 426 | bar value Preference("music volume") 427 | 428 | frame: 429 | style_group "pref" 430 | has vbox 431 | 432 | label _("Sound Volume") 433 | bar value Preference("sound volume") 434 | 435 | if config.sample_sound: 436 | textbutton _("Test"): 437 | action Play("sound", config.sample_sound) 438 | style "soundtest_button" 439 | 440 | if config.has_voice: 441 | frame: 442 | style_group "pref" 443 | has vbox 444 | 445 | label _("Voice Volume") 446 | bar value Preference("voice volume") 447 | 448 | textbutton _("Voice Sustain") action Preference("voice sustain", "toggle") 449 | if config.sample_voice: 450 | textbutton _("Test"): 451 | action Play("voice", config.sample_voice) 452 | style "soundtest_button" 453 | 454 | init -2: 455 | style pref_frame: 456 | xfill True 457 | xmargin 5 458 | top_margin 5 459 | 460 | style pref_vbox: 461 | xfill True 462 | 463 | style pref_button: 464 | size_group "pref" 465 | xalign 1.0 466 | 467 | style pref_slider: 468 | xmaximum 192 469 | xalign 1.0 470 | 471 | style soundtest_button: 472 | xalign 1.0 473 | 474 | 475 | ############################################################################## 476 | # Yes/No Prompt 477 | # 478 | # Screen that asks the user a yes or no question. 479 | # http://www.renpy.org/doc/html/screen_special.html#yesno-prompt 480 | 481 | screen yesno_prompt(message, yes_action, no_action): 482 | 483 | modal True 484 | 485 | window: 486 | style "gm_root" 487 | 488 | frame: 489 | style_group "yesno" 490 | 491 | xfill True 492 | xmargin .05 493 | ypos .1 494 | yanchor 0 495 | ypadding .05 496 | 497 | has vbox: 498 | xalign .5 499 | yalign .5 500 | spacing 30 501 | 502 | label _(message): 503 | xalign 0.5 504 | 505 | hbox: 506 | xalign 0.5 507 | spacing 100 508 | 509 | textbutton _("Yes") action yes_action 510 | textbutton _("No") action no_action 511 | 512 | # Right-click and escape answer "no". 513 | key "game_menu" action no_action 514 | 515 | init -2: 516 | style yesno_button: 517 | size_group "yesno" 518 | 519 | style yesno_label_text: 520 | text_align 0.5 521 | layout "subtitle" 522 | 523 | 524 | ############################################################################## 525 | # Quick Menu 526 | # 527 | # A screen that's included by the default say screen, and adds quick access to 528 | # several useful functions. 529 | screen quick_menu(): 530 | 531 | # Add an in-game quick menu. 532 | hbox: 533 | style_group "quick" 534 | 535 | xalign 1.0 536 | yalign 1.0 537 | 538 | textbutton _("Back") action Rollback() 539 | textbutton _("Save") action ShowMenu('save') 540 | textbutton _("Q.Save") action QuickSave() 541 | textbutton _("Q.Load") action QuickLoad() 542 | textbutton _("Skip") action Skip() 543 | textbutton _("F.Skip") action Skip(fast=True, confirm=True) 544 | textbutton _("Auto") action Preference("auto-forward", "toggle") 545 | textbutton _("Prefs") action ShowMenu('preferences') 546 | 547 | init -2: 548 | style quick_button: 549 | is default 550 | background None 551 | xpadding 5 552 | 553 | style quick_button_text: 554 | is default 555 | size 12 556 | idle_color "#8888" 557 | hover_color "#ccc" 558 | selected_idle_color "#cc08" 559 | selected_hover_color "#cc0" 560 | insensitive_color "#4448" 561 | 562 | -------------------------------------------------------------------------------- /game/screens.rpyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/screens.rpyc -------------------------------------------------------------------------------- /game/script.rpy: -------------------------------------------------------------------------------- 1 | define e = Character('Eileen', color="#c8ffc8") 2 | define m = Character('Me', color="#c8c8ff") 3 | image bg beached = "images/beached.jpg" 4 | image Eileen: 5 | "images/eileen.png" 6 | zoom 1.3 7 | 8 | label start: 9 | 10 | scene bg beached 11 | show Eileen 12 | 13 | e "Hey, can you go try and shoot some people for me." 14 | 15 | m "Sure I will be right back." 16 | 17 | call begin_hunt 18 | 19 | scene bg beached 20 | show Eileen 21 | 22 | if targets_hit == 0: 23 | e "You didn't hit anyone, I am going to find someone else." 24 | scene black with dissolve 25 | "and the hero died alone with no-one to love him." 26 | if targets_hit > 0: 27 | e "[targets_hit] of your shots ended up killing someone. Lets get married" 28 | scene black with dissolve 29 | "and they lived happily ever after" 30 | 31 | 32 | "Game Over" 33 | 34 | return 35 | -------------------------------------------------------------------------------- /game/script.rpyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColoradoStark/Renpy_Shooter/28342302981e67d4b248181327115ea79a8a4e0c/game/script.rpyc -------------------------------------------------------------------------------- /tmp/navigation.json: -------------------------------------------------------------------------------- 1 | {"build": {"documentation_patterns": [], "directory_name": "", "display_name": "", "destination": "-dists", "renpy": false, "allow_integrated_gpu": true, "include_update": false, "base_patterns": [["*.py", null], ["*.sh", null], ["*.app/", null], ["*.dll", null], ["*.manifest", null], ["lib/", null], ["renpy/", null], ["update/", null], ["common/", null], ["update/", null], ["icon.ico", null], ["icon.icns", null], ["project.json", null], ["log.txt", null], ["errors.txt", null], ["traceback.txt", null], ["image_cache.txt", null], ["text_overflow.txt", null], ["dialogue.txt", null], ["dialogue.tab", null], ["profile_screen.txt", null], ["tmp/", null], ["game/saves/", null], ["game/bytecode.rpyb", null], ["archived/", null], ["launcherinfo.py", null], ["android.txt", null], [".android.json", ["android"]], ["android-icon.png", ["android"]], ["android-presplash.*", ["android"]], ["android-*-icon.png", ["android"]], ["android-*-presplash.*", ["android"]], ["ouya_icon.png", ["android"]], ["ios-presplash.*", ["ios"]], [".*", null], ["**", ["all"]]], "version": "", "archives": [["archive", ["all"]]], "xbit_patterns": ["**.sh", "**/*.so.*", "**/*.so", "**/*.dylib", "**.app/Contents/MacOS/*", "lib/**/python", "lib/**/pythonw", "lib/**/zsync", "lib/**/zsyncmake"], "exclude_empty_directories": true, "renpy_patterns": [["**~", null], ["**/#*", null], ["**/.*", null], ["**.old", null], ["**.new", null], ["**.rpa", null], ["**/*.pyc", null], ["renpy.py", ["renpy"]], ["renpy/", ["all"]], ["renpy/common/", ["all"]], ["renpy/common/_compat/**", ["renpy"]], ["renpy/common/**.rpy", ["renpy"]], ["renpy/common/**.rpym", ["renpy"]], ["renpy/common/_compat/**", ["renpy"]], ["renpy/common/**", ["all"]], ["renpy/**", ["renpy"]], ["lib/*/renpy", null], ["lib/*/renpy.exe", null], ["lib/windows-i686/**", ["windows"]], ["lib/linux-x86_64/**", ["linux"]], ["lib/linux-i686/**", ["linux"]], ["lib/darwin-x86_64/**", ["mac"]], ["/lib/**", ["windows", "linux", "mac"]], ["renpy.sh", ["linux", "mac"]]], "packages": [{"dlc": false, "hidden": false, "description": "All Desktop Platforms", "formats": ["zip"], "file_lists": ["windows", "mac", "linux", "renpy", "all"], "update": true, "name": "all"}, {"dlc": false, "hidden": false, "description": "Linux x86/x86_64", "formats": ["tar.bz2"], "file_lists": ["linux", "renpy", "all"], "update": true, "name": "linux"}, {"dlc": false, "hidden": false, "description": "Macintosh x86", "formats": ["app-zip"], "file_lists": ["mac", "renpy", "all"], "update": true, "name": "mac"}, {"dlc": false, "hidden": false, "description": "Windows x86", "formats": ["zip"], "file_lists": ["windows", "renpy", "all"], "update": true, "name": "win"}, {"dlc": true, "hidden": true, "description": "android", "formats": ["directory"], "file_lists": ["android", "renpy", "all"], "update": false, "name": "android"}, {"dlc": true, "hidden": true, "description": "ios", "formats": ["directory"], "file_lists": ["ios", "renpy", "all"], "update": false, "name": "ios"}], "executable_name": ""}, "location": {"callable": {}, "screen": {"load": ["game/screens.rpy", 321], "save": ["game/screens.rpy", 313], "preferences": ["game/screens.rpy", 343], "yesno_prompt": ["game/screens.rpy", 481], "choice": ["game/screens.rpy", 67], "say": ["game/screens.rpy", 13], "file_picker": ["game/screens.rpy", 254], "input": ["game/screens.rpy", 110], "main_menu": ["game/screens.rpy", 177], "nvl": ["game/screens.rpy", 126], "navigation": ["game/screens.rpy", 214], "quick_menu": ["game/screens.rpy", 529]}, "define": {"m": ["game/script.rpy", 2], "e": ["game/script.rpy", 1]}, "transform": {"moving_target": ["game/hunt/hunt.rpy", 5]}, "label": {"start": ["game/script.rpy", 8], "hunting": ["game/hunt/hunt.rpy", 18], "begin_hunt": ["game/hunt/hunt.rpy", 11]}}, "error": false} --------------------------------------------------------------------------------