1
0
Fork 0
mirror of https://github.com/k4zmu2a/SpaceCadetPinball.git synced 2024-07-21 16:23:34 +02:00
SpaceCadetPinball/SpaceCadetPinball/control.cpp

4604 lines
147 KiB
C++
Raw Permalink Normal View History

2020-12-19 15:49:31 +01:00
#include "pch.h"
#include "control.h"
2020-12-25 14:46:06 +01:00
#include "midi.h"
#include "pb.h"
#include "TBall.h"
2021-01-20 15:28:48 +01:00
#include "TBlocker.h"
#include "TBumper.h"
2021-01-22 10:53:16 +01:00
#include "TComponentGroup.h"
#include "TFlagSpinner.h"
2021-01-07 17:00:38 +01:00
#include "TLight.h"
2021-01-22 10:53:16 +01:00
#include "TLightBargraph.h"
#include "TLightGroup.h"
2021-01-22 10:53:16 +01:00
#include "TLightRollover.h"
2020-12-19 15:49:31 +01:00
#include "TPinballTable.h"
2021-01-22 10:53:16 +01:00
#include "TPopupTarget.h"
2021-01-20 15:28:48 +01:00
#include "TSink.h"
2021-01-22 10:53:16 +01:00
#include "TSoloTarget.h"
#include "TSound.h"
2021-01-22 10:53:16 +01:00
#include "TTripwire.h"
#include "TDrain.h"
#include "TFlipper.h"
#include "TGate.h"
#include "THole.h"
#include "TKickback.h"
#include "TKickout.h"
#include "TOneway.h"
#include "TRamp.h"
#include "TPlunger.h"
#include "TWall.h"
#include "TTextBox.h"
#include "translations.h"
2020-12-19 15:49:31 +01:00
int control_bump_scores1[] = {500, 1000, 1500, 2000};
int control_roll_scores1[] = {2000};
int control_bump_scores2[] = {1500, 2500, 3500, 4500};
int control_roll_scores2[] = {500};
int control_rebo_score1[] = {500};
int control_oneway4_score1[6] = {15000, 30000, 75000, 30000, 15000, 7500};
int control_ramp_score1[1] = {5000};
int control_roll_score1[1] = {20000};
int control_roll_score2[2] = {5000, 25000};
int control_roll_score3[1] = {10000};
int control_roll_score4[1] = {500};
int control_flag_score1[2] = {500, 2500};
int control_kickout_score1[5] = {10000, 0, 20000, 50000, 150000};
int control_sink_score1[3] = {2500, 5000, 7500};
int control_target_score1[2] = {500, 5000};
int control_target_score2[3] = {1500, 10000, 50000};
int control_target_score3[2] = {500, 1500};
int control_target_score4[1] = {750};
int control_target_score5[1] = {1000};
int control_target_score6[1] = {750};
int control_target_score7[1] = {750};
int control_roll_score5[1] = {10000};
int control_kickout_score2[1] = {20000};
int control_kickout_score3[1] = {50000};
component_tag<TComponentGroup> control_attack_bump_tag = {"attack_bumpers"};
component_tag<TComponentGroup> control_launch_bump_tag = {"launch_bumpers"};
component_tag<TBlocker> control_block1_tag = {"v_bloc1"};
component_tag<TBumper> control_bump1_tag = {"a_bump1"};
component_tag<TBumper> control_bump2_tag = {"a_bump2"};
component_tag<TBumper> control_bump3_tag = {"a_bump3"};
component_tag<TBumper> control_bump4_tag = {"a_bump4"};
component_tag<TBumper> control_bump5_tag = {"a_bump5"};
component_tag<TBumper> control_bump6_tag = {"a_bump6"};
component_tag<TBumper> control_bump7_tag = {"a_bump7"};
component_tag<TDrain> control_drain_tag = {"drain"};
component_tag<TFlagSpinner> control_flag1_tag = {"a_flag1"};
component_tag<TFlagSpinner> control_flag2_tag = {"a_flag2"};
component_tag<TFlipper> control_flip1_tag = {"a_flip1"};
component_tag<TFlipper> control_flip2_tag = {"a_flip2"};
component_tag<TLightBargraph> control_fuel_bargraph_tag = {"fuel_bargraph"};
component_tag<TGate> control_gate1_tag = {"v_gate1"};
component_tag<TGate> control_gate2_tag = {"v_gate2"};
component_tag<TTextBox> control_info_text_box_tag = {"info_text_box"};
component_tag<TKickback> control_kicker1_tag = {"a_kick1"};
component_tag<TKickback> control_kicker2_tag = {"a_kick2"};
component_tag<TKickout> control_kickout1_tag = {"a_kout1"};
component_tag<TKickout> control_kickout2_tag = {"a_kout2"};
component_tag<TKickout> control_kickout3_tag = {"a_kout3"};
component_tag<TLight> control_lite1_tag = {"lite1"};
component_tag<TLight> control_lite2_tag = {"lite2"};
component_tag<TLight> control_lite3_tag = {"lite3"};
component_tag<TLight> control_lite4_tag = {"lite4"};
component_tag<TLight> control_lite5_tag = {"lite5"};
component_tag<TLight> control_lite6_tag = {"lite6"};
component_tag<TLight> control_lite7_tag = {"lite7"};
component_tag<TLight> control_lite8_tag = {"lite8"};
component_tag<TLight> control_lite9_tag = {"lite9"};
component_tag<TLight> control_lite10_tag = {"lite10"};
component_tag<TLight> control_lite11_tag = {"lite11"};
component_tag<TLight> control_lite12_tag = {"lite12"};
component_tag<TLight> control_lite13_tag = {"lite13"};
component_tag<TLight> control_lite16_tag = {"lite16"};
component_tag<TLight> control_lite17_tag = {"lite17"};
component_tag<TLight> control_lite18_tag = {"lite18"};
component_tag<TLight> control_lite19_tag = {"lite19"};
component_tag<TLight> control_lite20_tag = {"lite20"};
component_tag<TLight> control_lite21_tag = {"lite21"};
component_tag<TLight> control_lite22_tag = {"lite22"};
component_tag<TLight> control_lite23_tag = {"lite23"};
component_tag<TLight> control_lite24_tag = {"lite24"};
component_tag<TLight> control_lite25_tag = {"lite25"};
component_tag<TLight> control_lite26_tag = {"lite26"};
component_tag<TLight> control_lite27_tag = {"lite27"};
component_tag<TLight> control_lite28_tag = {"lite28"};
component_tag<TLight> control_lite29_tag = {"lite29"};
component_tag<TLight> control_lite30_tag = {"lite30"};
component_tag<TLight> control_lite38_tag = {"lite38"};
component_tag<TLight> control_lite39_tag = {"lite39"};
component_tag<TLight> control_lite40_tag = {"lite40"};
component_tag<TLight> control_lite54_tag = {"lite54"};
component_tag<TLight> control_lite55_tag = {"lite55"};
component_tag<TLight> control_lite56_tag = {"lite56"};
component_tag<TLight> control_lite58_tag = {"lite58"};
component_tag<TLight> control_lite59_tag = {"lite59"};
component_tag<TLight> control_lite60_tag = {"lite60"};
component_tag<TLight> control_lite61_tag = {"lite61"};
component_tag<TLight> control_lite62_tag = {"lite62"};
component_tag<TLight> control_lite67_tag = {"lite67"};
component_tag<TLight> control_lite68_tag = {"lite68"};
component_tag<TLight> control_lite69_tag = {"lite69"};
component_tag<TLight> control_lite70_tag = {"lite70"};
component_tag<TLight> control_lite71_tag = {"lite71"};
component_tag<TLight> control_lite72_tag = {"lite72"};
component_tag<TLight> control_lite77_tag = {"lite77"};
component_tag<TLight> control_lite84_tag = {"lite84"};
component_tag<TLight> control_lite85_tag = {"lite85"};
component_tag<TLight> control_lite101_tag = {"lite101"};
component_tag<TLight> control_lite102_tag = {"lite102"};
component_tag<TLight> control_lite103_tag = {"lite103"};
component_tag<TLight> control_lite104_tag = {"lite104"};
component_tag<TLight> control_lite105_tag = {"lite105"};
component_tag<TLight> control_lite106_tag = {"lite106"};
component_tag<TLight> control_lite107_tag = {"lite107"};
component_tag<TLight> control_lite108_tag = {"lite108"};
component_tag<TLight> control_lite109_tag = {"lite109"};
component_tag<TLight> control_lite110_tag = {"lite110"};
component_tag<TLight> control_lite130_tag = {"lite130"};
component_tag<TLight> control_lite131_tag = {"lite131"};
component_tag<TLight> control_lite132_tag = {"lite132"};
component_tag<TLight> control_lite133_tag = {"lite133"};
component_tag<TLight> control_lite169_tag = {"lite169"};
component_tag<TLight> control_lite170_tag = {"lite170"};
component_tag<TLight> control_lite171_tag = {"lite171"};
component_tag<TLight> control_lite195_tag = {"lite195"};
component_tag<TLight> control_lite196_tag = {"lite196"};
component_tag<TLight> control_lite198_tag = {"lite198"};
component_tag<TLight> control_lite199_tag = {"lite199"};
component_tag<TLight> control_lite200_tag = {"lite200"};
component_tag<TLight> control_lite300_tag = {"lite300"};
component_tag<TLight> control_lite301_tag = {"lite301"};
component_tag<TLight> control_lite302_tag = {"lite302"};
component_tag<TLight> control_lite303_tag = {"lite303"};
component_tag<TLight> control_lite304_tag = {"lite304"};
component_tag<TLight> control_lite305_tag = {"lite305"};
component_tag<TLight> control_lite306_tag = {"lite306"};
component_tag<TLight> control_lite307_tag = {"lite307"};
component_tag<TLight> control_lite308_tag = {"lite308"};
component_tag<TLight> control_lite309_tag = {"lite309"};
component_tag<TLight> control_lite310_tag = {"lite310"};
component_tag<TLight> control_lite311_tag = {"lite311"};
component_tag<TLight> control_lite312_tag = {"lite312"};
component_tag<TLight> control_lite313_tag = {"lite313"};
component_tag<TLight> control_lite314_tag = {"lite314"};
component_tag<TLight> control_lite315_tag = {"lite315"};
component_tag<TLight> control_lite316_tag = {"lite316"};
component_tag<TLight> control_lite317_tag = {"lite317"};
component_tag<TLight> control_lite318_tag = {"lite318"};
component_tag<TLight> control_lite319_tag = {"lite319"};
component_tag<TLight> control_lite320_tag = {"lite320"};
component_tag<TLight> control_lite321_tag = {"lite321"};
component_tag<TLight> control_lite322_tag = {"lite322"};
component_tag<TLight> control_literoll179_tag = {"literoll179"};
component_tag<TLight> control_literoll180_tag = {"literoll180"};
component_tag<TLight> control_literoll181_tag = {"literoll181"};
component_tag<TLight> control_literoll182_tag = {"literoll182"};
component_tag<TLight> control_literoll183_tag = {"literoll183"};
component_tag<TLight> control_literoll184_tag = {"literoll184"};
component_tag<TLightGroup> control_middle_circle_tag = {"middle_circle"};
component_tag<TLightGroup> control_lchute_tgt_lights_tag = {"lchute_tgt_lights"};
component_tag<TLightGroup> control_l_trek_lights_tag = {"l_trek_lights"};
component_tag<TLightGroup> control_goal_lights_tag = {"goal_lights"};
component_tag<TLightGroup> control_hyper_lights_tag = {"hyperspace_lights"};
component_tag<TLightGroup> control_bmpr_inc_lights_tag = {"bmpr_inc_lights"};
component_tag<TLightGroup> control_bpr_solotgt_lights_tag = {"bpr_solotgt_lights"};
component_tag<TLightGroup> control_bsink_arrow_lights_tag = {"bsink_arrow_lights"};
component_tag<TLightGroup> control_bumber_target_lights_tag = {"bumper_target_lights"};
component_tag<TLightGroup> control_outer_circle_tag = {"outer_circle"};
component_tag<TLightGroup> control_r_trek_lights_tag = {"r_trek_lights"};
component_tag<TLightGroup> control_ramp_bmpr_inc_lights_tag = {"ramp_bmpr_inc_lights"};
component_tag<TLightGroup> control_ramp_tgt_lights_tag = {"ramp_tgt_lights"};
component_tag<TLightGroup> control_skill_shot_lights_tag = {"skill_shot_lights"};
component_tag<TLightGroup> control_top_circle_tgt_lights_tag = {"top_circle_tgt_lights"};
component_tag<TLightGroup> control_top_target_lights_tag = {"top_target_lights"};
component_tag<TLightGroup> control_worm_hole_lights_tag = {"worm_hole_lights"};
component_tag<TTextBox> control_mission_text_box_tag = {"mission_text_box"};
component_tag<TOneway> control_oneway1_tag = {"s_onewy1"};
component_tag<TOneway> control_oneway4_tag = {"s_onewy4"};
component_tag<TOneway> control_oneway10_tag = {"s_onewy10"};
component_tag<TPlunger> control_plunger_tag = {"plunger"};
component_tag<THole> control_ramp_hole_tag = {"ramp_hole"};
component_tag<TRamp> control_ramp_tag = {"ramp"};
component_tag<TWall> control_rebo1_tag = {"v_rebo1"};
component_tag<TWall> control_rebo2_tag = {"v_rebo2"};
component_tag<TWall> control_rebo3_tag = {"v_rebo3"};
component_tag<TWall> control_rebo4_tag = {"v_rebo4"};
component_tag<TRollover> control_roll1_tag = {"a_roll1"};
component_tag<TRollover> control_roll2_tag = {"a_roll2"};
component_tag<TRollover> control_roll3_tag = {"a_roll3"};
component_tag<TRollover> control_roll4_tag = {"a_roll4"};
component_tag<TRollover> control_roll5_tag = {"a_roll5"};
component_tag<TRollover> control_roll6_tag = {"a_roll6"};
component_tag<TRollover> control_roll7_tag = {"a_roll7"};
component_tag<TRollover> control_roll8_tag = {"a_roll8"};
component_tag<TLightRollover> control_roll9_tag = {"a_roll9"};
component_tag<TRollover> control_roll110_tag = {"a_roll110"};
component_tag<TRollover> control_roll111_tag = {"a_roll111"};
component_tag<TRollover> control_roll112_tag = {"a_roll112"};
component_tag<TRollover> control_roll179_tag = {"a_roll179"};
component_tag<TRollover> control_roll180_tag = {"a_roll180"};
component_tag<TRollover> control_roll181_tag = {"a_roll181"};
component_tag<TRollover> control_roll182_tag = {"a_roll182"};
component_tag<TRollover> control_roll183_tag = {"a_roll183"};
component_tag<TRollover> control_roll184_tag = {"a_roll184"};
component_tag<TSink> control_sink1_tag = {"v_sink1"};
component_tag<TSink> control_sink2_tag = {"v_sink2"};
component_tag<TSink> control_sink3_tag = {"v_sink3"};
component_tag<TSink> control_sink7_tag = {"v_sink7"};
component_tag<TSound> control_soundwave3_tag = {"soundwave3"};
component_tag<TSound> control_soundwave7_tag = {"soundwave7"};
component_tag<TSound> control_soundwave8_tag = {"soundwave8"};
component_tag<TSound> control_soundwave9_tag = {"soundwave9"};
component_tag<TSound> control_soundwave10_tag = {"soundwave10"};
component_tag<TSound> control_soundwave14_1_tag = {"soundwave14"};
component_tag<TSound> control_soundwave14_2_tag = {"soundwave14"};
component_tag<TSound> control_soundwave21_tag = {"soundwave21"};
component_tag<TSound> control_soundwave23_tag = {"soundwave23"};
component_tag<TSound> control_soundwave24_tag = {"soundwave24"};
component_tag<TSound> control_soundwave25_tag = {"soundwave25"};
component_tag<TSound> control_soundwave26_tag = {"soundwave26"};
component_tag<TSound> control_soundwave27_tag = {"soundwave27"};
component_tag<TSound> control_soundwave28_tag = {"soundwave28"};
component_tag<TSound> control_soundwave30_tag = {"soundwave30"};
component_tag<TSound> control_soundwave35_1_tag = {"soundwave35"};
component_tag<TSound> control_soundwave35_2_tag = {"soundwave35"};
component_tag<TSound> control_soundwave36_1_tag = {"soundwave36"};
component_tag<TSound> control_soundwave36_2_tag = {"soundwave36"};
component_tag<TSound> control_soundwave38_tag = {"soundwave38"};
component_tag<TSound> control_soundwave39_tag = {"soundwave39"};
component_tag<TSound> control_soundwave40_tag = {"soundwave40"};
component_tag<TSound> control_soundwave41_tag = {"soundwave41"};
component_tag<TSound> control_soundwave44_tag = {"soundwave44"};
component_tag<TSound> control_soundwave45_tag = {"soundwave45"};
component_tag<TSound> control_soundwave46_tag = {"soundwave46"};
component_tag<TSound> control_soundwave47_tag = {"soundwave47"};
component_tag<TSound> control_soundwave48_tag = {"soundwave48"};
component_tag<TSound> control_soundwave49D_tag = {"soundwave49D"};
component_tag<TSound> control_soundwave50_1_tag = {"soundwave50"};
component_tag<TSound> control_soundwave50_2_tag = {"soundwave50"};
component_tag<TSound> control_soundwave52_tag = {"soundwave52"};
component_tag<TSound> control_soundwave59_tag = {"soundwave59"};
component_tag<TPopupTarget> control_target1_tag = {"a_targ1"};
component_tag<TPopupTarget> control_target2_tag = {"a_targ2"};
component_tag<TPopupTarget> control_target3_tag = {"a_targ3"};
component_tag<TPopupTarget> control_target4_tag = {"a_targ4"};
component_tag<TPopupTarget> control_target5_tag = {"a_targ5"};
component_tag<TPopupTarget> control_target6_tag = {"a_targ6"};
component_tag<TPopupTarget> control_target7_tag = {"a_targ7"};
component_tag<TPopupTarget> control_target8_tag = {"a_targ8"};
component_tag<TPopupTarget> control_target9_tag = {"a_targ9"};
component_tag<TSoloTarget> control_target10_tag = {"a_targ10"};
component_tag<TSoloTarget> control_target11_tag = {"a_targ11"};
component_tag<TSoloTarget> control_target12_tag = {"a_targ12"};
component_tag<TSoloTarget> control_target13_tag = {"a_targ13"};
component_tag<TSoloTarget> control_target14_tag = {"a_targ14"};
component_tag<TSoloTarget> control_target15_tag = {"a_targ15"};
component_tag<TSoloTarget> control_target16_tag = {"a_targ16"};
component_tag<TSoloTarget> control_target17_tag = {"a_targ17"};
component_tag<TSoloTarget> control_target18_tag = {"a_targ18"};
component_tag<TSoloTarget> control_target19_tag = {"a_targ19"};
component_tag<TSoloTarget> control_target20_tag = {"a_targ20"};
component_tag<TSoloTarget> control_target21_tag = {"a_targ21"};
component_tag<TSoloTarget> control_target22_tag = {"a_targ22"};
component_tag<TTripwire> control_trip1_tag = {"s_trip1"};
component_tag<TTripwire> control_trip2_tag = {"s_trip2"};
component_tag<TTripwire> control_trip3_tag = {"s_trip3"};
component_tag<TTripwire> control_trip4_tag = {"s_trip4"};
component_tag<TTripwire> control_trip5_tag = {"s_trip5"};
// Component shortcuts for easier access without indirection through tags
TComponentGroup*& attack_bump = control_attack_bump_tag.Component;
TComponentGroup*& launch_bump = control_launch_bump_tag.Component;
TBlocker*& block1 = control_block1_tag.Component;
TBumper*& bump1 = control_bump1_tag.Component;
TBumper*& bump2 = control_bump2_tag.Component;
TBumper*& bump3 = control_bump3_tag.Component;
TBumper*& bump4 = control_bump4_tag.Component;
TBumper*& bump5 = control_bump5_tag.Component;
TBumper*& bump6 = control_bump6_tag.Component;
TBumper*& bump7 = control_bump7_tag.Component;
TDrain*& drain = control_drain_tag.Component;
TFlagSpinner*& flag1 = control_flag1_tag.Component;
TFlagSpinner*& flag2 = control_flag2_tag.Component;
TFlipper*& flip1 = control_flip1_tag.Component;
TFlipper*& flip2 = control_flip2_tag.Component;
TLightBargraph*& fuel_bargraph = control_fuel_bargraph_tag.Component;
TGate*& gate1 = control_gate1_tag.Component;
TGate*& gate2 = control_gate2_tag.Component;
TTextBox*& info_text_box = control_info_text_box_tag.Component;
TKickback*& kicker1 = control_kicker1_tag.Component;
TKickback*& kicker2 = control_kicker2_tag.Component;
TKickout*& kickout1 = control_kickout1_tag.Component;
TKickout*& kickout2 = control_kickout2_tag.Component;
TKickout*& kickout3 = control_kickout3_tag.Component;
TLight*& lite1 = control_lite1_tag.Component;
TLight*& lite2 = control_lite2_tag.Component;
TLight*& lite3 = control_lite3_tag.Component;
TLight*& lite4 = control_lite4_tag.Component;
TLight*& lite5 = control_lite5_tag.Component;
TLight*& lite6 = control_lite6_tag.Component;
TLight*& lite7 = control_lite7_tag.Component;
TLight*& lite8 = control_lite8_tag.Component;
TLight*& lite9 = control_lite9_tag.Component;
TLight*& lite10 = control_lite10_tag.Component;
TLight*& lite11 = control_lite11_tag.Component;
TLight*& lite12 = control_lite12_tag.Component;
TLight*& lite13 = control_lite13_tag.Component;
TLight*& lite16 = control_lite16_tag.Component;
TLight*& lite17 = control_lite17_tag.Component;
TLight*& lite18 = control_lite18_tag.Component;
TLight*& lite19 = control_lite19_tag.Component;
TLight*& lite20 = control_lite20_tag.Component;
TLight*& lite21 = control_lite21_tag.Component;
TLight*& lite22 = control_lite22_tag.Component;
TLight*& lite23 = control_lite23_tag.Component;
TLight*& lite24 = control_lite24_tag.Component;
TLight*& lite25 = control_lite25_tag.Component;
TLight*& lite26 = control_lite26_tag.Component;
TLight*& lite27 = control_lite27_tag.Component;
TLight*& lite28 = control_lite28_tag.Component;
TLight*& lite29 = control_lite29_tag.Component;
TLight*& lite30 = control_lite30_tag.Component;
TLight*& lite38 = control_lite38_tag.Component;
TLight*& lite39 = control_lite39_tag.Component;
TLight*& lite40 = control_lite40_tag.Component;
TLight*& lite54 = control_lite54_tag.Component;
TLight*& lite55 = control_lite55_tag.Component;
TLight*& lite56 = control_lite56_tag.Component;
TLight*& lite58 = control_lite58_tag.Component;
TLight*& lite59 = control_lite59_tag.Component;
TLight*& lite60 = control_lite60_tag.Component;
TLight*& lite61 = control_lite61_tag.Component;
TLight*& lite62 = control_lite62_tag.Component;
TLight*& lite67 = control_lite67_tag.Component;
TLight*& lite68 = control_lite68_tag.Component;
TLight*& lite69 = control_lite69_tag.Component;
TLight*& lite70 = control_lite70_tag.Component;
TLight*& lite71 = control_lite71_tag.Component;
TLight*& lite72 = control_lite72_tag.Component;
TLight*& lite77 = control_lite77_tag.Component;
TLight*& lite84 = control_lite84_tag.Component;
TLight*& lite85 = control_lite85_tag.Component;
TLight*& lite101 = control_lite101_tag.Component;
TLight*& lite102 = control_lite102_tag.Component;
TLight*& lite103 = control_lite103_tag.Component;
TLight*& lite104 = control_lite104_tag.Component;
TLight*& lite105 = control_lite105_tag.Component;
TLight*& lite106 = control_lite106_tag.Component;
TLight*& lite107 = control_lite107_tag.Component;
TLight*& lite108 = control_lite108_tag.Component;
TLight*& lite109 = control_lite109_tag.Component;
TLight*& lite110 = control_lite110_tag.Component;
TLight*& lite130 = control_lite130_tag.Component;
TLight*& lite131 = control_lite131_tag.Component;
TLight*& lite132 = control_lite132_tag.Component;
TLight*& lite133 = control_lite133_tag.Component;
TLight*& lite169 = control_lite169_tag.Component;
TLight*& lite170 = control_lite170_tag.Component;
TLight*& lite171 = control_lite171_tag.Component;
TLight*& lite195 = control_lite195_tag.Component;
TLight*& lite196 = control_lite196_tag.Component;
TLight*& lite198 = control_lite198_tag.Component;
TLight*& lite199 = control_lite199_tag.Component;
TLight*& lite200 = control_lite200_tag.Component;
TLight*& lite300 = control_lite300_tag.Component;
TLight*& lite301 = control_lite301_tag.Component;
TLight*& lite302 = control_lite302_tag.Component;
TLight*& lite303 = control_lite303_tag.Component;
TLight*& lite304 = control_lite304_tag.Component;
TLight*& lite305 = control_lite305_tag.Component;
TLight*& lite306 = control_lite306_tag.Component;
TLight*& lite307 = control_lite307_tag.Component;
TLight*& lite308 = control_lite308_tag.Component;
TLight*& lite309 = control_lite309_tag.Component;
TLight*& lite310 = control_lite310_tag.Component;
TLight*& lite311 = control_lite311_tag.Component;
TLight*& lite312 = control_lite312_tag.Component;
TLight*& lite313 = control_lite313_tag.Component;
TLight*& lite314 = control_lite314_tag.Component;
TLight*& lite315 = control_lite315_tag.Component;
TLight*& lite316 = control_lite316_tag.Component;
TLight*& lite317 = control_lite317_tag.Component;
TLight*& lite318 = control_lite318_tag.Component;
TLight*& lite319 = control_lite319_tag.Component;
TLight*& lite320 = control_lite320_tag.Component;
TLight*& lite321 = control_lite321_tag.Component;
TLight*& lite322 = control_lite322_tag.Component;
TLight*& literoll179 = control_literoll179_tag.Component;
TLight*& literoll180 = control_literoll180_tag.Component;
TLight*& literoll181 = control_literoll181_tag.Component;
TLight*& literoll182 = control_literoll182_tag.Component;
TLight*& literoll183 = control_literoll183_tag.Component;
TLight*& literoll184 = control_literoll184_tag.Component;
TLightGroup*& middle_circle = control_middle_circle_tag.Component;
TLightGroup*& lchute_tgt_lights = control_lchute_tgt_lights_tag.Component;
TLightGroup*& l_trek_lights = control_l_trek_lights_tag.Component;
TLightGroup*& goal_lights = control_goal_lights_tag.Component;
TLightGroup*& hyper_lights = control_hyper_lights_tag.Component;
TLightGroup*& bmpr_inc_lights = control_bmpr_inc_lights_tag.Component;
TLightGroup*& bpr_solotgt_lights = control_bpr_solotgt_lights_tag.Component;
TLightGroup*& bsink_arrow_lights = control_bsink_arrow_lights_tag.Component;
TLightGroup*& bumber_target_lights = control_bumber_target_lights_tag.Component;
TLightGroup*& outer_circle = control_outer_circle_tag.Component;
TLightGroup*& r_trek_lights = control_r_trek_lights_tag.Component;
TLightGroup*& ramp_bmpr_inc_lights = control_ramp_bmpr_inc_lights_tag.Component;
TLightGroup*& ramp_tgt_lights = control_ramp_tgt_lights_tag.Component;
TLightGroup*& skill_shot_lights = control_skill_shot_lights_tag.Component;
TLightGroup*& top_circle_tgt_lights = control_top_circle_tgt_lights_tag.Component;
TLightGroup*& top_target_lights = control_top_target_lights_tag.Component;
TLightGroup*& worm_hole_lights = control_worm_hole_lights_tag.Component;
TTextBox*& mission_text_box = control_mission_text_box_tag.Component;
TOneway*& oneway1 = control_oneway1_tag.Component;
TOneway*& oneway4 = control_oneway4_tag.Component;
TOneway*& oneway10 = control_oneway10_tag.Component;
TPlunger*& plunger = control_plunger_tag.Component;
THole*& ramp_hole = control_ramp_hole_tag.Component;
TRamp*& ramp = control_ramp_tag.Component;
TWall*& rebo1 = control_rebo1_tag.Component;
TWall*& rebo2 = control_rebo2_tag.Component;
TWall*& rebo3 = control_rebo3_tag.Component;
TWall*& rebo4 = control_rebo4_tag.Component;
TRollover*& roll1 = control_roll1_tag.Component;
TRollover*& roll2 = control_roll2_tag.Component;
TRollover*& roll3 = control_roll3_tag.Component;
TRollover*& roll4 = control_roll4_tag.Component;
TRollover*& roll5 = control_roll5_tag.Component;
TRollover*& roll6 = control_roll6_tag.Component;
TRollover*& roll7 = control_roll7_tag.Component;
TRollover*& roll8 = control_roll8_tag.Component;
TLightRollover*& roll9 = control_roll9_tag.Component;
TRollover*& roll110 = control_roll110_tag.Component;
TRollover*& roll111 = control_roll111_tag.Component;
TRollover*& roll112 = control_roll112_tag.Component;
TRollover*& roll179 = control_roll179_tag.Component;
TRollover*& roll180 = control_roll180_tag.Component;
TRollover*& roll181 = control_roll181_tag.Component;
TRollover*& roll182 = control_roll182_tag.Component;
TRollover*& roll183 = control_roll183_tag.Component;
TRollover*& roll184 = control_roll184_tag.Component;
TSink*& sink1 = control_sink1_tag.Component;
TSink*& sink2 = control_sink2_tag.Component;
TSink*& sink3 = control_sink3_tag.Component;
TSink*& sink7 = control_sink7_tag.Component;
TSound*& soundwave3 = control_soundwave3_tag.Component;
TSound*& soundwave7 = control_soundwave7_tag.Component;
TSound*& soundwave8 = control_soundwave8_tag.Component;
TSound*& soundwave9 = control_soundwave9_tag.Component;
TSound*& soundwave10 = control_soundwave10_tag.Component;
TSound*& soundwave14_1 = control_soundwave14_1_tag.Component;
TSound*& soundwave14_2 = control_soundwave14_2_tag.Component;
TSound*& soundwave21 = control_soundwave21_tag.Component;
TSound*& soundwave23 = control_soundwave23_tag.Component;
TSound*& soundwave24 = control_soundwave24_tag.Component;
TSound*& soundwave25 = control_soundwave25_tag.Component;
TSound*& soundwave26 = control_soundwave26_tag.Component;
TSound*& soundwave27 = control_soundwave27_tag.Component;
TSound*& soundwave28 = control_soundwave28_tag.Component;
TSound*& soundwave30 = control_soundwave30_tag.Component;
TSound*& soundwave35_1 = control_soundwave35_1_tag.Component;
TSound*& soundwave35_2 = control_soundwave35_2_tag.Component;
TSound*& soundwave36_1 = control_soundwave36_1_tag.Component;
TSound*& soundwave36_2 = control_soundwave36_2_tag.Component;
TSound*& soundwave38 = control_soundwave38_tag.Component;
TSound*& soundwave39 = control_soundwave39_tag.Component;
TSound*& soundwave40 = control_soundwave40_tag.Component;
TSound*& soundwave41 = control_soundwave41_tag.Component;
TSound*& soundwave44 = control_soundwave44_tag.Component;
TSound*& soundwave45 = control_soundwave45_tag.Component;
TSound*& soundwave46 = control_soundwave46_tag.Component;
TSound*& soundwave47 = control_soundwave47_tag.Component;
TSound*& soundwave48 = control_soundwave48_tag.Component;
TSound*& soundwave49D = control_soundwave49D_tag.Component;
TSound*& soundwave50_1 = control_soundwave50_1_tag.Component;
TSound*& soundwave50_2 = control_soundwave50_2_tag.Component;
TSound*& soundwave52 = control_soundwave52_tag.Component;
TSound*& soundwave59 = control_soundwave59_tag.Component;
TPopupTarget*& target1 = control_target1_tag.Component;
TPopupTarget*& target2 = control_target2_tag.Component;
TPopupTarget*& target3 = control_target3_tag.Component;
TPopupTarget*& target4 = control_target4_tag.Component;
TPopupTarget*& target5 = control_target5_tag.Component;
TPopupTarget*& target6 = control_target6_tag.Component;
TPopupTarget*& target7 = control_target7_tag.Component;
TPopupTarget*& target8 = control_target8_tag.Component;
TPopupTarget*& target9 = control_target9_tag.Component;
TSoloTarget*& target10 = control_target10_tag.Component;
TSoloTarget*& target11 = control_target11_tag.Component;
TSoloTarget*& target12 = control_target12_tag.Component;
TSoloTarget*& target13 = control_target13_tag.Component;
TSoloTarget*& target14 = control_target14_tag.Component;
TSoloTarget*& target15 = control_target15_tag.Component;
TSoloTarget*& target16 = control_target16_tag.Component;
TSoloTarget*& target17 = control_target17_tag.Component;
TSoloTarget*& target18 = control_target18_tag.Component;
TSoloTarget*& target19 = control_target19_tag.Component;
TSoloTarget*& target20 = control_target20_tag.Component;
TSoloTarget*& target21 = control_target21_tag.Component;
TSoloTarget*& target22 = control_target22_tag.Component;
TTripwire*& trip1 = control_trip1_tag.Component;
TTripwire*& trip2 = control_trip2_tag.Component;
TTripwire*& trip3 = control_trip3_tag.Component;
TTripwire*& trip4 = control_trip4_tag.Component;
TTripwire*& trip5 = control_trip5_tag.Component;
2020-12-19 15:49:31 +01:00
TPinballTable* control::TableG;
component_info control::score_components[88]
{
component_info{control_bump1_tag, {BumperControl, 4, control_bump_scores1}},
component_info{control_bump2_tag, {BumperControl, 4, control_bump_scores1}},
component_info{control_bump3_tag, {BumperControl, 4, control_bump_scores1}},
component_info{control_bump4_tag, {BumperControl, 4, control_bump_scores1}},
component_info{control_roll3_tag, {ReentryLanesRolloverControl, 1, control_roll_scores1}},
component_info{control_roll2_tag, {ReentryLanesRolloverControl, 1, control_roll_scores1}},
component_info{control_roll1_tag, {ReentryLanesRolloverControl, 1, control_roll_scores1}},
component_info{control_attack_bump_tag, {BumperGroupControl, 0, nullptr}},
component_info{control_bump5_tag, {BumperControl, 4, control_bump_scores2}},
component_info{control_bump6_tag, {BumperControl, 4, control_bump_scores2}},
component_info{control_bump7_tag, {BumperControl, 4, control_bump_scores2}},
component_info{control_roll112_tag, {LaunchLanesRolloverControl, 1, control_roll_scores2}},
component_info{control_roll111_tag, {LaunchLanesRolloverControl, 1, control_roll_scores2}},
component_info{control_roll110_tag, {LaunchLanesRolloverControl, 1, control_roll_scores2}},
component_info{control_launch_bump_tag, {BumperGroupControl, 0, nullptr}},
component_info{control_rebo1_tag, {FlipperRebounderControl1, 1, control_rebo_score1}},
component_info{control_rebo2_tag, {FlipperRebounderControl2, 1, control_rebo_score1}},
component_info{control_rebo3_tag, {RebounderControl, 1, control_rebo_score1}},
component_info{control_rebo4_tag, {RebounderControl, 1, control_rebo_score1}},
component_info{control_kicker1_tag, {LeftKickerControl, 0, nullptr}},
component_info{control_kicker2_tag, {RightKickerControl, 0, nullptr}},
component_info{control_gate1_tag, {LeftKickerGateControl, 0, nullptr}},
component_info{control_gate2_tag, {RightKickerGateControl, 0, nullptr}},
component_info{control_oneway4_tag, {DeploymentChuteToEscapeChuteOneWayControl, 6, control_oneway4_score1}},
component_info{control_oneway10_tag, {DeploymentChuteToTableOneWayControl, 0, nullptr}},
component_info{control_block1_tag, {DrainBallBlockerControl, 0, nullptr}},
component_info{control_ramp_tag, {LaunchRampControl, 1, control_ramp_score1}},
component_info{control_ramp_hole_tag, {LaunchRampHoleControl, 0, nullptr}},
component_info{control_roll4_tag, {OutLaneRolloverControl, 1, control_roll_score1}},
component_info{control_roll8_tag, {OutLaneRolloverControl, 1, control_roll_score1}},
component_info{control_lite17_tag, {ExtraBallLightControl, 0, nullptr}},
component_info{control_roll6_tag, {ReturnLaneRolloverControl, 2, control_roll_score2}},
component_info{control_roll7_tag, {ReturnLaneRolloverControl, 2, control_roll_score2}},
component_info{control_roll5_tag, {BonusLaneRolloverControl, 1, control_roll_score3}},
component_info{control_roll179_tag, {FuelRollover1Control, 1, control_roll_score4}},
component_info{control_roll180_tag, {FuelRollover2Control, 1, control_roll_score4}},
component_info{control_roll181_tag, {FuelRollover3Control, 1, control_roll_score4}},
component_info{control_roll182_tag, {FuelRollover4Control, 1, control_roll_score4}},
component_info{control_roll183_tag, {FuelRollover5Control, 1, control_roll_score4}},
component_info{control_roll184_tag, {FuelRollover6Control, 1, control_roll_score4}},
component_info{control_flag1_tag, {FlagControl, 2, control_flag_score1}},
component_info{control_kickout2_tag, {HyperspaceKickOutControl, 5, control_kickout_score1}},
component_info{control_hyper_lights_tag, {HyperspaceLightGroupControl, 0, nullptr}},
component_info{control_flag2_tag, {FlagControl, 2, control_flag_score1}},
component_info{control_sink1_tag, {WormHoleControl, 3, control_sink_score1}},
component_info{control_sink2_tag, {WormHoleControl, 3, control_sink_score1}},
component_info{control_sink3_tag, {WormHoleControl, 3, control_sink_score1}},
component_info{control_flip1_tag, {LeftFlipperControl, 0, nullptr}},
component_info{control_flip2_tag, {RightFlipperControl, 0, nullptr}},
component_info{control_plunger_tag, {PlungerControl, 0, nullptr}},
component_info{control_target1_tag, {BoosterTargetControl, 2, control_target_score1}},
component_info{control_target2_tag, {BoosterTargetControl, 2, control_target_score1}},
component_info{control_target3_tag, {BoosterTargetControl, 2, control_target_score1}},
component_info{control_lite60_tag, {JackpotLightControl, 0, nullptr}},
component_info{control_lite59_tag, {BonusLightControl, 0, nullptr}},
component_info{control_target6_tag, {MedalTargetControl, 3, control_target_score2}},
component_info{control_target5_tag, {MedalTargetControl, 3, control_target_score2}},
component_info{control_target4_tag, {MedalTargetControl, 3, control_target_score2}},
component_info{control_bumber_target_lights_tag, {MedalLightGroupControl, 0, nullptr}},
component_info{control_target9_tag, {MultiplierTargetControl, 2, control_target_score3}},
component_info{control_target8_tag, {MultiplierTargetControl, 2, control_target_score3}},
component_info{control_target7_tag, {MultiplierTargetControl, 2, control_target_score3}},
component_info{control_top_target_lights_tag, {MultiplierLightGroupControl, 0, nullptr}},
component_info{control_target10_tag, {FuelSpotTargetControl, 1, control_target_score4}},
component_info{control_target11_tag, {FuelSpotTargetControl, 1, control_target_score4}},
component_info{control_target12_tag, {FuelSpotTargetControl, 1, control_target_score4}},
component_info{control_target13_tag, {MissionSpotTargetControl, 1, control_target_score5}},
component_info{control_target14_tag, {MissionSpotTargetControl, 1, control_target_score5}},
component_info{control_target15_tag, {MissionSpotTargetControl, 1, control_target_score5}},
component_info{control_target16_tag, {LeftHazardSpotTargetControl, 1, control_target_score6}},
component_info{control_target17_tag, {LeftHazardSpotTargetControl, 1, control_target_score6}},
component_info{control_target18_tag, {LeftHazardSpotTargetControl, 1, control_target_score6}},
component_info{control_target19_tag, {RightHazardSpotTargetControl, 1, control_target_score6}},
component_info{control_target20_tag, {RightHazardSpotTargetControl, 1, control_target_score6}},
component_info{control_target21_tag, {RightHazardSpotTargetControl, 1, control_target_score6}},
component_info{control_target22_tag, {WormHoleDestinationControl, 1, control_target_score7}},
component_info{control_roll9_tag, {SpaceWarpRolloverControl, 1, control_roll_score5}},
component_info{control_kickout3_tag, {BlackHoleKickoutControl, 1, control_kickout_score2}},
component_info{control_kickout1_tag, {GravityWellKickoutControl, 1, control_kickout_score3}},
component_info{control_drain_tag, {BallDrainControl, 0, nullptr}},
component_info{control_oneway1_tag, {SkillShotGate1Control, 0, nullptr}},
component_info{control_trip1_tag, {SkillShotGate2Control, 0, nullptr}},
component_info{control_trip2_tag, {SkillShotGate3Control, 0, nullptr}},
component_info{control_trip3_tag, {SkillShotGate4Control, 0, nullptr}},
component_info{control_trip4_tag, {SkillShotGate5Control, 0, nullptr}},
component_info{control_trip5_tag, {SkillShotGate6Control, 0, nullptr}},
component_info{control_lite200_tag, {ShootAgainLightControl, 0, nullptr}},
component_info{control_sink7_tag, {EscapeChuteSinkControl, 0, nullptr}},
2020-12-19 15:49:31 +01:00
};
component_tag_base* control::simple_components[145]
2020-12-19 15:49:31 +01:00
{
&control_lite8_tag,
&control_lite9_tag,
&control_lite10_tag,
&control_bmpr_inc_lights_tag,
&control_lite171_tag,
&control_lite170_tag,
&control_lite169_tag,
&control_ramp_bmpr_inc_lights_tag,
&control_lite30_tag,
&control_lite29_tag,
&control_lite1_tag,
&control_lite54_tag,
&control_lite55_tag,
&control_lite56_tag,
&control_lite18_tag,
&control_lite27_tag,
&control_lite28_tag,
&control_lite16_tag,
&control_lite21_tag,
&control_lite22_tag,
&control_lite23_tag,
&control_lite24_tag,
&control_lite25_tag,
&control_lite26_tag,
&control_lite130_tag,
&control_lite5_tag,
&control_lite6_tag,
&control_lite7_tag,
&control_worm_hole_lights_tag,
&control_lite4_tag,
&control_lite2_tag,
&control_lite3_tag,
&control_bsink_arrow_lights_tag,
&control_l_trek_lights_tag,
&control_r_trek_lights_tag,
&control_literoll179_tag,
&control_literoll180_tag,
&control_literoll181_tag,
&control_literoll182_tag,
&control_literoll183_tag,
&control_literoll184_tag,
&control_fuel_bargraph_tag,
&control_lite20_tag,
&control_lite19_tag,
&control_lite61_tag,
&control_lite58_tag,
&control_lite11_tag,
&control_lite12_tag,
&control_lite13_tag,
&control_lite70_tag,
&control_lite71_tag,
&control_lite72_tag,
&control_top_circle_tgt_lights_tag,
&control_lite101_tag,
&control_lite102_tag,
&control_lite103_tag,
&control_ramp_tgt_lights_tag,
&control_lite104_tag,
&control_lite105_tag,
&control_lite106_tag,
&control_lite107_tag,
&control_lite108_tag,
&control_lite109_tag,
&control_lchute_tgt_lights_tag,
&control_bpr_solotgt_lights_tag,
&control_lite110_tag,
&control_lite62_tag,
&control_lite67_tag,
&control_lite68_tag,
&control_lite69_tag,
&control_lite131_tag,
&control_lite132_tag,
&control_lite133_tag,
&control_skill_shot_lights_tag,
&control_lite77_tag,
&control_lite198_tag,
&control_middle_circle_tag,
&control_outer_circle_tag,
&control_soundwave9_tag,
&control_soundwave10_tag,
&control_soundwave21_tag,
&control_soundwave23_tag,
&control_soundwave24_tag,
&control_soundwave30_tag,
&control_soundwave28_tag,
&control_soundwave50_1_tag,
&control_soundwave8_tag,
&control_soundwave40_tag,
&control_soundwave41_tag,
&control_soundwave36_1_tag,
&control_soundwave50_2_tag,
&control_soundwave35_1_tag,
&control_soundwave36_2_tag,
&control_soundwave35_2_tag,
&control_soundwave38_tag,
&control_soundwave39_tag,
&control_soundwave44_tag,
&control_soundwave45_tag,
&control_soundwave46_tag,
&control_soundwave47_tag,
&control_soundwave48_tag,
&control_soundwave52_tag,
&control_soundwave14_1_tag,
&control_soundwave59_tag,
&control_lite199_tag,
&control_lite196_tag,
&control_lite195_tag,
&control_info_text_box_tag,
&control_mission_text_box_tag,
&control_soundwave27_tag,
&control_lite84_tag,
&control_lite85_tag,
&control_soundwave14_2_tag,
&control_soundwave3_tag,
&control_soundwave26_tag,
&control_soundwave49D_tag,
&control_lite300_tag,
&control_lite301_tag,
&control_lite302_tag,
&control_lite303_tag,
&control_lite304_tag,
&control_lite305_tag,
&control_lite306_tag,
&control_lite307_tag,
&control_lite308_tag,
&control_lite309_tag,
&control_lite310_tag,
&control_lite311_tag,
&control_lite312_tag,
&control_lite313_tag,
&control_lite314_tag,
&control_lite315_tag,
&control_lite316_tag,
&control_lite317_tag,
&control_lite318_tag,
&control_lite319_tag,
&control_lite320_tag,
&control_lite321_tag,
&control_lite322_tag,
&control_goal_lights_tag,
&control_soundwave25_tag,
&control_soundwave7_tag,
&control_lite38_tag,
&control_lite39_tag,
&control_lite40_tag,
2020-12-19 15:49:31 +01:00
};
int control::waiting_deployment_flag;
bool control::table_unlimited_balls = false, control::easyMode = false;
2021-01-20 15:28:48 +01:00
int control::extraball_light_flag;
Msg control::RankRcArray[9] =
{
Msg::STRING185,
Msg::STRING186,
Msg::STRING187,
Msg::STRING188,
Msg::STRING189,
Msg::STRING190,
Msg::STRING191,
Msg::STRING192,
Msg::STRING193
};
Msg control::MissionRcArray[17] =
{
Msg::STRING161,
Msg::STRING162,
Msg::STRING163,
Msg::STRING164,
Msg::STRING165,
Msg::STRING166,
Msg::STRING167,
Msg::STRING168,
Msg::STRING169,
Msg::STRING170,
Msg::STRING171,
Msg::STRING172,
Msg::STRING173,
Msg::STRING174,
Msg::STRING175,
Msg::STRING176,
Msg::STRING177
};
2021-01-23 07:57:16 +01:00
int control::mission_select_scores[17] =
{
10000,
10000,
10000,
10000,
20000,
20000,
20000,
20000,
20000,
20000,
20000,
20000,
20000,
30000,
30000,
30000,
30000
};
std::reference_wrapper<TSink*> control::WormholeSinkArray[3] =
2021-01-23 07:57:16 +01:00
{
sink1, sink2, sink3
2021-01-23 07:57:16 +01:00
};
std::reference_wrapper<TLight*> control::WormholeLightArray1[3] =
2021-01-23 07:57:16 +01:00
{
lite5, lite6, lite7
2021-01-23 07:57:16 +01:00
};
std::reference_wrapper<TLight*> control::WormholeLightArray2[3] =
2021-01-23 07:57:16 +01:00
{
lite4, lite2, lite3
2021-01-23 07:57:16 +01:00
};
2020-12-19 15:49:31 +01:00
void control::make_links(TPinballTable* table)
{
TableG = table;
for (auto& score_component : score_components)
2020-12-19 15:49:31 +01:00
{
auto linkedComp = make_component_link(score_component.Tag);
if (linkedComp)
2020-12-19 15:49:31 +01:00
{
linkedComp->Control = &score_component.Control;
2020-12-19 15:49:31 +01:00
}
}
for (auto& simple_component : simple_components)
make_component_link(*simple_component);
2020-12-19 15:49:31 +01:00
}
void control::ClearLinks()
{
TableG = nullptr;
for (auto& component : score_components)
component.Tag.SetComponent(nullptr);
for (auto& component : simple_components)
component->SetComponent(nullptr);
}
2020-12-19 15:49:31 +01:00
TPinballComponent* control::make_component_link(component_tag_base& tag)
2020-12-19 15:49:31 +01:00
{
if (tag.GetComponent())
return tag.GetComponent();
2020-12-19 15:49:31 +01:00
for (auto component: TableG->ComponentList)
2020-12-19 15:49:31 +01:00
{
if (component->GroupName)
2020-12-19 15:49:31 +01:00
{
if (!strcmp(component->GroupName, tag.Name))
2020-12-19 15:49:31 +01:00
{
tag.SetComponent(component);
return component;
2020-12-19 15:49:31 +01:00
}
}
}
return nullptr;
}
void control::handler(MessageCode code, TPinballComponent* cmp)
2020-12-19 15:49:31 +01:00
{
component_control* control = cmp->Control;
2020-12-19 15:49:31 +01:00
if (control)
{
control->ControlFunc(code, cmp);
}
MissionControl(code, cmp);
}
void control::pbctrl_bdoor_controller(char key)
{
// Buffer large enough for longest cheat + null
static char cheatBuffer[11 + 1]{};
static const char* bufferEnd = &cheatBuffer[11];
static const char* quotes[8]
{
"Hey, is that a screen saver?",
"I guess it has been a good week",
"She may already be a glue bottle",
"If you don't come in Saturday,\n...\n",
"don't even bother coming in Sunday.",
"Tomorrow already sucks",
"I knew it worked too good to be right.",
"World's most expensive flippers"
};