Example #1
0
        public frmGame2()
        {
            InitializeComponent();

            _playerIdMe = 0;
            _playerMe = null;
            _playerKIds = new Hashtable();
            _startingHeroId = 0;
            _isDoingTurn = false;
            _isBattleStarted = false;

            _attackHero = null;
            _defendHero = null;

            _isExit = false;

            _frmDuel = null;
            _frmBattle = null;

            // thread
            ThreadStart entryPoint = new ThreadStart(StartProcess);
            _processThread = new Thread(entryPoint);
            _processThread.Name = "Processing Thread";

            // timer to start game
            _timerGame = new System.Windows.Forms.Timer();
            _timerGame.Interval = 500;
            _timerGame.Tick += new EventHandler(_timerGame_Tick);
            _timerGame.Stop();

            // timer to start battle
            _timerBattle = new System.Windows.Forms.Timer();
            _timerBattle.Interval = 500;
            _timerBattle.Tick += new EventHandler(_timerBattle_Tick);
            _timerBattle.Stop();

            this.FormClosing += new FormClosingEventHandler(frmGame_FormClosing);
            this.FormClosed += new FormClosedEventHandler(frmGame_FormClosed);
        }
Example #2
0
        private bool EnqueueBattleCommand(int playerId, frmBattle.CommandIssuedEventArg e)
        {
            Heroes.Core.Remoting.BattleCommand cmd
                = new Heroes.Core.Remoting.BattleCommand(e._x, e._y, (int)e._button, e._doubleClick, e._cmdType, e._spell);

            Heroes.Core.Remoting.RegisterServer register = new Heroes.Core.Remoting.RegisterServer();
            register._hostName = Setting._remoteHostName;

            Heroes.Core.Remoting.Game adp = null;
            adp = (Heroes.Core.Remoting.Game)register.GetObject(
                typeof(Heroes.Core.Remoting.Game),
                Heroes.Core.Remoting.Game.CLASSNAME);

            if (adp == null)
            {
                MessageBox.Show("Error");
                return false;
            }

            try
            {
                adp.EnqueueBattleCommand(playerId, cmd);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }

            return true;
        }
Example #3
0
 void f_CommandIssued(frmBattle.CommandIssuedEventArg e)
 {
     // add battle command to queue
     if (!EnqueueBattleCommand(this._playerIdMe, e))
     {
         // error
         return;
     }
 }
Example #4
0
        void f_StartingBattle(Heroes.Core.Map.frmMap.StartingBattleEventArg e)
        {
            using (frmBattle f = new frmBattle())
            {
                if (f.ShowDialog(e._attackHero, e._defendHero, e._monster, e._defendCastle) != DialogResult.OK)
                {
                    return;
                }

                e._victory = (int)f._victory;
            }
        }
Example #5
0
        public bool Battle(Heroes.Core.Hero attackHero, Heroes.Core.Hero defendHero, Heroes.Core.Monster monster)
        {
            lock (frmGame2._lockMe)
            {
                using (frmBattle f = new frmBattle())
                {
                    _frmBattle = f;

                    f._playerIdMe = this._playerIdMe;

                    // set multiplayer flag
                    if (defendHero != null) f._isMultiPlayer = true;
                    else f._isMultiPlayer = false;

                    f.CommandIssued += new frmBattle.CommandIssuedEventHandler(f_CommandIssued);

                    f.ShowDialog(attackHero, defendHero, monster, null);

                    using (Heroes.Core.Battle.frmBattleResult f2 = new Heroes.Core.Battle.frmBattleResult())
                    {
                        if (f._victory == Heroes.Core.Battle.BattleSideEnum.Attacker)
                        {
                            if (f._engine._attacker._playerId == this._playerIdMe)
                            {
                                // victory
                                f2.ShowDialog(1, f._engine._attacker, this._playerIdMe,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                this._frmDuel._currentHero._experience += f2._experience;
                                this._frmDuel.LevelUp(this._frmDuel._currentHero);

                                return true;
                            }
                            else
                            {
                                // defeat
                                f2.ShowDialog(2, f._engine._attacker, this._playerIdMe,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                // do not remove hero
                                this._frmDuel.ResurrectHero(this._frmDuel._currentHero);
                                //_currentPlayer._heroes.Remove(this._currentHero);
                                //_currentHero = null;

                                return false;
                            }
                        }
                        else
                        {
                            if (f._engine._defender != null)
                            {
                                if (f._engine._defender._playerId == this._playerIdMe)
                                {
                                    // victory
                                    f2.ShowDialog(1, f._engine._defender, this._playerIdMe,
                                        f._engine._attacker, f._engine._defender, f._engine._monster);

                                    this._frmDuel._currentHero._experience += f2._experience;
                                    this._frmDuel.LevelUp(this._frmDuel._currentHero);

                                    return true;
                                }
                                else
                                {
                                    // defeat
                                    f2.ShowDialog(2, f._engine._defender, this._playerIdMe,
                                        f._engine._attacker, f._engine._defender, f._engine._monster);

                                    // do not remove hero
                                    this._frmDuel.ResurrectHero(this._frmDuel._currentHero);
                                    //_currentPlayer._heroes.Remove(this._currentHero);
                                    //_currentHero = null;

                                    return false;
                                }
                            }
                            else if (f._engine._monster != null)
                            {
                                // defeat
                                f2.ShowDialog(2, f._engine._monster, this._playerIdMe,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                // do not remove hero
                                this._frmDuel.ResurrectHero(this._frmDuel._currentHero);
                                //_currentPlayer._heroes.Remove(this._currentHero);
                                //_currentHero = null;

                                return false;
                            }
                        }
                    }
                }
            }

            return false;
        }
Example #6
0
        private bool Battle(Heroes.Core.Hero hero, Heroes.Core.Monster monster)
        {
            this.Hide();

            try
            {
                using (frmBattle f = new frmBattle())
                {
                    f.ShowDialog(hero, null, monster, null);

                    using (Heroes.Core.Battle.frmBattleResult f2 = new Heroes.Core.Battle.frmBattleResult())
                    {
                        if (f._victory == Heroes.Core.Battle.BattleSideEnum.Attacker)
                        {
                            if (f._engine._attacker._playerId == this._playerMe._id)
                            {
                                // victory
                                f2.ShowDialog(1, f._engine._attacker, this._playerMe._id,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                this._currentHero._experience += f2._experience;
                                LevelUp(this._currentHero);

                                return true;
                            }
                            else
                            {
                                // defeat
                                f2.ShowDialog(2, f._engine._attacker, this._playerMe._id,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                _currentPlayer._heroes.Remove(this._currentHero);
                                _currentHero = null;

                                return false;
                            }
                        }
                        else
                        {
                            if (f._engine._defender != null)
                            {
                                if (f._engine._defender._playerId == this._playerMe._id)
                                {
                                    // victory
                                    f2.ShowDialog(1, f._engine._defender, this._playerMe._id,
                                        f._engine._attacker, f._engine._defender, f._engine._monster);

                                    this._currentHero._experience += f2._experience;
                                    LevelUp(this._currentHero);

                                    return true;
                                }
                                else
                                {
                                    // defeat
                                    f2.ShowDialog(2, f._engine._defender, this._playerMe._id,
                                        f._engine._attacker, f._engine._defender, f._engine._monster);

                                    _currentPlayer._heroes.Remove(this._currentHero);
                                    _currentHero = null;

                                    return false;
                                }
                            }
                            else if (f._engine._monster != null)
                            {
                                // defeat
                                f2.ShowDialog(2, f._engine._monster, this._playerMe._id,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                _currentPlayer._heroes.Remove(this._currentHero);
                                _currentHero = null;

                                return false;
                            }
                        }
                    }
                }
            }
            finally
            {
                this.Show();
            }

            return false;
        }
Example #7
0
        private void cmdStart_Click(object sender, EventArgs e)
        {
            this.Hide();

            Heroes.Core.Player player1 = (Heroes.Core.Player)_players[0];
            Heroes.Core.Hero hero1 = (Heroes.Core.Hero)player1._heroes[0];

            Heroes.Core.Player player2 = (Heroes.Core.Player)_players[1];
            Heroes.Core.Hero hero2 = (Heroes.Core.Hero)player2._heroes[0];

            frmBattle f = new frmBattle();
            f.ShowDialog(hero1, hero2, null, null);

            this.Show();
        }
Example #8
0
 void f_CommandIssued(frmBattle.CommandIssuedEventArg e)
 {
     // add battle command to queue
     if (!EnqueueBattleCommand(Remoting.GameSetting._me._id, e))
     {
         // error
         return;
     }
 }
Example #9
0
        private void StartBattle()
        {
            if (Remoting.GameSetting._frmBattle != null) return;

            {
                try
                {
                    using (frmBattle f = new frmBattle())
                    {
                        //f.ReadOnly = true;
                        f._isMultiPlayer = true;

                        f.CommandIssued += new frmBattle.CommandIssuedEventHandler(f_CommandIssued);

                        // make a copies of battle, to avoid thread issue
                        //Heroes.Core.Player attackPlayer  = null;

                        lock (_lockToken)
                        {
                            Remoting.GameSetting._frmBattle = f;
                            Remoting.GameSetting._isBattleStarted = true;

                            // make a copies of battle
                            //attackPlayer = Remoting.GameSetting._attackPlayer.Clone();
                        }

                        // TODO
                        if (f.ShowDialog(Remoting.GameSetting._attackHero, Remoting.GameSetting._defendHero, null, Remoting.GameSetting._defendCastle) != DialogResult.OK)
                        {
                            //e._isCancel = true;
                            return;
                        }

                        // set battle results
                        lock (_lockToken)
                        {
                            Remoting.GameSetting._victory = f._victory;
                            //Remoting.GameSetting._attackPlayer = attackPlayer;
                        }
                    }
                }
                catch
                {
                    //e._isCancel = true;
                }
            }
        }
Example #10
0
        private bool Battle(Heroes.Core.Hero attackHero, Heroes.Core.Hero defendHero, Heroes.Core.Monster monster)
        {
            lock (frmGame2._lockMe)
            {
                using (frmBattle f = new frmBattle())
                {
                    f.ShowDialog(attackHero, defendHero, monster, null);

                    using (Heroes.Core.Battle.frmBattleResult f2 = new Heroes.Core.Battle.frmBattleResult())
                    {
                        if (f._victory == Heroes.Core.Battle.BattleSideEnum.Attacker)
                        {
                            if (f._engine._attacker._playerId == this._currentPlayer._id)
                            {
                                // victory
                                f2.ShowDialog(1, f._engine._attacker, this._currentPlayer._id,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                this._currentHero._experience += f2._experience;
                                LevelUp(this._currentHero);

                                return true;
                            }
                            else
                            {
                                // defeat
                                f2.ShowDialog(2, f._engine._attacker, this._currentPlayer._id,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                // do not remove hero
                                ResurrectHero(this._currentHero);
                                //_currentPlayer._heroes.Remove(this._currentHero);
                                //_currentHero = null;

                                return false;
                            }
                        }
                        else
                        {
                            if (f._engine._defender != null)
                            {
                                if (f._engine._defender._playerId == this._currentPlayer._id)
                                {
                                    // victory
                                    f2.ShowDialog(1, f._engine._defender, this._currentPlayer._id,
                                        f._engine._attacker, f._engine._defender, f._engine._monster);

                                    this._currentHero._experience += f2._experience;
                                    LevelUp(this._currentHero);

                                    return true;
                                }
                                else
                                {
                                    // defeat
                                    f2.ShowDialog(2, f._engine._defender, this._currentPlayer._id,
                                        f._engine._attacker, f._engine._defender, f._engine._monster);

                                    // do not remove hero
                                    ResurrectHero(this._currentHero);
                                    //_currentPlayer._heroes.Remove(this._currentHero);
                                    //_currentHero = null;

                                    return false;
                                }
                            }
                            else if (f._engine._monster != null)
                            {
                                // defeat
                                f2.ShowDialog(2, f._engine._monster, this._currentPlayer._id,
                                    f._engine._attacker, f._engine._defender, f._engine._monster);

                                // do not remove hero
                                ResurrectHero(this._currentHero);
                                //_currentPlayer._heroes.Remove(this._currentHero);
                                //_currentHero = null;

                                return false;
                            }
                        }
                    }
                }
            }

            return false;
        }