Esempio n. 1
0
        public Game1()
        {
            _graphics       = new GraphicsDeviceManager(this);
            ScreenRectangle = new Rectangle(
                0,
                0,
                ScreenWidth,
                ScreenHeight);
            IsMouseVisible = true;

            Content.RootDirectory = "Content";

            Components.Add(new InputHandler(this));

            _gameStateManager = new GameStateManager(this);
            Components.Add(_gameStateManager);

            _ = new TextureManager();

            TitleScreen              = new TitleScreen(this, _gameStateManager);
            StartMenuScreen          = new StartMenuScreen(this, _gameStateManager);
            GamePlayScreen           = new GamePlayScreen(this, _gameStateManager);
            CharacterGeneratorScreen = new CharacterGeneratorScreen(this, _gameStateManager);
            SkillScreen              = new SkillScreen(this, _gameStateManager);
            LoadGameScreen           = new LoadGameScreen(this, _gameStateManager);
            ConversationScreen       = new ConversationScreen(this, _gameStateManager);
            ShopScreen      = new ShopState(this, _gameStateManager);
            InventoryScreen = new InventoryScreen(this, _gameStateManager);
            CombatScreen    = new CombatScreen(this, _gameStateManager);

            _gameStateManager.ChangeState(TitleScreen);

            IsFixedTimeStep = false;
            _graphics.SynchronizeWithVerticalRetrace = false;
        }
        /// <summary>
        /// 进入剧情战斗
        /// </summary>
        /// <param name="roundMax">最多回合数,0为无限</param>
        /// <param name="monstersType">0-3 敌人</param>
        /// <param name="scr">0战斗背景,1左下角图,2右上角图</param>
        /// <param name="evtRnds">0-3 战斗中,触发事件的回合</param>
        /// <param name="evts">0-3 对应的事件号</param>
        /// <param name="lossto">战斗失败跳转的地址</param>
        /// <param name="winto">战斗成功跳转的地址</param>
        public void EnterStoryCombat(int roundMax, int[] monstersType, int[] scr, int[] evtRnds, int[] evts, int lossto, int winto)
        {
            IsRandomCombat = false;

            EnableRandomCombat = true;

            _storyCombat = new CombatScreen(Context, this);

            _storyCombat.EnterStoryCombat(roundMax, monstersType, scr, evtRnds, evts, lossto, winto);
        }
        /// <summary>
        /// 初始化并开启随即战斗
        /// </summary>
        /// <param name="monstersType">0-7 可能出现的敌人种类</param>
        /// <param name="scrb">战斗背景</param>
        /// <param name="scrl">左下角图</param>
        /// <param name="scrr">右上角图</param>
        public void InitRandomCombat(int[] monstersType, int scrb, int scrl, int scrr)
        {
            EnableRandomCombat = true;

            IsRandomCombat = true;

            _randomCombat = new CombatScreen(Context, this);

            _randomCombat.InitRandomCombat(monstersType, scrb, scrl, scrr);
        }
 /// <summary>
 /// 退出当前战斗
 /// </summary>
 public void ExitCurrentCombat(bool isWin)
 {
     if (IsRandomCombat)
     {
         if (!isWin)
         {
             // 死了,游戏结束
             Context.ChangeScreen(ScreenEnum.SCREEN_MENU);
         }
     }
     else
     {
         //剧情战斗结束,设置成为随机战斗
         IsRandomCombat = true;
         _storyCombat   = null;
     }
 }
 /// <summary>
 /// 战斗管理
 /// </summary>
 public CombatManage(SimulatorContext context) : base(context)
 {
     _randomCombat = new CombatScreen(Context, this);
 }
 public ActionExecutor(List <ActionBase> actionQueue, CombatScreen combat)
 {
     mActionQueue = actionQueue;
     mCombat      = combat;
 }