示例#1
0
 public void Awake()
 {
     if (mInstance == null)
     {
         mInstance = this;
     }
 }
示例#2
0
    void Start()
    {
        Camera[] allCam = Camera.allCameras;
        camera = allCam[0];
        if (CurrentCamera == null)
        {
            CurrentCamera = camera;
        }
        selectionCircle         = GameObject.Find("selectionCircle");
        particleSelectionCircle = selectionCircle.GetComponent <ParticleSystem>();
        particleSelectionCircle.Stop();
        GameObject tempObject = GameObject.Find("Canvas");

        endGameCanvas = tempObject.GetComponent <Canvas>();
        if (endGameCanvas == null)
        {
            Debug.Log("CANVAS NULL");
        }
        //initialisation du graveyard (toutes cases libres) et des positions des pièces
        BoardManagment.startPosition();
        VictoryConditions.initializeCheck();
        //Color sert a déterminer quel joueur à le focus
        color       = "Black";
        vscolor     = "White";
        camPosition = "Black";
    }
示例#3
0
    public static bool moveAuthorized(int iPiece, int jPiece, int iTarget, int jTarget, string pieceName, GameObject Target)
    {
        string playerColor = (pieceName.Substring(0, 1));

        //Traitement spécial des mouvements autorisés en cas d'échec au roi
        if (VictoryConditions.whiteKingInCheck == true || VictoryConditions.blackKingInCheck == true)
        {
            Debug.Log("VictoryConditions.moveAuthorizedWhenKingInCheck" + playerColor);
            if (VictoryConditions.moveAuthorizedWhenKingInCheck(pieceName, Target))
            {
                VictoryConditions.kingNoLongerInCheck();
                return(true);
            }
            else
            {
                return(false);
            }
        }
        //traitement "normal" des déplacements
        switch (pieceName.Substring(1, 3))
        {
        case "paw":
            if (playerColor == "B")
            {
                return(pawnMoveAuthorized(iPiece, jPiece, iTarget, jTarget, Target, "W"));
            }
            else
            {
                return(pawnMoveAuthorized(iPiece, jPiece, iTarget, jTarget, Target, "B"));
            }

        case "bis":
            return(bishopMoveAuthorized(iPiece, jPiece, iTarget, jTarget));

        case "roo":
            return(rookMoveAuthorized(iPiece, jPiece, iTarget, jTarget));

        case "kni":
            return(knightMoveAuthorized(iPiece, jPiece, iTarget, jTarget));

        case "kin":
            return(kingMoveAuthorized(iPiece, jPiece, iTarget, jTarget, playerColor));

        case "que":
            return(queenMoveAuthorized(iPiece, jPiece, iTarget, jTarget));

        default:
            Debug.Log("Piece non valide");
            return(false);
        }
    }
示例#4
0
 public Scenario Clone()
 {
     return(new Scenario
     {
         Name = Name,
         City = City.Clone(),
         StartDateString = StartDate.ToString(),
         EndDateString = EndDate.ToString(),
         VictoryConditions = VictoryConditions.Select(g => g.Clone()).ToList(),
         DefeatConditions = DefeatConditions.Select(g => g.Clone()).ToList(),
         RequireAchievementNames = RequireAchievementNames.ToList(),
         VictoryAchievement = VictoryAchievement
     });
 }
示例#5
0
 public BasicMapParams(byte players_value,
                       byte width_size,
                       byte height_size,
                       string scenario_name,
                       VictoryConditions victory_conditions,
                       DefeatConditions defeat_conditions)
 {
     this.players_value      = players_value;
     this.width_size         = width_size;
     this.height_size        = height_size;
     this.scenario_name      = scenario_name;
     this.victory_conditions = victory_conditions;
     this.defeat_conditions  = defeat_conditions;
 }
示例#6
0
 /// <summary>
 /// Begins to capture point to new contesting party after calculating which player type has overwhelming numbers
 /// </summary>
 /// <returns></returns>
 public IEnumerator CapturePoint()
 {
     while (true)
     {
         SetCapturePointOwner();
         if (mCapturingPlayerType == Enums.PlayerType.Ghost)
         {
             // Decrease counter every second
             if (mCurrentProgress != 0)
             {
                 mCurrentProgress--;
             }
             else
             {
                 // Ghosts capture it or hunters didn't fully capture and light goes out
                 mLit       = false;
                 mCapturing = false;
                 VictoryConditions.GetInstance().CheckGhostVictoryConditions();
                 StopCoroutine("CapturePoint");
             }
         }
         if (mCapturingPlayerType == Enums.PlayerType.Hunter)
         {
             // Increase
             if (mCurrentProgress != 100)
             {
                 mCurrentProgress++;
             }
             else
             {
                 // Hunter captures it
                 mLit       = true;
                 mCapturing = false;
                 VictoryConditions.GetInstance().CheckHunterVictoryCondition();
                 StopCoroutine("CapturePoint");
             }
         }
         UpdateUI();
         UpdateVisuals();
         yield return(new WaitForSeconds(0.5f));
         // If ghosts or nobody is capturing it, reduce to 0
         // If hunter is capturing it and it isn't 100 already, increase
         // If stalemate, keep the same
     }
 }
示例#7
0
    void Update()
    {
        VictoryConditions cond = GetComponent <VictoryConditions>();
        bool won = cond.checkVictoryConditions();

        if (won)
        {
            Debug.Log("WE WON");
            // MOVE TO ANOTHER LEVEL
            if (cond.levelName.Equals("TutorialScene"))
            {
                SceneManager.LoadScene("BossScene");
            }
            if (cond.levelName.Equals("BossScene"))
            {
                SceneManager.LoadScene("Menu");
            }
        }
    }
示例#8
0
 /// <summary>
 /// Begins to reset point back to original capture state
 /// </summary>
 /// <returns></returns>
 public IEnumerator ResetPoint()
 {
     while (true)
     {
         if (mLit == true)
         {
             mCurrentProgress++;
             if (mCurrentProgress >= 100)
             {
                 StopCoroutine("ResetPoint");
                 mResetting       = false;
                 mCurrentProgress = 100;
             }
             if (mCurrentProgress == 100)
             {
                 VictoryConditions.GetInstance().CheckHunterVictoryCondition();
             }
         }
         else
         {
             mCurrentProgress--;
             if (mCurrentProgress <= 0)
             {
                 StopCoroutine("ResetPoint");
                 mResetting       = false;
                 mCurrentProgress = 0;
             }
             if (mCurrentProgress == 0)
             {
                 VictoryConditions.GetInstance().CheckGhostVictoryConditions();
             }
         }
         UpdateUI();
         UpdateVisuals();
         yield return(new WaitForSeconds(0.5f));
     }
 }
示例#9
0
        public void CheckGoals(City city)
        {
            // TODO priority:bug this whole method doesn't seems to work
            if (VictoryConditions.All(g => g.IsMet(city)))
            {
                OnVictory();
            }

            if (DefeatConditions.Any(g => g.IsMet(city)))
            {
                OnDefeat();
            }

            foreach (var achievement in PrototypeManager.Instance.Achievements)
            {
                if (achievement.IsGoalRelated)
                {
                    if (achievement.Goals.All(g => g.IsMet(city)))
                    {
                        OnAchievement(achievement);
                    }
                }
            }
        }
示例#10
0
 private void Awake()
 {
     conditions = FindObjectOfType <VictoryConditions>();
 }
示例#11
0
    //Test si le déplacement est autorisé, si oui met à jour TabPosition
    public static bool majTabPosition(GameObject piece, GameObject target)
    {
        String playerColor = (piece.name.Substring(0, 1) == "W")? "White" : "Black";
        int    iTarget, jTarget, iPiece, jPiece;
        bool   moveAuthorized;

        iPiece = searchIndexIOfPiece(piece);
        jPiece = searchIndexJOfPiece(piece);
        //Si target est un tile
        if (target.transform.tag == "Tile")
        {
            //Récupération des coordonnées du tile dans le nom caseTarget
            iTarget        = Convert.ToInt32(target.name.Substring(4, 1));
            jTarget        = Convert.ToInt32(target.name.Substring(5, 1));
            moveAuthorized = Move.moveAuthorized(iPiece, jPiece, iTarget, jTarget, piece.name, target);
            if (moveAuthorized)
            {
                tabPosition[iTarget, jTarget] = piece;
                Debug.Log(piece.name + " case" + iTarget + jTarget);
                //Suppression de piece à son ancien emplacement dans tabposition
                tabPosition[iPiece, jPiece] = null;
                BoardStateManagment.eraseControlAreaOf(piece);
                BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                //Si le joueur se met lui même en échec annulation du déplacement
                if (VictoryConditions.kingInCheck(playerColor))
                {
                    tabPosition[iPiece, jPiece]   = piece;
                    tabPosition[iTarget, jTarget] = null;
                    BoardStateManagment.eraseControlAreaOf(piece);
                    BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                    return(false);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }

        //Si target est une piece
        else
        {
            iTarget = searchIndexIOfPiece(target);
            jTarget = searchIndexJOfPiece(target);

            moveAuthorized = Move.moveAuthorized(iPiece, jPiece, iTarget, jTarget, piece.name, target);
            if (moveAuthorized)
            {
                //Supression de piece à son ancien emplacement dans tabposition
                tabPosition[iPiece, jPiece] = null;
                //Remplacement dans tabPosition de target par piece
                tabPosition[iTarget, jTarget] = piece;
                Debug.Log(piece.name + " case" + iTarget + jTarget);
                BoardStateManagment.eraseControlAreaOf(piece);
                BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                if (VictoryConditions.kingInCheck(playerColor))
                {
                    tabPosition[iPiece, jPiece]   = piece;
                    tabPosition[iTarget, jTarget] = target;
                    BoardStateManagment.eraseControlAreaOf(piece);
                    BoardStateManagment.majBoard(iPiece, jPiece, iTarget, jTarget, piece, target);
                    return(false);
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
    }
示例#12
0
 void Update()
 {
     //Gestion de la camera
     if (color != camPosition && color == "White")
     {
         StartCoroutine(rotatCam(BlackRotation, WhiteRotation, camBlackPosition, camWhitePosition));
         print("change camPosition");
         camPosition = color;
     }
     if (color != camPosition && color == "Black")
     {
         StartCoroutine(rotatCam(WhiteRotation, BlackRotation, camWhitePosition, camBlackPosition));
         print("change camPosition");
         camPosition = color;
     }
     //Si clique gauche
     if (Input.GetMouseButtonDown(0) && CurrentCamera != null)
     {
         RaycastHit hit;
         //Lance un rayon de la caméra vers le curseur souris
         Ray ray = CurrentCamera.ScreenPointToRay(Input.mousePosition);
         if (Physics.Raycast(ray, out hit, 500))
         {
             MeshRenderer meshRenderer = hit.transform.GetComponent <MeshRenderer>();
             //Si l'objet touché possède un Box collider et le tag "WhitePiece" ou "BlackPiece
             if (meshRenderer != null && hit.collider.transform.tag == color + "Piece")
             {
                 //Si une piece a déjà été sélectionnée elle est désélectionné
                 if (pieceSelected != null)
                 {
                     BoardStateManagment.eraseControlAreaOf(pieceSelected);
                 }
                 //La nouvelle pièce ciblé devient sélectionnée
                 pieceSelected = GameObject.Find(hit.collider.transform.name);
                 BoardManagment.moveSelectionCircle(pieceSelected, selectionCircle);
                 particleSelectionCircle.Play();
                 /*BoardStateManagment.displayControlAreaOf(pieceSelected); */
             }
         }
     }
     //Si clique gauche
     if (Input.GetMouseButtonDown(1))
     {
         RaycastHit hit;
         Ray        ray = CurrentCamera.ScreenPointToRay(Input.mousePosition);
         if (Physics.Raycast(ray, out hit, 500) && pieceSelected != null)
         {
             MeshRenderer meshRenderer = hit.transform.GetComponent <MeshRenderer>();
             target = GameObject.Find(hit.transform.name);
             if (meshRenderer != null && (hit.transform.tag == "Tile") || (hit.transform.tag == vscolor + "Piece"))
             {
                 moveOK = BoardManagment.movePiece(target, pieceSelected);
             }
             else
             {
                 moveOK = -1;
             }
         }
         if (moveOK == 0)
         {
             particleSelectionCircle.Stop();
             Debug.Log("GameLoop: verif echec");
             if (VictoryConditions.kingInCheck(vscolor))
             {
                 if (vscolor == "White")
                 {
                     VictoryConditions.whiteKingInCheck = true;
                 }
                 else
                 {
                     VictoryConditions.blackKingInCheck = true;
                 }
                 Debug.Log("VictoryConditions.searchMovementAuthorized");
                 VictoryConditions.searchMovementAuthorized(vscolor);
                 if (VictoryConditions.kingIsCheckMate())
                 {
                     GameObject victoryText = GameObject.Find("VictoryMessage");
                     Text       myText      = victoryText.GetComponent <Text>();
                     myText.text           = vscolor + "player win the game, click to return menu";
                     endGameCanvas.enabled = true;
                 }
             }
             temp          = vscolor;
             vscolor       = color;
             color         = temp;
             pieceSelected = null;
             moveOK        = 1;
         }
     }
 }