void OdbierzHpGraczowiRPC(PhotonPlayer ofiaraPP, float currentDamage, PhotonMessageInfo pmi)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            return;
        }

        float DAMAGE       = TanksData.FindTankData(Player.FindPlayer(pmi.sender).tank).damage;
        float DAMAGELOTERY = TanksData.FindTankData(Player.FindPlayer(pmi.sender).tank).damageLotery;
        float tempDamage   = Mathf.Round(Random.Range(DAMAGE - DAMAGELOTERY, DAMAGE + DAMAGELOTERY));

        if (Player.FindPlayer(pmi.sender).tank == DostempneCzolgi.O_I ||
            Player.FindPlayer(pmi.sender).tank == DostempneCzolgi.IS7)
        {
            tempDamage = currentDamage;
        }

        Player ofiara = Player.FindPlayer(ofiaraPP);

        if (ofiara.hp <= tempDamage)
        {
            GetComponent <PhotonView>().RPC("ZabiJOfiareRPC", ofiaraPP, ofiaraPP);
            int reward = TanksData.FindTankData(Player.FindPlayer(pmi.sender).gameObject.GetComponent <PlayerGO>().myPlayer.tank).level * 200;
            Player.FindPlayer(pmi.sender).gameObject.GetComponent <PlayerGO>().myPlayer.score += reward;
        }
        else
        {
            GetComponent <PhotonView>().RPC("OdbierzHpOfiaraRPC", PhotonTargets.All, ofiaraPP, tempDamage);
        }
    }
Example #2
0
 public void UpdateSilnik()
 {
     if (silnikLevel < area_4.Length)
     {
         silnikLevel++;
         tempUpdatePoint--;
         TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank));
     }
     CheckUpdate();
 }
Example #3
0
 public void UpdatePancerz()
 {
     if (pancerzLevel < area_3.Length)
     {
         pancerzLevel++;
         tempUpdatePoint--;
         TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank));
     }
     CheckUpdate();
 }
Example #4
0
 public void UpdateZawieszenie()
 {
     if (zawieszenieLevel < area_2.Length)
     {
         zawieszenieLevel++;
         tempUpdatePoint--;
         TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank));
     }
     CheckUpdate();
 }
Example #5
0
 public void UpdateDzialo()
 {
     if (dzialoLevel < area_1.Length)
     {
         dzialoLevel++;
         tempUpdatePoint--;
         TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank));
     }
     CheckUpdate();
 }
 public void UpdateMyPlayer(int viewID)
 {
     photonView.RPC("SendPlayerRPC", PhotonTargets.All,
                    LocalPlayer.pp,
                    viewID,
                    NationManager.myNation,
                    TanksData.FindTankData(NationManager.ReturnStartTank(NationManager.myNation)).maxHp,
                    NationManager.ReturnStartTank(NationManager.myNation),
                    true); //Player gracza wysyłamy jeśli target ma go na liście graczy
 }
Example #7
0
 /// <summary>
 /// Ustawia wszystkie parametry czołgu.
 /// Wystarczy, że podasz enum czołgu jakiego parametry chcesz ustawić
 /// </summary>
 /// <param name="myTank">enum czołgu którego parametry chcesz przypisać maszynie</param>
 void SetTankParametrs(TankData myTank)
 {
     GetComponent <PlayerGO>().myPlayer.tank = TanksData.FindTankEnum(myTank);
     magazynek             = myTank.maxAmmo;
     maxHp                 = myTank.maxHp;
     damage                = myTank.damage;
     reload                = myTank.reload;
     speed                 = myTank.speed;
     turnSpeed             = myTank.turnSpeed;
     headTurnSpeed         = myTank.headTurnSpeed;
     damageLotery          = myTank.damageLotery;
     reloadBetweenMagazine = myTank.reloadBetweenMagazine;
     GetComponent <TankShot>().ResetMagazine(myTank.maxAmmo);
     if (photonView.isMine)
     {
         GetComponent <PlayerGO>().myPlayer.currentHp = myTank.maxHp;
     }
 }
Example #8
0
    [PunRPC]// \/
    void UstawCzolgRPC(Tanks newTank,
                       float cameraSize,
                       float damage,
                       float damageLotery,
                       float maxHp,
                       float reload,
                       float speed,
                       int maxAmmo)
    {
        TankData mySuspectTank = TanksData.FindTankData(newTank);

        mySuspectTank.cameraSize   = cameraSize;
        mySuspectTank.damage       = damage;
        mySuspectTank.damageLotery = damageLotery;
        mySuspectTank.maxHp        = maxHp;
        mySuspectTank.reload       = reload;
        mySuspectTank.speed        = speed;
        mySuspectTank.maxAmmo      = maxAmmo;

        SetTankObject(mySuspectTank);
    }
Example #9
0
    void PleaseServerForUpdateRPC(Tanks newTank, PhotonMessageInfo pmi)
    {
        #region Security
        int playerOldTankLevel = TanksData.FindTankData(PlayersManager.FindPlayer(pmi.sender).tank).level;  //(int)newTank - 1;// TankManager.czolgii[newTank].level - 1;//Player.FindPlayer(pmi.sender).gameObject.GetComponent<TankEvolution>().myTank.level;
        int requiredScore      = TankEvolution.UstawGranice(playerOldTankLevel);

        if (!PhotonNetwork.isMasterClient)
        {
            Debug.LogError("Tylko server ma prawo ulepszać czołgi graczy!"); //to ma sens ;)
            return;
        }
        if (TanksData.FindTankData(newTank).level != playerOldTankLevel + 1)
        {
            Debug.LogError("Niewłaściwy level 'starego' czołgu gracza! ~" +
                           TanksData.FindTankData(newTank).level + " <= " + (playerOldTankLevel + 1).ToString()
                           ); //może być tylko o jeden mniejszy od nowego albo ten sam
            return;
        }
        if (PlayersManager.FindPlayer(pmi.sender).score < requiredScore)
        {
            Debug.LogError("Gracz ma za mało score!"); //Przynajmniej w kopii gry servera
            return;
        }
        #endregion
        {
            TankData goodTankParametrs = TanksData.FindTankData(newTank);
            PlayersManager.FindPlayer(pmi.sender).tank = newTank;   //Server przechowuje i tylko on sobie ustawia właściwy typ i u siebie trzyma
            photonView.RPC("UstawCzolgRPC", PhotonTargets.All, newTank,
                           goodTankParametrs.cameraSize,
                           goodTankParametrs.damage,
                           goodTankParametrs.damageLotery,
                           goodTankParametrs.maxHp,
                           goodTankParametrs.reload,
                           goodTankParametrs.speed,
                           goodTankParametrs.maxAmmo
                           );
        } //    /
    }     //        \ <- upośledzona strzałka ;)
Example #10
0
 /// <summary>
 /// Bardo niebezpieczna metoda no ale cóż, kiedyś się poprawi ;) TODO: 0_0
 /// </summary>
 /// <param name="tank"></param>
 public void SetStartTankHowNewPlayer(Tanks tank)
 {
     SetTankObject(TanksData.FindTankData(tank));
 }
Example #11
0
 /// <summary>
 /// Ustawia dane czołgu który gracz posiada
 /// </summary>
 public void UpdateTank()
 {
     //UstawCzolg(myTank);
     SetTankObject(TanksData.FindTankData(GetComponent <PlayerGO>().myPlayer.tank));
 }
Example #12
0
    void SetTankObject(TankData myTank)
    {
        //Ustawiam parametry czołgu
        SetTankParametrs(myTank);

        //Ustawiam textury kadłuba, wieży i (jeśli jest) przykrycia lufy
        SetTankTexture(myTank.hullTexture, myTank.turretTexture, myTank.turretCapTexture);

        //Ustawiam pozycję wieży
        SetGameObjectPosition(myTank.turretPos.x, myTank.turretPos.y, turretKeep);

        //Ustawiam pozycję przykrycia lufy
        SetGameObjectPosition(myTank.turretCapPos.x, myTank.turretCapPos.y, turretCap);

        //Ustawiam pozycję wylotu lufy
        SetGameObjectPosition(myTank.barrlelEndPos.x, myTank.barrlelEndPos.y, barrelEndPoint);

        //Ustawiam collider czołgu oraz collider zbierania score
        ResetPolygon(myTank.offset.x, myTank.offset.y, myTank.size.x, myTank.size.y);

        //Jeśli mam przykrycie lufy to włączam ten GameObject, jeśli nie mam to wyłączam
        turretCap.SetActive(myTank.iHaveTurretCap);

        //Jeśli wieża ma ograniczoną rotację to ją muszę wpierw wyprostować
        if (!myTank.turretCan360)
        {
            turret.transform.localRotation = Quaternion.identity;
        }

        //Dla graczy lokalnych
        if (photonView.isMine)
        {
            MainTurret.Instance.OgraniczonaRotacja = !myTank.turretCan360;

            TechTree.Instance.TankSwitchTierButton(myTank.level);

            TechTree.Instance.FindTankButton(TanksData.FindTankEnum(myTank)).OnClick();

            cameraOrthographicSize = myTank.cameraSize + 10;
        }

        #region Wyjątki czołgów

        //OI'emu musimy włączyć działka lub je wyłączyć (jeśli zginął i np. KHA-GO będzie przez to przechodzić)
        if (myTank.tank == Tanks.O_I)
        {
            for (int i = 0; i < turretsOI.Length; i++)
            {
                turretsOI[i].SetActive(true);
                turretsOI[i].GetComponent <AutoShot>().Reset();
            }
        }
        else
        {
            for (int i = 0; i < turretsOI.Length; i++)
            {
                turretsOI[i].SetActive(false);
            }
        }

        //IS7 również posiada wieżyczkę na wieży
        if (myTank.tank == Tanks.IS7)
        {
            turretIS.SetActive(true);
            turretIS.GetComponent <AutoShot>().Reset();
        }
        else
        {
            turretIS.SetActive(false);
        }

        // natomiast HA-TO ma nierychomą wieżyczkę no ale trzeba ją wyprostować (prędkość obrotu ma = 0)
        if (myTank.tank == Tanks.HA_TO_300MM)
        {
            turret.transform.localRotation = Quaternion.identity;
        }
        #endregion
    }
 /// <summary>
 /// Bardo niebezpieczna metoda no ale cóż, kiedyś się poprawi ;) TODO: 0_0
 /// </summary>
 /// <param name="tank"></param>
 public void SetStartTankHowNewPlayer(DostempneCzolgi tank)
 {
     SetTankObject(TanksData.FindTankData(tank));
 }