home *** CD-ROM | disk | FTP | other *** search
- #include "hfighter.h"
- #include "cfighter.h"
- #include "rfighter.h"
- #include "game.h"
- #include "card.h"
- #include "bar.h"
- #include "match.h"
-
-
- CUELIST(Match)
- HOTKEY(SCAN_ESC,on_escape)
- TIMER(SPEED,on_timer)
- NETPACK(IM_WAITING,on_waiting)
- NETPACK(I_QUIT,on_quit)
- ENDCUELIST
-
- const int REFRESH_ZONE_HEIGHT = RY2-RY1;
-
- Match::Match() : VideoDirector()
- {
- use_net=FALSE;
-
- human=new HumanFighter(this);
- computer=new ComputerFighter(this);
- remote=new RemoteFighter(this);
-
- leftfighter=0;
- rightfighter=0;
- }
-
- void Match::initialize()
- {
- if (use_net)
- human->use_netpacks();
- if (use_net && role==LEFTGUY)
- {
- leftfighter=human;
- leftfighter->use_netpacks();
- rightfighter=remote;
- rightfighter->use_netpacks();
- rightfighter->no_damage_check();
- }
- else if (use_net && role==RIGHTGUY)
- {
- leftfighter=remote;
- leftfighter->use_netpacks();
- leftfighter->no_damage_check();
- rightfighter=human;
- rightfighter->use_netpacks();
- }
- else if (role==LEFTGUY)
- {
- leftfighter=human;
- rightfighter=computer;
- }
- else if (role==RIGHTGUY)
- {
- leftfighter=computer;
- rightfighter=human;
- }
- leftfighter->configure(LEFTGUY);
- rightfighter->configure(RIGHTGUY);
- leftfighter->introduce(rightfighter);
- rightfighter->introduce(leftfighter);
-
- lbar=new LifeBar(this,leftfighter,LEFTGUY);
- rbar=new LifeBar(this,rightfighter,RIGHTGUY);
- lcard=new Card(this,LEFTGUY);
- rcard=new Card(this,RIGHTGUY);
- }
-
- Match::~Match()
- {
- delete human;
- delete computer;
- delete remote;
-
- leftfighter=0;
- rightfighter=0;
-
- delete lbar;
- delete rbar;
- delete lcard;
- delete rcard;
- }
-
- void Match::on_escape(int)
- {
- if (use_net)
- post_netpack(I_QUIT);
- stop_director();
- }
-
- void Match::on_timer()
- {
- if (use_net && waiting)
- post_netpack(IM_WAITING);
- else
- {
- leftfighter->update_status();
- rightfighter->update_status();
-
- restore_patch(MIN_X,RY1,MAX_X,RY2);
-
- leftfighter->update();
- rightfighter->update();
- swap_video_pages();
-
- check_for_hits();
- }
- }
-
- void Match::on_waiting(int)
- {
- if (waiting)
- {
- post_netpack(IM_WAITING);
- waiting=FALSE;
- }
- }
-
- void Match::on_quit(int)
- {
- stop_director();
- }
-
- void Match::display()
- {
- init_video();
- show_pcx("floor.pcx");
- lcard->display();
- rcard->display();
- fill_background_buffer(active_page());
- lcard->update();
- rcard->update();
-
- leftfighter->display();
- rightfighter->display();
- lbar->display();
- rbar->display();
-
- swap_video_pages();
- synch_video_pages();
-
- waiting=TRUE;
- }
-
- void Match::take_over()
- {
- set_hotkeys(ON);
- VideoDirector::take_over();
- set_hotkeys(OFF);
- }
-
- void Match::check_for_hits()
- {
- leftfighter->communicate();
- rightfighter->communicate();
- }
-
-