예제 #1
0
    public void Init(ControllersProvider controllersProvider)
    {
        gameModeController = controllersProvider.GetController <GameModeController>();
        gameModeController.GameModeChanged += GameModeChanged;

        matchContoller = controllersProvider.GetController <MatchContoller>();
        matchContoller.StateChanged += MatchStateChanged;

        scoreController = controllersProvider.GetController <ScoreController>();
        scoreController.BestPointsChanged += BestPointsChanged;

        var saveController = controllersProvider.GetController <SaveController>();

        BestPointsChanged(saveController.BestScore);

        var ballCustomizeController = controllersProvider.GetController <BallCustomizeController>();

        var mainMenuModel = new MainMenuModel(gameModeController, ballCustomizeController);

        mainMenuWindow.Init(mainMenuModel);

        var pauseMenuModel = new PauseMenuModel(gameModeController, ballCustomizeController);

        pauseWindow.Init(pauseMenuModel);
    }
예제 #2
0
    /// <summary>
    /// move the camera to a given position
    /// </summary>
    /// <returns>The to position.</returns>
    /// <param name="from">From.</param>
    /// <param name="to">To.</param>
    /// <param name="speed">Speed.</param>
    public IEnumerator goToPosition(Vector3 from, Vector3 to, float speed)
    {
        //Only change position if there is an enemy in this game mode!
        if (!GameModeController.isEnemyRequired())
        {
            yield break;
        }

        float t = 0;

        while (t < 1)
        {
            t += Time.deltaTime * speed;
            transform.position = new Vector3(Mathf.SmoothStep(from.x, to.x, t),
                                             Mathf.SmoothStep(from.y, to.y, t),
                                             transform.position.z);
            yield return(0);
        }

        if (t >= 1)
        {
            //always save camera's current pos in an external variable, for later use
            cameraCurrentPos = transform.position;
        }
    }
예제 #3
0
 public void Init()
 {
     app                 = App.Instance;
     gameMode            = app.controller.gameMode;
     captureAvailable    = false;
     turnsWithoutCapture = 0;
     points              = new int[] { 0, 0 };
     turnText            = app.view.turnText;
     if (gameMode.mode != GameModeController.Mode.multiplayer_bluetooth_client)
     {
         turn = Random.Range(1, 3);
         if (turn == 1)
         {
             turnText.text = "Turn: White" + "\n\nScore: 0 | 0";
         }
         else
         {
             turnText.text = "Turn: Black" + "\n\nScore: 0 | 0";
         }
         started = true;
     }
     if (gameMode.mode == GameModeController.Mode.single)
     {
         if (turn == 2)
         {
             app.controller.ai.ComputerMakeMove();
         }
     }
 }
예제 #4
0
    public void Init(ControllersProvider provider)
    {
        matchContoller     = provider.GetController <MatchContoller>();
        unityEvents        = provider.GetController <UnityEventsController>();
        gameModeController = provider.GetController <GameModeController>();

        //AI
        sizeController         = provider.GetController <SceneSizeController>();
        ballMovementController = provider.GetController <BallMovementController>();

        var uiController = provider.GetController <UIController>();

        selfInputHandler  = uiController.SelfInputHandler;
        enemyInputHandler = uiController.EmenyInputHandler;

        matchContoller.StateChanged += MatchStateChanged;
        unityEvents.UpdateAction    += Update;

        gameModeController.GameModeChanged += GameModeChanged;

        var sceneController = provider.GetController <SceneController>();

        var selfRacket = sceneController.GetObject(SceneObjectType.SelfRacket);

        selfRacketController = new RacketMovementController(sizeController, selfRacket.transform, racketSpeed);

        var enemyRacket = sceneController.GetObject(SceneObjectType.EnemyRacket);

        enemyRacketController = new RacketMovementController(sizeController, enemyRacket.transform, racketSpeed);

        ball = sceneController.GetObject(SceneObjectType.Ball);
    }
예제 #5
0
        static bool Prefix(GameModeController __instance, LevelResult result)
        {
            //Main.mod.Logger.Log("level finsih called");
            if (!Main.enabled || !Main.settings.helicopterWait)
            {
                return(true);
            }

            if (result != LevelResult.Success || (HeroController.GetPlayersOnHelicopterAmount() == 0))
            {
                return(true);
            }

            //Main.mod.Logger.Log(HeroController.GetPlayersOnHelicopterAmount() + " == " + HeroController.GetPlayersAliveCount());
            if (HeroController.GetPlayersOnHelicopterAmount() == HeroController.GetPlayersAliveCount())
            {
                Helicopter_Leave_Patch.attachCalled = false;
                Main.heli.Leave();
                //Main.mod.Logger.Log("after helicopter leave");
                return(true);
            }
            else
            {
                Main.control = __instance;
                return(false);
            }
        }
예제 #6
0
    public PauseMenuModel(GameModeController gameModeController, BallCustomizeController ballCustomizeController)
    {
        this.gameModeController      = gameModeController;
        this.ballCustomizeController = ballCustomizeController;

        ballCustomizeController.BallColorChanged += OnColorChanged;
    }
예제 #7
0
 static void Postfix(GameModeController __instance, ref bool __result)
 {
     if (paused)
     {
         __result = false;
     }
 }
예제 #8
0
 public NorthDesertGuard(GameModeController gameModeController, string flag, Vector2 startPosition, Vector2 endPosition, Vector2 alternativeEndPoint, Collision collision) : base(gameModeController, flag, startPosition, endPosition)
 {
     Name                 = "Guard";
     SpriteSheet          = "1";
     _alternativeEndPoint = alternativeEndPoint;
     _collision           = collision;
 }
예제 #9
0
 // Use this for initialization
 void Start()
 {
     touch           = GameObject.Find("GameDirector").GetComponent <TouchTools>();
     gameMode        = GameObject.Find("ModeSwitcher").GetComponent <GameModeController>();
     GameDirector    = GameObject.Find("GameDirector");
     mainCamera      = GameObject.Find("AR Camera");
     cameraTransform = mainCamera.transform;
 }
예제 #10
0
    public void Init()
    {
        app      = App.Instance;
        board    = app.controller.board;
        gameMode = app.controller.gameMode;

        isInit = true;
    }
예제 #11
0
        static void ChangeLevel(int levelNum)
        {
            // GameModeController instance = Traverse.Create(typeof(GameModeController)).Field("instance").GetValue() as GameModeController;

            LevelSelectionController.CurrentLevelNum += levelNum;

            Map.ClearSuperCheckpointStatus();
            GameModeController.RestartLevel();
        }
예제 #12
0
 public HideoutGuard(string scriptName, GameModeController gameModeController, string flag, Vector2 startPosition, Vector2 endPosition, Vector2 alternativeEndPoint, Collision collision, Say say) : base(gameModeController, flag, startPosition, endPosition)
 {
     _say                 = say;
     Name                 = "Guard";
     SpriteSheet          = "1";
     ScriptName           = scriptName;
     _collision           = collision;
     _alternativeEndPoint = alternativeEndPoint;
 }
예제 #13
0
 void Awake()
 {
     gameManager        = GameManager.GetController();
     gameModeController = GameModeController.GetController();
     randomY            = 0;
     randomX            = 0;
     PosYList           = new List <int>();
     posXList           = new List <int>();
 }
예제 #14
0
    public void Init(ControllersProvider controllersProvider)
    {
        gameModeController = controllersProvider.GetController <GameModeController>();
        gameModeController.GameModeChanged += GameModeChanged;

        triggerController = controllersProvider.GetController <TriggerController>();
        triggerController.ObjectTriggered += ObjectTriggered;

        saveController = controllersProvider.GetController <SaveController>();
    }
예제 #15
0
        public SelPage(GameModeController gmCtl)
        {
            m_gmCtl      = gmCtl;
            m_Game       = null;
            m_bNeedStart = false;

            this.Loaded += OnLoaded;

            InitializeComponent();
        }
예제 #16
0
    public void OnMouseUp()
    {
        //ne treba da reaguje na klik ukoliko igraju AIVsAI ili ukoliko igraju HumanVsAI, a human nije na potezu
        if (GameModeController.IsAIVsAI() == true)
        {
            return;
        }

        GameController.currentPlayer = gameObject;
    }
예제 #17
0
 static void Postfix(GameModeController __instance, ref bool __result)
 {
     if (!Main.enabled)
     {
         return;
     }
     __result = HeroController.InstanceExists && //!(__instance == null) &&
                (GameModeController.GameMode == GameMode.DeathMatch || GameModeController.GameMode == GameMode.Campaign || GameModeController.GameMode == GameMode.ExplosionRun ||
                 GameModeController.IsHardcoreMode || (GameModeController.GameMode == GameMode.Race && false));
 }
예제 #18
0
    void Start()
    {
        if (GameModeController.IsHumanVsAI() == true)
        {
            if (GameModeController.IsEasy() == true)
            {
                MaxMinimaxDuration = Easy;
            }
            else if (GameModeController.IsMedium() == true)
            {
                MaxMinimaxDuration = Medium;
            }
            else if (GameModeController.IsHard() == true)
            {
                MaxMinimaxDuration = Hard;
            }
        }

        if (GameModeController.IsPlayer1AI() == true)
        {
            aiPlayer = Turn.Player1;
            huPlayer = Turn.Player2;
        }
        else if (GameModeController.IsPlayer2AI() == true)
        {
            aiPlayer = Turn.Player2;
            huPlayer = Turn.Player1;
        }

        if (GameModeController.IsAIVsAI() == true)
        {
            aiPlayer = Turn.Player1;
            huPlayer = Turn.Player2;
        }

        aiFigures = GameObject.FindGameObjectsWithTag(aiPlayer.ToString());
        huFigures = GameObject.FindGameObjectsWithTag(huPlayer.ToString());

        minimaxStart    = 0;
        minimaxDuration = 0;

        aiPosition = new Point[2];
        for (int i = 0; i < 2; i++)
        {
            aiPosition[i] = new Point(0, 0);
        }

        InitializeBoard();

        //ukoliko je Player1 AI treba da se odigra startup ovde
        if (GameModeController.IsHumanVsAI() == true && aiPlayer == Turn.Player1)
        {
            Startup();
        }
    }
예제 #19
0
    public void Init(ControllersProvider controllersProvider)
    {
        gameModeController = controllersProvider.GetController <GameModeController>();
        scoreController    = controllersProvider.GetController <ScoreController>();
        unityEvents        = controllersProvider.GetController <UnityEventsController>();

        gameModeController.GameModeChanged += GameModeChanged;
        scoreController.ScoreChanged       += ScoreChanged;
        scoreController.MatchFinished      += ScoreMatchFinished;
        unityEvents.UpdateAction           += Update;
    }
예제 #20
0
    // Start is called before the first frame update
    void Start()
    {
        controlGameMode = GameObject.Find("ModeSwitcher").GetComponent <GameModeController>();
        director        = GameObject.Find("GameDirector");

        PlayerCamera = GameObject.Find("AR Camera");                               //プレイヤーを認識する
        rigids       = GetComponent <Rigidbody>();                                 //rigidbodyの導入
        Vector3 vctr1 = transform.position;                                        //このオブジェクトの座標を取得
        Vector3 vctr2 = PlayerCamera.transform.position;                           //プレイヤーカメラの座標を取得
        Vector3 vctr3 = vctr2 - vctr1;                                             //このオブジェクトとプレイヤー間のベクトルを算出

        this.transform.rotation = Quaternion.FromToRotation(Vector3.down, -vctr3); //向きを適切に回転
        this.rigids.AddForce(MovingForce * (vctr3 / vctr3.magnitude));             //プレイヤーに向かっていく向きに力を加える
    }
 void Start()
 {
     if (GameModeController.currentMode == GameMode.EASY)
     {
         easyModeObject.SetActive(true);
         GameModeController.resetMode();
         gameModeText.text = "EASY Mode";
     }
     else
     {
         easyModeObject.SetActive(false);
         gameModeText.text = "NORMAL Mode";
     }
 }
    /// <summary>
    /// Updates the user interface health bars based on available health for each side.
    /// </summary>
    void updateUiHealthBars()
    {
        //only update UI if this game mode requires an enemy
        if (!GameModeController.isEnemyRequired())
        {
            return;
        }

        playerHealthScale = (player.GetComponent <PlayerController> ().playerCurrentHealth *playerHBSC.x) / player.GetComponent <PlayerController> ().playerHealth;
        enemyHealthScale  = (enemy.GetComponent <EnemyController> ().enemyCurrentHealth *enemyHBSC.x) / enemy.GetComponent <EnemyController> ().enemyHealth;

        uiPlayerHealthBar.transform.localScale = new Vector3(playerHealthScale, playerHBSC.y, playerHBSC.z);
        uiEnemyHealthBar.transform.localScale  = new Vector3(enemyHealthScale, enemyHBSC.y, enemyHBSC.z);
    }
    public void Init(ControllersProvider controllersProvider)
    {
        var sizeController = controllersProvider.GetController <SceneSizeController>();

        SetSize(sizeController.SceneWidht, sizeController.SceneHeight);

        gameModeController = controllersProvider.GetController <GameModeController>();
        gameModeController.GameModeChanged += GameModeChanged;

        matchContoller = controllersProvider.GetController <MatchContoller>();
        matchContoller.StateChanged += MatchStateChanged;

        scoreController = controllersProvider.GetController <ScoreController>();
        scoreController.ScoreChanged       += ScoreChanged;
        scoreController.MatchPointsChanged += MatchPointsChanged;
    }
예제 #24
0
 static void Prefix(GameModeController __instance, LevelResult result)
 {
     if (Main.settings.loopCurrent && result == LevelResult.Success)
     {
         if (!Main.enabled || !Main.settings.loopCurrent)
         {
             return;
         }
         //Main.mod.Logger.Log("current level num after finish called: " + LevelSelectionController.CurrentLevelNum);
         //LevelSelectionController.CurrentLevelNum -= 1;
         //GameModeController.RestartLevel();
         bool temp = Main.settings.disableConfirm;
         Main.settings.disableConfirm = true;
         PauseMenu_RestartLevel_Patch.Prefix(null);
         Main.settings.disableConfirm = temp;
     }
 }
예제 #25
0
        public TopDownRpgScene(ViewportAdapter viewPort, SpriteBatch spriteBatch)
        {
            _viewPort         = viewPort;
            _spriteBatch      = spriteBatch;
            BattleProbability = 12;
            Move moveDelegate = (entity, point) => OpenWorldGameMode.BeginMoveTo(entity, point);

            _entityManager = new EntityManager(moveDelegate);
            var gameModeController = new GameModeController
            {
                PushGameModeDelegate = mode => GameModes.Push(mode),
                PopGameModeDelegate  = () => GameModes.Pop()
            };
            Say say = story => OpenWorldGameMode.DialogBox.StartStory(story);

            _storyEngine = new StoryEngine(gameModeController, moveDelegate, LoadOpenWorld, say);
        }
예제 #26
0
    // Set up initial UI components
    private void SetupUIComponents()
    {
        // タイマー 
        TimerText = GameObject.Find("Timer");
        TimerUI   = GameObject.Find("TimerIcon");
        if (TimerUI != null)
        {
            TimerUI.GetComponent <TimerUiController>();
        }
        // バルーン数 
        BalloonCountText = GameObject.Find("BalloonCount");
        if (BalloonCountText != null)
        {
            BalloonCountText.GetComponent <Text>().text = (BalloonCounter - DestroyedBalloonCount).ToString("F0") + "/" + BalloonCounter;
        }
        // 投げ数
        ThrowCountText = GameObject.Find("ThrowCount");
        if (ThrowCountText != null)
        {
            ThrowCountText.GetComponent <Text>().text = ThrowCounter.ToString("F0") + "/" + stage.ShootingLimit;
        }
        // ゲームモード
        gameMode = GameObject.Find("ModeSwitcher").GetComponent <GameModeController>();
        // 画面遷移用
        LoadBalGen = GameObject.Find("LoadingBalloonGenerator");
        // 説明文
        DescriptionUI.gameObject.SetActive(false);
        // バルーンコントローラー
        balloonController = GameObject.Find("BalloonController").GetComponent <BalloonController>();
        // アイテムジェネレーター
        itemGenerator = GameObject.Find("ItemGenerator").GetComponent <ItemGenerator>();

        // やりこみモード
        if (stage.GameClearCondition == Stage.ClearCondition.Yarikomi)
        {
            // やりこみモードでは、通常のヘッダー要素は使わない
            var header = GameObject.Find("Header");
            if (header != null)
            {
                header.SetActive(false);
            }
            // 専用ヘッダーをアクティブにする
            YarikomiHeader.SetActive(true);
        }
    }
예제 #27
0
    public void OnMouseUp()
    {
        //ne treba da reaguje na klik ukoliko igraju AIVsAI ili ukoliko igraju HumanVsAI, a human nije na potezu
        if (GameModeController.IsAIVsAI())
        {
            return;
        }


        GameObject currentPlayer = GameController.currentPlayer;

        if (currentPlayer == null)
        {
            //do ove situacije dolazi kada nijedna od figura nije izabrana

            return;
        }


        PlayerController playerController = currentPlayer.GetComponent <PlayerController>();


        if (GameController.IsMoving())
        {
            if (IsMovingPossible() == true)
            {
                playerController.Move(gameObject);
            }
            else
            {
                return;
            }
        }
        else if (GameController.IsBuilding())
        {
            if (IsBuildingPossible() == true)
            {
                playerController.Build(gameObject);
            }
            else
            {
                return;
            }
        }
    }
예제 #28
0
    public void init(GameModeController gameController, PlayerConfig playerConfig)
    {
        this.gameController = gameController;
        this.playerConfig   = playerConfig;

        cachedTransform = transform;

        playerAnimator.init(playerConfig.color);

        playerController = new PlayerController(playerConfig.inputController, playerAnimator, cachedTransform);
        weaponController = new GunController(this);

        customParticleEmitter = new CustomParticleEmitter();

        invulnerableTime = GameParamConfig.instance.retrieveParamValue <float>(GameConfigParamIds.PlayerInvulnerableTime);

        MessageBus.onGamePause += onGamePause;
    }
 private void Awake()
 {
     gameMode = GetComponent <GameModeController>();
     if (FindObjectsOfType <PlayerManager>().Length == 1)
     {
         DontDestroyOnLoad(gameObject);
         if (SceneManager.GetActiveScene().name != "MainMenuScreen")
         {
             CreatePlayers();
         }
         restartTime = Time.fixedTime;
         original    = true;
     }
     else
     {
         Destroy(gameObject);
     }
 }
예제 #30
0
    IEnumerator smoothFollow(Vector3 p)
    {
        //Only follow weapons as target if there is an enemy in this game mode!
        if (!GameModeController.isEnemyRequired())
        {
            yield break;
        }

        float posX = Mathf.SmoothDamp(transform.position.x, p.x, ref xVelocity, followSpeedDelay);
        float posY = Mathf.SmoothDamp(transform.position.y, p.y - 2, ref yVelocity, followSpeedDelay);

        transform.position = new Vector3(posX, posY, transform.position.z);

        //always save camera's current pos in an external variable, for later use
        cameraCurrentPos = transform.position;

        yield return(0);
    }