[1128] | 1 | # Green Room
|
---|
| 2 | # A room for playing out moves against a chromakey background
|
---|
| 3 | # Recommended viewing size:
|
---|
| 4 | # |--------------------------------------------------------------------------|
|
---|
| 5 |
|
---|
| 6 | var int chose_yes = 0;
|
---|
| 7 | var int countdown = 10;
|
---|
| 8 |
|
---|
| 9 | func 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
|
---|
| 23 | func 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
|
---|
| 37 | func 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
|
---|
| 66 | func 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
|
---|
| 79 | func 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
|
---|
| 118 | func 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
|
---|
| 127 | func 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 | }
|
---|