/// <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); }
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--; } } }
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); })); }
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; }