Esempio n. 1
0
    /// <summary>
    /// When the player destroys any group
    /// </summary>
    public void OnSliced(int sliceCount, Vector3 centerOfGroup)
    {
        FlyingScore flyScore    = ObjectCamp.instance.GetObject <FlyingScore>();
        int         scorereward = gameSettings.scoreReward * sliceCount;

        flyScore.transform.position = centerOfGroup;
        flyScore += (scorereward.ToString());
        runtimeVars.deltaScore += scorereward;
        SetScore(runtimeVars.score + scorereward);
    }
Esempio n. 2
0
 private void DrawPoints()
 {
     // Parcours la liste des Points et affiche
     for (int i = 0; i < _FlyingScores.Count; i++)
     {
         FlyingScore point = _FlyingScores[i];
         if (point.count() > 0)
         {
             //point.draw();
         }
         else
         {
             _FlyingScores.RemoveAt(i);
             i--;
         }
     }
 }
Esempio n. 3
0
    private void Awake()
    {
        allFreeObjects = new List <Object>();
        instance       = this;
        creationRules  = new List <System.Tuple <System.Type, System.Func <Object> > >();
        creationRules.Add(new System.Tuple <System.Type, System.Func <Object> >(typeof(GameItem), () =>
        {
            GameItem Created = Instantiate(GameManager.instance.generalGameVars.gameItemPrefab).GetComponent <GameItem>();
            return(Created);
        }));
        creationRules.Add(new System.Tuple <System.Type, System.Func <Object> >(typeof(FlyingScore), () =>
        {
            FlyingScore Created = Instantiate(GameManager.instance.generalGameVars.flyingScorePrefab).GetComponent <FlyingScore>();
            return(Created);
        }));

        pushActions = new List <System.Tuple <System.Type, System.Action <Object> > >();
        pushActions.Add(new System.Tuple <System.Type, System.Action <Object> >(typeof(GameItem), (Object o) =>
        {
            GameItem objectx = o as GameItem;
            objectx.ShowHideStar(false);
            objectx.SetBombStyle(false);
            objectx.gameObject.SetActive(false);
            objectx.transform.position = Vector3.zero;
        }));
        pushActions.Add(new System.Tuple <System.Type, System.Action <Object> >(typeof(FlyingScore), (Object o) =>
        {
            FlyingScore objectx = o as FlyingScore;
            objectx.gameObject.SetActive(false);
            objectx.transform.position = Vector3.zero;
        }));

        takeActions = new List <System.Tuple <System.Type, System.Action <Object> > >();
        takeActions.Add(new System.Tuple <System.Type, System.Action <Object> >(typeof(GameItem), (Object o) =>
        {
            GameItem objectx = o as GameItem;
            objectx.gameObject.SetActive(true);
        }));
        takeActions.Add(new System.Tuple <System.Type, System.Action <Object> >(typeof(FlyingScore), (Object o) =>
        {
            FlyingScore objectx = o as FlyingScore;
            objectx.gameObject.SetActive(true);
        }));
    }
Esempio n. 4
0
    void FixedUpdate()
    {
        if (!bInited)
        {
            return;
        }

        //////handle creation of all new enemy bullets, could be done in another place...
        if (GameLevel.bRunReplay)
        {
            ReplayMessage rm;
            while (GameLevel.theReplay.Get(out rm, 1))
            {
                if (rm.iType == (byte)MsgType.BULLETE_NEW)
                {
                    //part of CreateBullet()
                    S_BulletInfo stBulletInfo;
                    stBulletInfo.vPos       = rm.vPos;
                    stBulletInfo.vVel       = rm.vVel;
                    stBulletInfo.fDirection = rm.fDirection;
                    GameObject o = Instantiate(oMap.oBulletObjBase, oMap.transform);
                    o.GetComponent <Bullet>().Init(stBulletInfo, 1 /*iOwnerId*/);

                    if (rm.iGeneralByte1 == 0)
                    {
                        GetComponent <AudioSource>().PlayOneShot(oClipFire);
                    }
                }
            }

            if (GameLevel.theReplay.iVersion >= 1)
            {
                if (iNumHits != 0)
                {
                    iNumHits = 3;             //fake always 3 hits left in replay, until kill below
                }
                while (GameLevel.theReplay.Get(out rm, iOwnerId))
                {
                    if (rm.iType == (byte)MsgType.ENEMY_KILL)
                    {
                        bStartExplosion = true;
                        iNumHits        = 0; //kill below
                    }
                }
            }
        }
        //////

        //wait for explosion to finish and remove object
        if (iNumHits == 0 || bExplosionStarted)
        {
            //start explosion
            //note: some bug above can make this run more than once if hit by rapid fire.
            if (bStartExplosion && !bExplosionStarted)
            {
                bStartExplosion   = false;
                bExplosionStarted = true; //hack: fixes bug

                //create kill message
                if (!GameLevel.bRunReplay && GameLevel.theReplay.iVersion >= 1)
                {
                    ReplayMessage rm = new ReplayMessage();
                    rm.iID   = iOwnerId;
                    rm.iType = (byte)MsgType.ENEMY_KILL;
                    GameLevel.theReplay.Add(rm);
                }

                //play explosion sound
                oAudioSource.PlayOneShot(oClipExplosion);

                //add score
                oMap.iAchieveEnemiesKilled++;
                oMap.player.iScore += SENEMY_SCOREPOINTS[stInfo.iEnemyType];

                //add flying score text
                if (oMap.iLevelType == (int)LevelType.MAP_MISSION)
                {
                    S_FlyingScoreInfo stFlyingScoreInfo;
                    stFlyingScoreInfo.iScore = SENEMY_SCOREPOINTS[stInfo.iEnemyType];
                    stFlyingScoreInfo.vPos   = new Vector3(transform.position.x, transform.position.y, -0.2f);
                    stFlyingScoreInfo.vVel   = new Vector3(UnityEngine.Random.Range(-0.15f, 0.15f), UnityEngine.Random.Range(-0.15f, 0.15f), -0.35f);
                    FlyingScore o = Instantiate(oMap.oFlyingScoreObjBase, oMap.transform);
                    o.Init(stFlyingScoreInfo);
                }

                //set the specific enemytype inactive
                enemy0.SetActive(false);
                enemy1.SetActive(false);
                enemy2.SetActive(false);
                enemy3.SetActive(false);
                enemy4.SetActive(false);
                enemy5.SetActive(false);
                enemy6.SetActive(false);

                oExplosionParticle.Play();
                fExplosionTimer = 0.0f;
            }

            fExplosionTimer += Time.fixedDeltaTime;
            if (fExplosionTimer > 2.0f)
            {
                oExplosionParticle.Stop();
                Destroy(gameObject);
            }
        }
        else
        {
            //move along waypoints
            if (stInfo.iNumWayPoints > 1)
            {
                fWPTime -= Time.fixedDeltaTime;
                if (fWPTime <= 0)
                {
                    Vector2 vDist;
                    float   fDist;

                    vDist = new Vector3(stInfo.vWayPoints[iCurWP].x - vPos.x, stInfo.vWayPoints[iCurWP].y - vPos.y, 0);

                    fDist   = vDist.magnitude;
                    fWPTime = fDist / (stInfo.iSpeed / 10.0f / 32.0f);

                    vVel   = new Vector3(vDist.x / fWPTime, vDist.y / fWPTime, 0);
                    iCurWP = (iCurWP + 1) % stInfo.iNumWayPoints;
                    //send change in movement - m_stMsg1.iMsg |= N_MSG1_MOVEMENT;
                }
                vPos += vVel * Time.fixedDeltaTime;
            }

            //fire bullets
            if (!GameLevel.bRunReplay)
            {
                fFireTime -= Time.fixedDeltaTime;
                if (fFireTime <= 0)
                { //fire bullet, set in replay
                    if (stInfo.iFireInterval == -1)
                    {
                        stInfo.iFireInterval = 2000;                             //previous versions random time becomes 2 sec
                    }
                    fFireTime = stInfo.iFireInterval / 1000.0f;

                    if (InFireRange())
                    {
                        oAudioSource.PlayOneShot(oClipFire);

                        float fDirection = stInfo.iAngle;
                        if (SENEMY_RANDOMBULLETANGLE[stInfo.iEnemyType])
                        {
                            fDirection = Random.value * 359;
                        }

                        for (int i = 0; i < SENEMY_NUMBULLETS[stInfo.iEnemyType]; i++)
                        {
                            Vector2 vFirePoint = vPos;
                            if (stInfo.iEnemyType == 5 && i == 1)
                            {
                                vFirePoint += SENEMY5_FIREPOINT2[stInfo.iAngle / 90] / 10.0f;
                            }
                            else
                            {
                                vFirePoint += SENEMY_FIREPOINT[stInfo.iEnemyType, stInfo.iAngle / 90] / 10.0f;
                            }
                            CreateBullet(vFirePoint, fDirection + SENEMY_BULLETANGLE[stInfo.iEnemyType, i], Bullet.BULLETBASEVEL / 2, i);
                        }
                    }
                }
            }
        }

        //set transform
        transform.position = vPos;
    }