source: AE/packages/84000Green_Room/bsl/common/Green_Room/main.bsl

Last change on this file was 1128, checked in by iritscen, 5 years ago

Adding unfinished Green Room package, for anyone who wants to work on it (see work/docs/To do.txt).

  • Property svn:executable set to *
File size: 4.7 KB
Line 
1# Green Room
2# A room for playing out moves against a chromakey background
3# Recommended viewing size:
4# |--------------------------------------------------------------------------|
5
6var int chose_yes = 0;
7var int countdown = 10;
8
9func void main(void)
10{
11 # Set up environment
12 sky_show_sky = 0; # hide skybox
13 gs_show_ui = 0; # do not show UI
14 m3_clear_color = 38400; # set background color to green
15 #gs_show_particles = 0; # hide particles
16 ui_suppress_prompt = 1; # turn off objective/help prompts
17
18 fork DrawMainMenu();
19 fork WatchForYes();
20}
21
22# Allow user to choose an anim showcase or just free-run
23func void DrawMainMenu(void)
24{
25 # XXX - also allow third option of fixed camera setup within free-run mode so user can perform his own moves from a fixed vantage point
26 dmsg("Welcome to Green Room");
27 dmsg("Want to run the animation showcase?");
28 dmsg("Press [jump] for 'yes' in the next");
29 dmsg("10 seconds. After that, you can");
30 dmsg("just free-run...");
31 sleep(300);
32 countdown = 5;
33 fork CountDown();
34}
35
36# Count down while user has not made a choice in WatchForYes() yet
37func void CountDown(void)
38{
39 if (countdown eq 5)
40 dmsg("5...");
41 else if (countdown eq 4)
42 dmsg("4...");
43 else if (countdown eq 3)
44 dmsg("3...");
45 else if (countdown eq 2)
46 dmsg("2...");
47 else if (countdown eq 1)
48 dmsg("1...");
49 if ((countdown > 0) and (chose_yes eq 0))
50 {
51 sleep(60);
52 countdown = countdown - 1;
53 fork CountDown();
54 }
55 else
56 {
57 dmsg(" ");
58 dmsg(" ");
59 dmsg(" ");
60 dmsg(" ");
61 dmsg(" ");
62 }
63}
64
65# Allow user to jump to choose to run an anim showcase
66func void WatchForYes(void)
67{
68 chr_wait_animtype(0, jump);
69 if ((countdown > 0) and (chose_yes eq 0))
70 {
71 chose_yes = 1;
72 chr_animate(0, KONOKOact_yes1);
73 sleep(20);
74 DrawShowcaseMenu();
75 }
76}
77
78# XXX - break this out into functions for the menus described within
79func void DrawShowcaseMenu(void)
80{
81 # XXX - faction menu: pick faction
82 # XXX - 1. Konoko
83 # XXX - 2. Syndicate
84 # XXX - 3. TCTF
85 # XXX - 4. Civilian
86 # XXX - 5. Exit (free-run mode)
87
88 # XXX - MELE menu: where needed, pick specific MELE ID under above faction -- see "Melee IDs by faction.rtf"; print name of MELE ID once it is selected
89
90 # XXX - character variant menu: allow user to pick exact appearance of char
91
92 # XXX - angle menu: allow user to pick angle to view char from -- at least offer left side and right side, but other options would be front, rear, top, 3/4 left side and 3/4 right side
93 # XXX - consider making these choices "checkboxes", i.e. you can choose to see moves from multiple angles, which will play the move successively from each angle
94
95 # XXX - anim type menu: pick type -- attack, victim (hit, thrown, blownup, KOed, etc.), maneuver (dodge, jump, walk, run, crouch-walk, etc.)
96
97 # XXX - variant menu: pick anim variant -- melee, RIF or PIS
98
99 # XXX - change room color to a preset value that is suitable for this class, taking into account colors on char and colors of their particle effects
100
101 # XXX - final menu: change color or start
102 # XXX - 1. Change Color (leads to color menu)
103 # XXX - 2. Run Showcase
104
105 # XXX - color menu (if chosen)
106 # XXX - 1. Green
107 # XXX - 2. Blue
108 # XXX - 3. Black
109 # XXX - 4. White
110 # XXX - 5. Run Showcase
111
112 PrepKonoko();
113
114 # XXX - call specific RunShowcase_XXX() function
115}
116
117# Set up Konoko for the showcase
118func void PrepKonoko(void)
119{
120 # Make Konoko invisible
121 chr_mini_me = 1;
122 chr_mini_me_amount = 0.0;
123 # XXX - pin Konoko so that user input doesn't have a chance of moving the camera or causing a sound effect to play
124}
125
126# XXX - make 45 MELE-specific functions named like this, where "ID" = MELE ID
127func void RunShowcase_ID(void)
128{
129 # XXX - spawn chosen char and set focus to them or point camera at their spawn flag
130 # XXX - run through all anims for this combination of MELE ID, anim type (the attack / victim / maneuver option) and TRAC variant (COM / PIS / RIF)
131 # XXX - note: use table on https://wiki.oni2.net/Combat_moves as reference for TRAM names, etc.
132 # XXX - step 1: print each anim name (e.g. "Spinning Suplex"), TRAM name, and the input to trigger the move in-game
133 # XXX - step 2: clear this text after one second and play the anim
134 # XXX - step 3: wait some time after anim finishes for any particle effects to subside
135 # XXX - step 4: move char back to spawn flag and reset their facing
136 # XXX - note: put pistol or rifle in hand for PIS/RIF anims
137 # XXX - note: spawn dummy for throw anims so char can throw him or be thrown by him
138 # XXX - note: knock down char before playing getup anims
139}
Note: See TracBrowser for help on using the repository browser.