mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			1424 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1424 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ###     Demo Script Example     ###
 | |
| 
 | |
| # This script, but not the artwork associated with it, is in the
 | |
| # public domain. Feel free to use it as the basis for your own
 | |
| # game.
 | |
| 
 | |
| # If you're trying to understand this script, I recommend skipping
 | |
| # down to the line beginning with 'label start:', at least on your
 | |
| # first read-through.
 | |
| 
 | |
| # This init block runs first, and sets up all sorts of things that
 | |
| # are used by the rest of the game. Variables that are set in init
 | |
| # blocks are _not_ saved, unless they are changed later on in the
 | |
| # program.
 | |
| 
 | |
| init:
 | |
| 
 | |
|     # Set up the size of the screen, and the window title.
 | |
|     $ config.screen_width = 800
 | |
|     $ config.screen_height = 600
 | |
|     $ config.window_title = "The Ren'Py Demo Game"
 | |
| 
 | |
|     # Declare the images that are used in the program.
 | |
| 
 | |
|     # Backgrounds.
 | |
|     image bg carillon = "carillon.jpg"
 | |
|     image bg whitehouse = "whitehouse.jpg"
 | |
|     image bg washington = "washington.jpg"
 | |
|     image bg onememorial = "1memorial.jpg"
 | |
|     image black = Solid((0, 0, 0, 255))
 | |
| 
 | |
|     # Character pictures.
 | |
|     image eileen happy = "9a_happy.png"
 | |
|     image eileen vhappy = "9a_vhappy.png"
 | |
|     image eileen concerned = "9a_concerned.png"
 | |
| 
 | |
|     # A character object. This object lets us have the character say
 | |
|     # dialogue without us having to repeatedly type her name. It also
 | |
|     # lets us change the color of her name.
 | |
| 
 | |
|     $ e = Character('Eileen', color=(200, 255, 200, 255))
 | |
| 
 | |
| # The start label marks the place where the main menu jumps to to
 | |
| # begin the actual game.
 | |
| 
 | |
| label start:
 | |
| 
 | |
|     # The save_name variable sets the name of the save game. Like all
 | |
|     # variables declared outside of init blocks, this variable is
 | |
|     # saved and restored with a save file.
 | |
|     $ save_name = "Introduction"
 | |
| 
 | |
|     # This variable is only used by our game. If it's true, it means
 | |
|     # that we won the date.
 | |
|     $ date = False
 | |
| 
 | |
|     # Clear the game runtime timer, so it doesn't reflect time spent
 | |
|     # sitting at the main menu.
 | |
|     $ renpy.clear_game_runtime()
 | |
| 
 | |
|     # Start some music playing in the background.
 | |
|     $ renpy.music_start('sun-flower-slow-drag.mid')
 | |
| 
 | |
|     # Now, set up the first scene. We first fade in our washington
 | |
|     # background, and then we dissolve in the image of Eileen on top
 | |
|     # of it.
 | |
|     scene bg washington with fade
 | |
|     show eileen vhappy with dissolve
 | |
| 
 | |
|     # Store the current version of Ren'Py into a variable, so we can
 | |
|     # interpolate it into the next line.
 | |
|     $ version = renpy.version()
 | |
| 
 | |
|     # Display a line of dialogue. In this case, we manually specify
 | |
|     # who's saying the line of dialogue. We also interpolate in the
 | |
|     # version of Ren'Py we're using.
 | |
|     "Girl" "Hi, and welcome to the %(version)s demo program."
 | |
| 
 | |
|     # This instantly replaces the very happy picture of Eileen with
 | |
|     # one showing her merely happy. It demonstrates how the show
 | |
|     # statement lets characters change emotions.
 | |
|     show eileen happy
 | |
| 
 | |
|     # Another line of dialogue.
 | |
|     "Girl" "My name is Eileen, and while I plan to one day star in a
 | |
|             real game, for now I'm here to tell you about Ren'Py."
 | |
| 
 | |
|     # This line used the e character object, which displays Eileen's
 | |
|     # name in green. The use of a short name for a character object
 | |
|     # lets us save typing when writing the bulk of the dialogue.
 | |
|     e "Ren'Py is a language and engine for writing and playing visual
 | |
|        novel games."
 | |
| 
 | |
|     e "Our goal is to allow people to be able to write the script for
 | |
|        a game, and with very little effort, turn that script into
 | |
|        a working game."
 | |
| 
 | |
|     e "I can tell you about the features of Ren'Py games, or how to write
 | |
|        your own game. What do you want to know about?"
 | |
| 
 | |
|     # This variable is used to save the choices that have been made in
 | |
|     # the main menu.
 | |
|     $ seen_set = [ ]
 | |
| 
 | |
| label choices:
 | |
| 
 | |
|     # We change the save name here.
 | |
|     $ save_name = "Question Menu"
 | |
| 
 | |
|     # This is the main menu, that lets the user decide what he wants
 | |
|     # to hear about.
 | |
|     menu:
 | |
| 
 | |
|         # The set menu clause ensures that each menu choice can only
 | |
|         # be chosen once.
 | |
|         set seen_set
 | |
| 
 | |
|         # This is a menu choice. When chosen, the statements in its
 | |
|         # block are executed.
 | |
|         "What are some user-visible features of Ren'Py games?":
 | |
| 
 | |
|             # We call the features label. The from clause needs to be
 | |
|             # here to ensure that save games work, even after we
 | |
|             # change the script. It was added automatically.
 | |
|             call features from _call_features_1
 | |
| 
 | |
|             # When we're done talking about features, jump back up
 | |
|             # to choices.
 | |
|             jump choices
 | |
| 
 | |
|         # Another choice.
 | |
|         "How do I write my own games with it?":
 | |
|             call writing from _call_writing_1
 | |
|             jump choices
 | |
| 
 | |
|         "Can you demonstrate more features to me?":
 | |
|             call demonstrate from _call_demonstrate_1
 | |
|             jump choices
 | |
| 
 | |
|         # This choice has a condition associated with it. It is only
 | |
|         # displayed if the condition is true (in this case, if we have
 | |
|         # selected at least one other choice has been chosen.)
 | |
|         "Where can I find out more?" if seen_set:
 | |
|             call find_out_more from _call_find_out_more_1
 | |
|             jump choices
 | |
| 
 | |
|         "Why are we in Washington, DC?":
 | |
|             call washington from _call_washington_1
 | |
|             jump choices
 | |
| 
 | |
|         "I think I've heard enough." if seen_set:
 | |
|             jump ending
 | |
| 
 | |
| 
 | |
| # This is the section on writing games.
 | |
| label writing:
 | |
| 
 | |
|     # Change the title of the save games.
 | |
|     $ save_name = "Writing Games"
 | |
| 
 | |
|     # We start off with a bunch of dialogue.
 | |
|     e "If you want to write a game, we recommend that you read the
 | |
|        Ren'Py reference, which you can get from our web page,
 | |
|        http://www.bishoujo.us/renpy/."
 | |
| 
 | |
|     e "But here, we'll go over some of the basics of writing Ren'Py
 | |
|        scripts. It might make sense if you open the source for this
 | |
|        game."
 | |
| 
 | |
|     e "The source for this game can be found in the file
 | |
|        game/script.rpy."
 | |
| 
 | |
|     e "The goal of Ren'Py is to make writing the game similar to
 | |
|        typing up the script on the computer."
 | |
| 
 | |
|     e "For example, a line of dialogue is expressed by putting the
 | |
|        character's name next to the dialogue string."
 | |
| 
 | |
|     # A string by itself like this displays without a name associated
 | |
|     # with it. So it's useful for dialogue and narration.
 | |
|     "I somehow remember that strings by themselves are displayed as
 | |
|      thoughts or narration."
 | |
| 
 | |
|     e "The menu statement makes it easy to create menus."
 | |
| 
 | |
|     e "A number of statements let you control what is shown on the
 | |
|        screen."
 | |
| 
 | |
|     # This scene statement has a with clause associated with it. In
 | |
|     # this case (based on what is defined in the init clause at the
 | |
|     # top of this script), it causes a fade to black, and then back
 | |
|     # to the new scene.
 | |
|     scene bg whitehouse with fade
 | |
| 
 | |
|     e "The scene statement clears the scene list, which is the list of
 | |
|        things that are shown on the screen."
 | |
| 
 | |
|     # This shows an image, and dissolves it in.
 | |
|     show eileen happy with dissolve
 | |
| 
 | |
|     e "The show statement shows another image on the screen."
 | |
| 
 | |
|     # The at clause here, displays the character on the left side of
 | |
|     # the screen. The with clause causes us to slide from the old
 | |
|     # position to the new position.
 | |
|     show eileen happy at left with move
 | |
| 
 | |
|     e "Images can take at clauses that specify where on the screen
 | |
|        they are shown."
 | |
| 
 | |
|     show eileen vhappy at left
 | |
| 
 | |
|     e "Showing a new image with the same first part of the name
 | |
|        replaces the image in the scene list."
 | |
| 
 | |
|     hide eileen with dissolve
 | |
| 
 | |
|     e "Finally, the hide statement hides an image, which is useful
 | |
|        when a character leaves the scene."
 | |
| 
 | |
|     show eileen happy with dissolve
 | |
| 
 | |
|     e "Don't worry, I'm not going anywhere."
 | |
| 
 | |
|     e "The with statement is used to cause transitions to
 | |
|        happen. Transitions like fade..."
 | |
| 
 | |
|     # This statement hides the transient stuff from being included
 | |
|     # in the next fade.
 | |
|     with None
 | |
| 
 | |
|     # This with statement causes things to fade without changing the
 | |
|     # scene.
 | |
|     with fade
 | |
| 
 | |
|     e "... or dissolve ..."
 | |
| 
 | |
|     # In this block, the scene statement clears the scene list. So we
 | |
|     # have to reshow the eileen happy image, so that it appears that
 | |
|     # just the background is dissolving. Sneaky.
 | |
|     with None
 | |
|     scene bg washington
 | |
|     show eileen happy
 | |
|     with dissolve
 | |
| 
 | |
|     e "... are easily invoked."
 | |
| 
 | |
|     e "We now provide a series of user-interface functions, that allow
 | |
|        the programmer to create fairly complex interfaces."
 | |
| 
 | |
|     e "Ren'Py also includes a number of control statements, and even
 | |
|        lets you include python code."
 | |
| 
 | |
|     e "Rather than go into this here, you can read all about it in the
 | |
|        reference."
 | |
| 
 | |
|     e "You can see a number of features in action by asking me to
 | |
|        demonstrate them at the next menu."
 | |
| 
 | |
|     e "If you want to make changes, you can edit the script for this
 | |
|        game by editing game/script.rpy"
 | |
| 
 | |
|     e "When you've made a change, just re-run the game to see your
 | |
|        change in action."
 | |
| 
 | |
|     e "Would you like to know about something else?"
 | |
| 
 | |
|     # We return back up to the menu that lets the user pick a topic.
 | |
|     return
 | |
| 
 | |
| # This ends the well-commented portion of this script.
 | |
| 
 | |
| label features:
 | |
| 
 | |
|     $ save_name = "Features"
 | |
| 
 | |
|     e "Ren'Py provides a number of gameplay features, giving the user
 | |
|        a good experience while freeing up the game author to write his
 | |
|        game."
 | |
| 
 | |
|     e "What are some of these features? Well, first of all, we take
 | |
|        care of displaying the screen, as well as dialogue and menus."
 | |
| 
 | |
|     e "You can navigate through the game using the keyboard or the
 | |
|        mouse. If you've gotten this far, you've probably figured that
 | |
|        out already."
 | |
| 
 | |
|     e "Right-clicking or pressing escape will bring you to the game
 | |
|        menu."
 | |
| 
 | |
|     e "The game menu lets you save or load the game. Ren'Py doesn't
 | |
|        limit the number of save slots available. You can create as
 | |
|        many slots as you can stand."
 | |
| 
 | |
|     e "A preferences screen on the game menu lets you change the
 | |
|        fullscreen mode, control skipping, text speed, and
 | |
|        transitions, and turn sound and music on and off."
 | |
| 
 | |
|     e "The game menu also lets you restart or quit the game. But you
 | |
|        wouldn't want to do that, would you?"
 | |
| 
 | |
|     e "Finally, the game menu lets you set up the game
 | |
|        preferences. These preferences are saved between games."
 | |
| 
 | |
|     show eileen vhappy
 | |
| 
 | |
|     e "The next feature is really neat."
 | |
| 
 | |
|     show eileen happy
 | |
| 
 | |
|     menu rollback_menu:
 | |
|         "Would you like to hear about rollback?"
 | |
| 
 | |
|         "Yes.":
 | |
|             pass
 | |
| 
 | |
|         "No.":
 | |
|             jump after_rollback
 | |
| 
 | |
| 
 | |
|     e "Rollback is a feature that only Ren'Py has. It lets you go back
 | |
|        in time in a game."
 | |
| 
 | |
|     e "For example, you can go back to a menu and save or make a
 | |
|        different choice."
 | |
| 
 | |
|     e "You can access it by pressing page up or scrolling up on your
 | |
|        mouse wheel."
 | |
| 
 | |
|     e "Why don't you try it by going back to the last menu and
 | |
|        choosing 'No.' instead of 'Yes.'"
 | |
| 
 | |
|     e "Press page up or scroll up the mouse wheel."
 | |
| 
 | |
|     show eileen concerned
 | |
| 
 | |
|     e "Well, are you going to try it?"
 | |
| 
 | |
|     e "Your loss."
 | |
| 
 | |
|     e "Moving on."
 | |
| 
 | |
| label after_rollback:
 | |
| 
 | |
|     show eileen happy
 | |
| 
 | |
|     e "Ren'Py gives you a few ways of skipping dialogue. Pressing
 | |
|        control quickly skips dialogue you've seen at least once."
 | |
| 
 | |
|     e "Pressing Tab toggles the skipping of dialogue you've seen at
 | |
|        least once."
 | |
| 
 | |
|     e "Pressing page down or scrolling the mouse wheel down will let
 | |
|        you skip dialogue you've seen this session. This is useful
 | |
|        after a rollback."
 | |
| 
 | |
|     e "If you want to try these, you might want to rollback a bit
 | |
|        first, so you can skip over something you've seen already."
 | |
| 
 | |
|     e "Finally, Ren'Py has predictive image loading, so you rarely
 | |
|        have to wait for a new image to load."
 | |
| 
 | |
|     e "Remember, all these features are built into the engine or
 | |
|        standard library. So every game written with Ren'Py has them."
 | |
| 
 | |
|     e "Is there anything else you'd like to know about?"
 | |
| 
 | |
|     return
 | |
| 
 | |
| 
 | |
| label find_out_more:
 | |
| 
 | |
|     $ save_name = "Find Out More"
 | |
| 
 | |
|     e "There are a few places you can go to find out more about
 | |
|        Ren'Py."
 | |
| 
 | |
|     e "The Ren'Py homepage, http://www.bishoujo.us/renpy/, is probably
 | |
|        the best place to start."
 | |
| 
 | |
|     e "There, you can download new versions of Ren'Py, and read the
 | |
|        tutorial online."
 | |
| 
 | |
|     e "If you have questions, the best place to ask them is the Ren'Py
 | |
|        forum of the Lemmasoft forums."
 | |
| 
 | |
|     e "Just go to http://lemmasoft.renai.us/forums/, and click on
 | |
|        Ren'Py."
 | |
| 
 | |
|     e "We thank Blue Lemma for hosting our forum."
 | |
| 
 | |
|     e "Finally, feel free to email or IM us if you need help. You can
 | |
|        get the addresses to use from http://www.bishoujo.us/renpy/."
 | |
| 
 | |
|     e "We really want people to make their own games with Ren'Py, and
 | |
|        if there's anything we can do to help, just tell us."
 | |
| 
 | |
|     e "Is there anything I can help you with now?"
 | |
| 
 | |
|     return
 | |
| 
 | |
| label washington:
 | |
| 
 | |
|     $ save_name = "Washington, DC"
 | |
| 
 | |
|     e "We're in Washington, DC because over Summer 2004 American
 | |
|        Bishoujo's home base was just outside of DC."
 | |
| 
 | |
|     scene bg whitehouse
 | |
|     show eileen happy at left
 | |
|     with fade
 | |
| 
 | |
|     e "Even though we've moved back to New York, we took a bunch of
 | |
|        pictures, and decided to use them."
 | |
| 
 | |
|     show eileen concerned at left
 | |
| 
 | |
|     e "It was easier than drawing new pictures for this demo."
 | |
| 
 | |
|     show eileen happy at left
 | |
| 
 | |
|     e "Do you have a favorite landmark in or around DC?"
 | |
| 
 | |
|     menu:
 | |
| 
 | |
|         "The White House.":
 | |
| 
 | |
|             e "I was supposed to go on a tour of the West Wing, once."
 | |
| 
 | |
|             show eileen concerned
 | |
| 
 | |
|             e "They wouldn't let us in."
 | |
| 
 | |
|             e "The secret service guy who was supposed to show us
 | |
|                around was out of town that day."
 | |
| 
 | |
|             e "Too bad."
 | |
| 
 | |
|         "The National Mall.":
 | |
| 
 | |
|             e "It's always fun to go down to the national mall."
 | |
| 
 | |
|             e "You can visit the monuments, or see one of the
 | |
|                museums."
 | |
| 
 | |
|             e "I guess you could run out of things to do after a while
 | |
|                but I didn't over the course of a summer."
 | |
| 
 | |
|         "The Netherlands Carillon.":
 | |
|             jump netherlands
 | |
| 
 | |
|     jump post_netherlands
 | |
| 
 | |
| label netherlands:
 | |
| 
 | |
|     show eileen vhappy at left
 | |
| 
 | |
|     e "You've been to the Netherlands Carillon?"
 | |
| 
 | |
|     scene bg carillon
 | |
|     show eileen vhappy at left
 | |
|     with dissolve
 | |
| 
 | |
|     e "It may not be much to look at but the sound of the bells is
 | |
|        really neat."
 | |
| 
 | |
|     e "I love going there. Saturdays during the summer, they have
 | |
|        these recitals in the park where a guy comes and plays the
 | |
|        bells live."
 | |
| 
 | |
|     e "You can climb to the top and talk to him, if you're not afraid
 | |
|        of heights."
 | |
| 
 | |
|     e "Once, I saw a little girl there, maybe three or four years old.
 | |
|        The guy played the bumblebee song for here, and he even let her play the last
 | |
|        note. It was so cute!"
 | |
| 
 | |
|     e "I haven't been there for so long."
 | |
| 
 | |
|     menu:
 | |
|         "Would you like to go there sometime?":
 | |
| 
 | |
|             e "You mean, together?"
 | |
| 
 | |
|             e "Sure, why not. How does next Saturday sound?"
 | |
| 
 | |
|             e "It's a date."
 | |
| 
 | |
|             $ date = True
 | |
| 
 | |
|         "That sounds nice.":
 | |
| 
 | |
|             show eileen happy at left
 | |
| 
 | |
|             e "Well, it is."
 | |
| 
 | |
| label post_netherlands:
 | |
| 
 | |
|     scene bg washington
 | |
|     show eileen happy
 | |
|     with fade
 | |
| 
 | |
|     e "Anyway, is there anything else you want to know about Ren'Py?"
 | |
| 
 | |
|     return
 | |
| 
 | |
| label ending:
 | |
| 
 | |
|     $ save_name = "Ending"
 | |
| 
 | |
|     e "Well, that's okay."
 | |
| 
 | |
|     e "I hope you'll consider using Ren'Py for your next game
 | |
|        project."
 | |
| 
 | |
|     show eileen vhappy
 | |
| 
 | |
|     e "Thanks for viewing this demo!"
 | |
| 
 | |
|     if date:
 | |
|         e "And I'll see you on Saturday."
 | |
| 
 | |
|     scene black with dissolve
 | |
| 
 | |
|     "Ren'Py and the Ren'Py demo were written by PyTom."
 | |
| 
 | |
|     'The background music is "Sun Flower Slow Drag" by S. Joplin
 | |
|      (1868-1917). Thanks to the Mutopia project for making it
 | |
|        available.'
 | |
| 
 | |
|     'The author would like to thank everyone who makes original
 | |
|      English-language bishoujo games, and the people on the Lemmasoft forums
 | |
|      who encouraged him.'
 | |
| 
 | |
|     "We can't wait to see what you do with this. Good luck!"
 | |
| 
 | |
|     $ minutes, seconds = divmod(int(renpy.get_game_runtime()), 60)
 | |
|     "It took you %(minutes)d minutes and %(seconds)d seconds to
 | |
|      finish this demo."
 | |
| 
 | |
|     $ renpy.full_restart()
 | |
| 
 | |
| 
 | |
| label speedtest:
 | |
| 
 | |
|     with None
 | |
|     scene bg whitehouse
 | |
|     show eileen happy
 | |
|     with dissolve
 | |
| 
 | |
|     e "Okay, I'm going to run the speedtest on your system."
 | |
| 
 | |
|     e "I'll only be testing the performance of the dissolve
 | |
|        transition. It taxes your system the most, as it needs to
 | |
|        redraw the entire screen each frame."
 | |
| 
 | |
|     $ frames = config.frames
 | |
| 
 | |
|     with None
 | |
|     scene bg washington
 | |
|     show eileen happy
 | |
|     with Dissolve(5.0)
 | |
| 
 | |
|     $ frames = config.frames - frames
 | |
|     $ fps = frames / 5.0
 | |
| 
 | |
|     e "Well, your system displayed %(frames)d frames in five
 | |
|        seconds. That's %(fps).1f fps."
 | |
| 
 | |
|     e "Remember, this is the worst-case speed, as usually we can just
 | |
|        draw the parts of the screen that have changed."
 | |
| 
 | |
|     e "Thanks for viewing the secret speed test."
 | |
| 
 | |
|     return
 | |
| 
 | |
| # Setup the secret key for the speedtest.
 | |
| init:
 | |
|     python:
 | |
|         config.keymap['speedtest'] = [ 'S' ]
 | |
|         config.underlay.append(renpy.Keymap(speedtest=renpy.curried_call_in_new_context('speedtest')))
 | |
| 
 | |
| 
 | |
| init:
 | |
| 
 | |
|     # This is just some example code to show the ui functions in
 | |
|     # action. You probably want to delete this (and the call to
 | |
|     # day_planner above) from your game. This code isn't really all
 | |
|     # that useful except as an example.
 | |
| 
 | |
|     python:
 | |
|         def day_planner():
 | |
| 
 | |
|             periods = [ 'Morning', 'Afternoon', 'Evening' ]
 | |
|             choices = [ 'Study', 'Exercise',
 | |
|                         'Eat', 'Drink', 'Be Merry' ]
 | |
| 
 | |
|             plan = { 'Morning' : 'Eat',
 | |
|                      'Afternoon' : 'Drink',
 | |
|                      'Evening' : 'Be Merry' }
 | |
| 
 | |
|             day = 'March 25th'
 | |
| 
 | |
|             stats = [
 | |
|                 ('Strength', 100, 10),
 | |
|                 ('Intelligence', 100, 25),
 | |
|                 ('Moxie', 100, 100),
 | |
|                 ('Chutzpah', 100, 75),
 | |
|                 ]
 | |
| 
 | |
|             editing = None
 | |
| 
 | |
|             def button(text, selected, returns, **properties):
 | |
|                 style = 'button'
 | |
|                 style_text = 'button_text'
 | |
| 
 | |
|                 if selected:
 | |
|                     style='selected_button'
 | |
|                     style_text='selected_button_text'
 | |
| 
 | |
|                 ui.button(clicked=ui.returns(returns),
 | |
|                           style=style, **properties)
 | |
|                 ui.text(text, style=style_text)
 | |
| 
 | |
| 
 | |
|             while True:
 | |
| 
 | |
|                 # Stats Window
 | |
|                 ui.window(xpos=0,
 | |
|                           ypos=0,
 | |
|                           xanchor='left',
 | |
|                           yanchor='top',
 | |
|                           xfill=True,
 | |
|                           yminimum=200,
 | |
|                           )
 | |
| 
 | |
|                 ui.vbox()
 | |
| 
 | |
|                 ui.text('Statistics')
 | |
|                 ui.null(height=20)
 | |
| 
 | |
|                 for name, range, value in stats:
 | |
| 
 | |
|                     ui.hbox()
 | |
|                     ui.text(name, minwidth=150)
 | |
|                     ui.bar(600, 22, range, value, ypos=0.5, yanchor='center')
 | |
|                     ui.close()
 | |
| 
 | |
|                 ui.close()
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|                 # Period Selection Window.
 | |
|                 ui.window(xpos=0,
 | |
|                           ypos=200,
 | |
|                           xanchor='left',
 | |
|                           yanchor='top',
 | |
|                           xfill=False,
 | |
|                           xminimum=300
 | |
|                           )
 | |
| 
 | |
|                 ui.vbox(xpos=0.5, xanchor='center')
 | |
|                 ui.text(day, xpos=0.5, xanchor='center', textalign=0.5)
 | |
|                 ui.null(height=20)
 | |
| 
 | |
|                 for i in periods:
 | |
|                     face = i + ": " + plan[i]
 | |
|                     button(face, editing == i, ("edit", i))
 | |
| 
 | |
|                 ui.null(height=20)
 | |
|                 ui.textbutton("Continue", clicked=ui.returns(("done", True)))
 | |
|                 ui.null(height=20)
 | |
|                 ui.close()
 | |
| 
 | |
| 
 | |
|                 # Choice window.
 | |
|                 if editing:
 | |
|                     ui.window(xpos=300,
 | |
|                               ypos=200,
 | |
|                               xanchor='left',
 | |
|                               yanchor='top',
 | |
|                               xfill=False,
 | |
|                               xminimum=500
 | |
|                               )
 | |
| 
 | |
|                     ui.vbox()
 | |
|                     ui.text("What will you do in the %s?" % editing.lower())
 | |
|                     ui.null(height=20)
 | |
| 
 | |
|                     for i in choices:
 | |
|                         button(i, plan[editing] == i, ("set", i),
 | |
|                                xpos=0, xanchor='left')
 | |
| 
 | |
|                     ui.close()
 | |
| 
 | |
|                 # Window at the bottom.
 | |
|                 ui.window()
 | |
|                 ui.vbox()
 | |
|                 ui.text("To get to the next screen, click the 'Continue' button.")
 | |
|                 ui.close()
 | |
| 
 | |
|                 type, value = ui.interact()
 | |
| 
 | |
|                 if type == "done":
 | |
|                     break
 | |
| 
 | |
|                 if type == "edit":
 | |
|                     editing = value
 | |
| 
 | |
|                 if type == "set":
 | |
|                     plan[editing] = value
 | |
|                     editing = None
 | |
| 
 | |
|             return plan
 | |
| 
 | |
| init:
 | |
|     image movie = Movie()
 | |
| 
 | |
|     python:
 | |
|         povname = ""
 | |
|         pov = DynamicCharacter("povname", color=(255, 0, 0, 255))
 | |
| 
 | |
|     $ ectc = Character('Eileen', color=(200, 255, 200, 255),
 | |
|                        ctc = anim.Blink("arrow.png"))
 | |
| 
 | |
|     $ ectcf = Character('Eileen', color=(200, 255, 200, 255),
 | |
|                         ctc = anim.Blink("arrow.png", xpos=760, ypos=560),
 | |
|                         ctc_position="fixed")
 | |
| 
 | |
|     image eileen animated = Animation(
 | |
|         "9a_vhappy.png", 1.0,
 | |
|         "9a_happy.png", 1.0)
 | |
| 
 | |
|     image smanim = anim.SMAnimation(
 | |
|         "r",
 | |
|         anim.State("r", Solid((255, 0, 0, 255))),
 | |
|         anim.State("g", Solid((0, 255, 0, 255))),
 | |
|         anim.State("b", Solid((0, 0, 255, 255))),
 | |
| 
 | |
|         anim.Edge("r", .5, "g", dissolve),
 | |
|         anim.Edge("r", .5, "b", dissolve),
 | |
| 
 | |
|         anim.Edge("g", .5, "r", dissolve),
 | |
|         anim.Edge("g", .5, "b", dissolve),
 | |
| 
 | |
|         anim.Edge("b", .5, "r", dissolve),
 | |
|         anim.Edge("b", .5, "g", dissolve),
 | |
|         )
 | |
| 
 | |
|     image cyan base = Image("cyan.png")
 | |
| 
 | |
|     image cyan crop = im.Crop("cyan.png", 100, 0, 100, 200)
 | |
| 
 | |
|     image cyan composite = im.Composite((200, 300),
 | |
|                                         (0, 0), "cyan.png",
 | |
|                                         (0, 50), "cyan.png",
 | |
|                                         (0, 100), "cyan.png")
 | |
| 
 | |
|     image cyan green = im.Map("cyan.png", bmap=im.ramp(0, 0))
 | |
| 
 | |
|     image cyan alpha = im.Alpha("cyan.png", 0.5)
 | |
|     image eileen alpha = im.Alpha("9a_happy.png", 0.5)
 | |
| 
 | |
|     $ cyanpos = Position(xpos=700, xanchor='right', ypos=100, yanchor='top')
 | |
| 
 | |
| init:
 | |
| 
 | |
|     $ slowcirciris = ImageDissolve("circiris.png", 5.0, 8)
 | |
|     $ circirisout = ImageDissolve("circiris.png", 1.0, 8)
 | |
|     $ circirisin = ImageDissolve("circiris.png", 1.0, 8, reverse=True)
 | |
|     $ demotrans = ImageDissolve("demotrans.png", 3.0, 128)
 | |
| 
 | |
|     image circiris = "circiris.png"
 | |
| 
 | |
| label demonstrate:
 | |
| 
 | |
|     scene bg washington
 | |
|     show eileen happy
 | |
| 
 | |
|     e "I can give you a demonstration of some of the features in
 | |
|        Ren'Py, but you'll have to tell me what it is you'd like to
 | |
|        have demonstrated."
 | |
| 
 | |
|     menu demo_menu:
 | |
| 
 | |
|         "Simple transitions, updated in 4.8.5":
 | |
| 
 | |
|             e "Okay, I can tell you about simple transitions. We call
 | |
|                them simple because they aren't that flexible."
 | |
| 
 | |
|             e "But don't let that get you down, since they're the
 | |
|                transitions you'll probably use the most."
 | |
| 
 | |
|             with None
 | |
|             scene bg whitehouse
 | |
|             show eileen happy
 | |
|             with dissolve
 | |
| 
 | |
|             e "The dissolve transition is probably the most useful,
 | |
|                blending one scene into another."
 | |
| 
 | |
|             with None
 | |
|             with fade
 | |
| 
 | |
|             e "The fade transition fades to black, and then fades back
 | |
|                in to the new scene."
 | |
| 
 | |
|             e "If you're going to stay at a black screen, you'll
 | |
|                probably want to use dissolve rather than fade."
 | |
| 
 | |
|             with None
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with pixellate
 | |
| 
 | |
|             e "The pixellate transition pixellates out the old scene,
 | |
|                switches to the new scene, and then unpixellates that."
 | |
| 
 | |
|             e "It's probably not appropriate for most games, but we
 | |
|                think it's kind of neat."
 | |
| 
 | |
|             e "Finally, we can point out that motions can be used as
 | |
|                transitions."
 | |
| 
 | |
|             "..."
 | |
| 
 | |
|             "......"
 | |
| 
 | |
|             $ renpy.play('punch.wav')
 | |
|             with vpunch
 | |
| 
 | |
|             e "Hey! Pay attention."
 | |
| 
 | |
|             e "I was about to demonstrate vpunch... well, I guess I just
 | |
|                did."
 | |
| 
 | |
|             $ renpy.play('punch.wav')
 | |
|             with hpunch
 | |
| 
 | |
|             e "We can also shake the screen horizontally, with hpunch."
 | |
| 
 | |
|         "ImageDissolve transitions, added in 4.8.7.":
 | |
| 
 | |
|             e "ImageDissolve allows us to have dissolve transitions that are
 | |
|                controlled by images."
 | |
| 
 | |
|             e "This lets us specify very complex transitions, fairly
 | |
|                simply."
 | |
| 
 | |
|             e "Let's try some, and then I'll show how they work."
 | |
| 
 | |
|             e "There are two ImageDissolve transitions present by
 | |
|                default in the standard library."
 | |
| 
 | |
|             scene black with blinds
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with blinds
 | |
| 
 | |
|             e "The blinds transition opens and closes what looks like
 | |
|                vertical blinds."
 | |
| 
 | |
|             scene black with squares
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with squares
 | |
| 
 | |
|             e "The squares transition uses these squares to show
 | |
|                things."
 | |
| 
 | |
|             e "I'm not sure why anyone would want to use it, but it
 | |
|                was used in some translated games, so we added it."
 | |
| 
 | |
|             e "There are also a few transitions that aren't in the
 | |
|                standard library."
 | |
| 
 | |
|             e "These ones require images the size of the screen, and
 | |
|                so we couldn't include them as the size of the screen
 | |
|                can change from game to game."
 | |
| 
 | |
|             e "You can find them defined in the source of the demo
 | |
|                script."
 | |
| 
 | |
|             scene black with circirisin
 | |
| 
 | |
|             e "We can hide things with a circirisin..."
 | |
| 
 | |
|             with None
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with circirisout
 | |
| 
 | |
|             e "... and show them again with a circirisout."
 | |
| 
 | |
|             e "It's even possible to have weird custom transitions."
 | |
| 
 | |
|             scene circiris with demotrans
 | |
| 
 | |
|             e "What we're showing here is the picture that's used in
 | |
|                the circiris transitions."
 | |
| 
 | |
|             e "If you take a look, the center of it is white, while
 | |
|                the edges are darker."
 | |
| 
 | |
|             e "When we use an ImageDissolve, the white will dissolve
 | |
|                in first, followed by progressively darker colors."
 | |
| 
 | |
|             e "Let's try it."
 | |
| 
 | |
|             with None
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with slowcirciris
 | |
| 
 | |
| 
 | |
|             e "It's also possible to reverse the transition, so that
 | |
|                the black pixels are dissolved in first."
 | |
| 
 | |
|         "CropMove transitions, added in 4.5.":
 | |
| 
 | |
|             e "The CropMove transition class lets us provide a wide
 | |
|                range of transition effects."
 | |
| 
 | |
|             hide eileen with dissolve
 | |
| 
 | |
|             e "I'll stand offscreen, so you can see some of its modes. I'll read
 | |
|                out the mode name after each transition."
 | |
| 
 | |
|             scene bg whitehouse with wiperight
 | |
| 
 | |
|             e "We first have wiperight..."
 | |
| 
 | |
|             scene bg washington with wipeleft
 | |
| 
 | |
|             e "...followed by wipeleft... "
 | |
| 
 | |
|             scene bg whitehouse with wipeup
 | |
| 
 | |
|             e "...wipeup..."
 | |
| 
 | |
|             scene bg washington with wipedown
 | |
| 
 | |
|             e "...and wipedown."
 | |
| 
 | |
|             e "Next, the slides."
 | |
| 
 | |
|             scene bg whitehouse with slideright
 | |
| 
 | |
|             e "Slideright..."
 | |
| 
 | |
|             scene bg washington with slideleft
 | |
| 
 | |
|             e "...slideleft..."
 | |
| 
 | |
|             scene bg whitehouse with slideup
 | |
| 
 | |
|             e "...slideup..."
 | |
| 
 | |
|             scene bg washington with slidedown
 | |
| 
 | |
|             e "and slidedown."
 | |
| 
 | |
|             e "While the slide transitions slide in the new scene, the
 | |
|                slideaways slide out the old scene."
 | |
| 
 | |
|             scene bg whitehouse with slideawayright
 | |
| 
 | |
|             e "Slideawayright..."
 | |
| 
 | |
|             scene bg washington with slideawayleft
 | |
| 
 | |
|             e "...slideawayleft..."
 | |
| 
 | |
|             scene bg whitehouse with slideawayup
 | |
| 
 | |
|             e "...slideawayup..."
 | |
| 
 | |
|             scene bg washington with slideawaydown
 | |
| 
 | |
|             e "and slideawaydown."
 | |
| 
 | |
|             e "We also have a couple of transitions that use a
 | |
|                rectangular iris."
 | |
| 
 | |
|             scene bg whitehouse with irisout
 | |
| 
 | |
|             e "There's irisout..."
 | |
| 
 | |
|             with None
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with irisin
 | |
| 
 | |
|             e "... and irisin."
 | |
| 
 | |
|             e "It's enough to make you feel a bit dizzy."
 | |
| 
 | |
|         "Positions and movement, updated in 4.8.":
 | |
| 
 | |
|             e "I'm not stuck standing in the middle of the screen,
 | |
|                even though I like being the center of attention."
 | |
| 
 | |
|             e "Positions, given with an at clause, specify where I'm
 | |
|                standing."
 | |
| 
 | |
|             e "The move transition moves around images that have
 | |
|                changed position."
 | |
| 
 | |
|             e "For example..."
 | |
| 
 | |
|             show eileen happy at offscreenleft with move
 | |
| 
 | |
|             e "I can move over to the offscreenleft position, just off
 | |
|                the left side of the screen."
 | |
| 
 | |
|             show eileen happy at left with move
 | |
| 
 | |
|             e "The left position has my left side border the left
 | |
|                margin of the screen."
 | |
| 
 | |
|             show eileen happy at center with move
 | |
| 
 | |
|             e "I can also move to the center..."
 | |
| 
 | |
|             show eileen happy at right with move
 | |
| 
 | |
|             e "... the right ..."
 | |
| 
 | |
|             show eileen happy at offscreenright with move
 | |
| 
 | |
|             e "... or even to offscreenright, off the right-hand side
 | |
|                of the screen."
 | |
| 
 | |
|             show eileen happy at right with move
 | |
| 
 | |
|             e "We don't limit you to these five positions either. You
 | |
|                can always create your own Position objects."
 | |
| 
 | |
|             # This is necessary to restart the time at which we are
 | |
|             # shown.
 | |
|             hide eileen happy
 | |
| 
 | |
|             show eileen happy at Move((1.0, 1.0, 'right', 'bottom'),
 | |
|                                       (0.0, 1.0, 'left', 'bottom'),
 | |
|                                       4.0, repeat=True, bounce=True)
 | |
| 
 | |
|             e "It's also possible to have a movement happen while
 | |
|                showing dialogue on the screen, using the Move function."
 | |
| 
 | |
|             e "Move can repeat a movement, and even have it bounce
 | |
|                back and forth, like I'm doing now."
 | |
| 
 | |
|             scene bg onememorial at Pan((0, 800), (0, 0), 10.0) with dissolve
 | |
| 
 | |
|             e "Finally, we can pan around an image larger than the
 | |
|                screen, using the Pan function in an at
 | |
|                clause."
 | |
| 
 | |
|             e "That's what we're doing now, panning up a picture of
 | |
|                the memorial to the Big Red One."
 | |
| 
 | |
|             with None
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with dissolve
 | |
| 
 | |
|         "Animation, updated in 4.8.5":
 | |
| 
 | |
|             e "Ren'Py supports a number of ways of creating
 | |
|                animations."
 | |
| 
 | |
|             e "These animations let you vary images, independent of
 | |
|                the user's clicks."
 | |
| 
 | |
|             show eileen animated
 | |
| 
 | |
|             e "For example, I'm switching my expression back and
 | |
|                forth, once a second."
 | |
| 
 | |
|             e "Even though you clicked, I'm still doing it."
 | |
| 
 | |
|             e "This is an example of the Animation function at work."
 | |
| 
 | |
|             show eileen happy
 | |
| 
 | |
|             e "The Animation function is limited to simple lists of
 | |
|                images, with fixed delays between them."
 | |
| 
 | |
|             e "The sequence can repeat, or can stop after one
 | |
|                go-through."
 | |
| 
 | |
|             e "If you want more control, you can use the
 | |
|                anim.SMAnimation function."
 | |
| 
 | |
|             e "It can randomly change images, and even apply
 | |
|                transitions to changes."
 | |
| 
 | |
|             with None
 | |
|             scene smanim
 | |
|             show eileen happy
 | |
|             with dissolve
 | |
| 
 | |
|             e "Here, we randomly dissolve the background between red,
 | |
|                green, and blue images."
 | |
| 
 | |
|             e "Psychadelic."
 | |
| 
 | |
|             with None
 | |
|             scene bg washington
 | |
|             show eileen happy
 | |
|             with dissolve
 | |
| 
 | |
|             e "It's probably best if we stop here, before somebody's
 | |
|                brain explodes."
 | |
| 
 | |
|         "Text tags, updated in 5.1.4.":
 | |
| 
 | |
|             e "Text tags let us control the appearance of text that is
 | |
|                shown to the user."
 | |
| 
 | |
|             e "Text tags can make text {b}bold{/b}, {i}italic{/i}, or
 | |
|                {u}underlined{/u}."
 | |
| 
 | |
|             e "They can make the font size {size=+12}bigger{/size} or
 | |
|                {size=-8}smaller{/size}."
 | |
| 
 | |
|             e "They let you pause{w} the display of the text,
 | |
|                optionally with{p}line breaks."
 | |
| 
 | |
|             e "They let you include {image=slider_idle.png} images
 | |
|                inside text."
 | |
| 
 | |
|             e "They can even change the
 | |
|                {color=#f00}color{/color}
 | |
|                {color=#ff0}of{/color}
 | |
|                {color=#0f0}the{/color}
 | |
|                {color=#0ff}text{/color}."
 | |
| 
 | |
|             e "There are also bold, italic, and underline style properties, which can
 | |
|                be styled onto any text."
 | |
| 
 | |
|             e "If you find yourself using text tags on every line, you
 | |
|                should probably look at style properties instead."
 | |
| 
 | |
|             e "Used with care, text tags can enhance {b}your{/b} game."
 | |
| 
 | |
|             e "{u}Used{/u} with {i}abandon,{/i} they {b}can{/b} make {b}your{/b}
 | |
|                game {color=#333}hard{/color} {color=#888}to{/color} {color=#ccc}read{/color}."
 | |
| 
 | |
|             e "With great power comes great responsibility, after all."
 | |
| 
 | |
|             e "And we want to give you all the power you need."
 | |
| 
 | |
| 
 | |
|         "Music, sound and movies, updated in 4.5.":
 | |
| 
 | |
|             e "Ren'Py supports a number of multimedia functions."
 | |
| 
 | |
|             e "You're probably hearing music playing in the
 | |
|                background."
 | |
| 
 | |
| 
 | |
|             $ renpy.music_stop(fadeout=0.5)
 | |
|             e "We can stop it..."
 | |
| 
 | |
| 
 | |
|             $ renpy.music_start('sun-flower-slow-drag.mid')
 | |
|             e "... and start it playing again."
 | |
| 
 | |
|             # This plays a sound effect.
 | |
|             $ renpy.play("18005551212.wav")
 | |
| 
 | |
|             e "We can also play up to eight channels of sound effects
 | |
|                on top of the music."
 | |
| 
 | |
|             e "We ship, in the extras/ directory, code to support
 | |
|                characters having voice."
 | |
| 
 | |
|             e "Finally, we support playing mpeg movies."
 | |
| 
 | |
|             if renpy.exists('Eisenhow1952.mpg'):
 | |
| 
 | |
|                 e "Since you downloaded the Eisenhower commercial, I can show
 | |
|                    it to you as a cutscene."
 | |
| 
 | |
|                 e "You can click to continue if it gets on your nerves too
 | |
|                    much."
 | |
| 
 | |
|                 $ renpy.movie_cutscene('Eisenhow1952.mpg', 63.0)
 | |
| 
 | |
|                 hide eileen
 | |
|                 show movie at Position(xpos=420, ypos=25, xanchor='left', yanchor='top')
 | |
|                 show eileen happy
 | |
| 
 | |
|                 $ renpy.movie_start_displayable('Eisenhow1952.mpg', (352, 240))
 | |
| 
 | |
|                 e "Ren'Py can even overlay rendered images on top of a movie,
 | |
|                    although that's more taxing for your CPU."
 | |
| 
 | |
|                 e "It's like I'm some sort of newscaster or something."
 | |
| 
 | |
|                 $ renpy.movie_stop()
 | |
|                 hide movie
 | |
| 
 | |
|             else:
 | |
| 
 | |
|                 e "You haven't downloaded the Eisenhower commercial, so we
 | |
|                    can't demonstrate it."
 | |
| 
 | |
|             e "That's it for multimedia."
 | |
| 
 | |
|         "Image Operations, added in 4.8.5":
 | |
| 
 | |
|             e "Image operations allow one to manipulate images as they
 | |
|                are loaded in."
 | |
| 
 | |
|             e "These are efficent, as they are only evaluated when an
 | |
|                image is first loaded."
 | |
| 
 | |
|             e "This way, there's no extra work that needs to be done
 | |
|                when each frame is drawn to the screen."
 | |
| 
 | |
|             show eileen happy at left with move
 | |
|             show cyan base at cyanpos with dissolve
 | |
| 
 | |
|             e "Let me show you a test image, a simple cyan circle."
 | |
| 
 | |
|             e "We'll be applying some image operations to it, to see
 | |
|                how they can be used."
 | |
| 
 | |
|             show cyan crop at cyanpos with dissolve
 | |
| 
 | |
|             e "The im.Crop operation can take the image, and chop it
 | |
|                up into a smaller image."
 | |
| 
 | |
|             show cyan composite at cyanpos with dissolve
 | |
| 
 | |
|             e "The im.Composite operation lets us take multiple images,
 | |
|                and draw them into a single image."
 | |
| 
 | |
|             e "While you can do this by showing multiple images, this
 | |
|                is more efficent, if more complex."
 | |
| 
 | |
|             show cyan green at cyanpos with dissolve
 | |
| 
 | |
|             e "The im.Map operation lets us mess with the red, green,
 | |
|                blue, and alpha channels of an image."
 | |
| 
 | |
|             e "In this case, we removed all the blue from the image,
 | |
|                leaving only the green component of cyan."
 | |
| 
 | |
|             show cyan alpha at cyanpos with dissolve
 | |
| 
 | |
|             e "The im.Alpha operation can adjust the alpha channel on
 | |
|                an image, making things partially transparent."
 | |
| 
 | |
|             show eileen alpha at left with dissolve
 | |
| 
 | |
|             e "It's useful if a character just happens to be ghost."
 | |
| 
 | |
|             with None
 | |
|             hide cyan
 | |
|             show eileen happy at left
 | |
|             with dissolve
 | |
| 
 | |
|             e "But that's not the case with me."
 | |
| 
 | |
|             show eileen happy with move
 | |
| 
 | |
| 
 | |
|         "User interaction.":
 | |
| 
 | |
|             e "Ren'Py gives a number of ways of interacting with the
 | |
|                user."
 | |
| 
 | |
|             e "You've already seen say statements and menus."
 | |
| 
 | |
|             e "We can also prompt the user to enter some text."
 | |
| 
 | |
|             $ povname = renpy.input("What is your name?")
 | |
| 
 | |
|             pov "My name is %(povname)s."
 | |
| 
 | |
| 
 | |
|             e "Imagemaps let the user click on an image to make a
 | |
|                choice."
 | |
| 
 | |
|             # This is an imagemap. It consists of two images, and a list of
 | |
|             # hotspots. For each hotspot we give the coordinates of the left,
 | |
|             # top, right, and bottom sides, and the value to return if it is
 | |
|             # picked.
 | |
| 
 | |
|             $ result = renpy.imagemap("ground.png", "selected.png", [
 | |
|                 (100, 100, 300, 400, "eileen"),
 | |
|                 (500, 100, 700, 400, "lucy")
 | |
|                 ])
 | |
| 
 | |
|             # We've assigned the chosen result from the imagemap to the
 | |
|             # result variable. We can use an if statement to vary what
 | |
|             # happens based on the user's choice.
 | |
| 
 | |
|             if result == "eileen":
 | |
|                 show eileen vhappy
 | |
|                 e "You picked me!"
 | |
| 
 | |
|             elif result == "lucy":
 | |
|                 show eileen concerned
 | |
|                 e "It looks like you picked Lucy."
 | |
| 
 | |
|                 # Eileen is being a bit possesive here. :-P
 | |
|                 if date:
 | |
|                     e "You can forget about Saturday."
 | |
|                     $ date = False
 | |
| 
 | |
|             show eileen happy
 | |
| 
 | |
|             e "While these constructs are probably enough for most
 | |
|                visual novels, dating simulations may be more
 | |
|                complicated."
 | |
| 
 | |
|             e "The ui functions allow you to create quite complicated
 | |
|                interfaces."
 | |
| 
 | |
|             e "For example, try the following scheduling and stats screen,
 | |
|                which could be used by a stat-based dating simulation."
 | |
| 
 | |
|             $ day_planner()
 | |
| 
 | |
|             e "The ui functions can be used to rewrite many parts of
 | |
|                the interface."
 | |
| 
 | |
|             e "Hopefully, this gives you enough power to write any
 | |
|                visual novel you want."
 | |
| 
 | |
|         "Potpourri, added in 5.1.2.":
 | |
| 
 | |
|             e "Welcome to the potpourri section of the demo."
 | |
| 
 | |
|             e "Here, we demonstrate features that don't fit in any of
 | |
|                the other sections, but don't warrant their own
 | |
|                section."
 | |
| 
 | |
|             ectc "Here, we demonstrate a click to continue
 | |
|                   indicator. In this example, it's nestled in with the
 | |
|                   text."
 | |
| 
 | |
|             ectc "This also demonstrates the use of the anim.Blink
 | |
|                   function."
 | |
| 
 | |
|             ectcf "A click to continue image can also be placed at a
 | |
|                    fixed location on the screen."
 | |
| 
 | |
|             e "That's it for now."
 | |
| 
 | |
| 
 | |
|         " " # Empty, so we have a blank line.
 | |
| 
 | |
|         "That's enough for me.":
 | |
| 
 | |
|             return
 | |
| 
 | |
|     e "Is there anything else you want demonstrated?"
 | |
| 
 | |
|     jump demo_menu
 | |
| 
 | |
| 
 | |
| # Here, are a number of customizations that make the game look
 | |
| # better. We place them down here at the bottom, to make the first few
 | |
| # lines of the script look better.
 | |
| #
 | |
| # These can be deleted without issue, if you do not want them.
 | |
| 
 | |
| init:
 | |
| 
 | |
|     # Change some styles, to add images in the background of
 | |
|     # the menus and windows.
 | |
|     $ style.mm_root_window.background = Image("mainmenu.jpg")
 | |
|     $ style.gm_root_window.background = Image("gamemenu.jpg")
 | |
|     $ style.window.background = Frame("frame.png", 25, 25)
 | |
| 
 | |
|     # Change the look of the slider.
 | |
|     $ style.bar.left_gutter = 10
 | |
|     $ style.bar.right_gutter = 12
 | |
|     $ style.bar.left_bar = Frame("slider_full.png", 10, 0)
 | |
|     $ style.bar.right_bar = Frame("slider_empty.png", 12, 0)
 | |
|     $ style.bar.thumb = Image("slider_idle.png")
 | |
|     $ style.bar.hover_thumb = Image("slider_hover.png")
 | |
|     $ style.bar.thumb_shadow = Image("slider_shadow.png")
 | |
|     $ style.bar.thumb_offset = -10
 | |
| 
 | |
|     # Change some styles involving the margins and padding of the
 | |
|     # default window. (We need this, as we use a frame image that
 | |
|     # includes a drop-shadow.)
 | |
|     $ style.window.xmargin = 0
 | |
|     $ style.window.ymargin = 0
 | |
|     $ style.window.xpadding = 20
 | |
|     $ style.window.top_padding = 5
 | |
|     $ style.window.bottom_padding = 15
 | |
| 
 | |
|     # Interface sounds, just for the heck of it.
 | |
|     $ style.button.activate_sound = 'click.wav'
 | |
|     $ style.imagemap.activate_sound = 'click.wav'
 | |
|     $ library.enter_sound = 'click.wav'
 | |
|     $ library.exit_sound = 'click.wav'
 | |
|     $ library.sample_sound = "18005551212.wav"
 | |
| 
 | |
|     # Select the transitions that are used when entering and exiting
 | |
|     # the game menu.
 | |
|     $ library.enter_transition = pixellate
 | |
|     $ library.exit_transition = pixellate
 | |
| 
 | |
| # The splashscreen is called, if it exists, before the main menu is
 | |
| # shown the first time. It is not called if the game has restarted.
 | |
| 
 | |
| # We'll comment it out for now.
 | |
| #
 | |
| # label splashscreen:
 | |
| #     scene black
 | |
| #     show text "American Bishoujo Presents..." with dissolve
 | |
| #     $ renpy.pause(1.0)
 | |
| #     hide text with dissolve
 | |
| #
 | |
| #     return |