public void SpawnPlayer(ShmupPlayerData playerData, ShotTypeData shotData, int partyIndex, GameMasterScript.DamageTypes damageType, Character.StatusEffect[] effects) { spellCap = true; playerTransform = Instantiate(shmupCharSpawn, transform.parent).transform; ShmupChar charScript = playerTransform.GetComponent <ShmupChar>(); charScript.SetCharacter(playerData, shotData, partyIndex, damageType, effects); charScript.Respawn(); }
public void SetCharacter(ShmupPlayerData charData, ShotTypeData shotTypeData, int partyIndex, GameMasterScript.DamageTypes setDamageType, Character.StatusEffect[] effects) { partyChar = partyIndex; damageType = setDamageType; hitboxSize = charData.hitboxSize; hitboxSpriteRenderer.transform.localScale = new Vector3(0.25f, 0.25f, 1) * hitboxSize; borderOfLife = charData.borderOfLife; moveSpeed = charData.moveSpeed; focusSpeed = charData.focusSpeed; m_Anim.runtimeAnimatorController = charData.animations; extraBits = new Transform[charData.extraBits.Length]; extraBitAnims = new Animator[extraBits.Length]; extraBitRenderers = new SpriteRenderer[extraBits.Length]; for (int i = 0; i < charData.extraBits.Length; i++) { extraBits[i] = Instantiate(charData.extraBits[i], thisTrans.position, new Quaternion(), extraBitsContainer).transform; extraBitAnims[i] = extraBits[i].GetComponent <Animator>(); extraBitRenderers[i] = extraBits[i].GetComponent <SpriteRenderer>(); } burstsFired = 0; mainFired = 0; subFired = 0; mainFocusFired = 0; subFocusFired = 0; mainFireWait = 0; subFireWait = 0; bombWaitTime = 0; bombTimeRemaining = 0; shotType = shotTypeData; int damageStrength = 0; int defStrength = 0; int mentalDefStrength = 0; int sizeStrength = 0; int dizzyStrenth = 0; int speedStrength = 0; for (int i = 0; i < effects.Length; i++) { if (effects[i].effectType == Character.StatusEffectType.UnfocusLock) { unfocusLocked = true; } else if (effects[i].effectType == Character.StatusEffectType.FocusLock) { focusLocked = true; } else if (effects[i].effectType == Character.StatusEffectType.AttackUp || effects[i].effectType == Character.StatusEffectType.Weak) { if (Mathf.Abs(damageStrength) < Mathf.Abs(effects[i].strength)) { damageStrength = effects[i].strength; } } else if (effects[i].effectType == Character.StatusEffectType.DefenseUp || effects[i].effectType == Character.StatusEffectType.Frail) { if (Mathf.Abs(defStrength) < Mathf.Abs(effects[i].strength)) { defStrength = effects[i].strength; } } else if (effects[i].effectType == Character.StatusEffectType.MentalDefUp) { if (Mathf.Abs(mentalDefStrength) < Mathf.Abs(effects[i].strength)) { mentalDefStrength = effects[i].strength; } } else if (effects[i].effectType == Character.StatusEffectType.Graze || effects[i].effectType == Character.StatusEffectType.GrowBigger) { if (Mathf.Abs(sizeStrength) < Mathf.Abs(effects[i].strength)) { sizeStrength = effects[i].strength; } } else if (effects[i].effectType == Character.StatusEffectType.Dizzy) { if (Mathf.Abs(dizzyStrenth) < Mathf.Abs(effects[i].strength)) { dizzyStrenth = effects[i].strength; } } else if (effects[i].effectType == Character.StatusEffectType.MoveSpeedUp || effects[i].effectType == Character.StatusEffectType.MoveSpeedSlow) { if (Mathf.Abs(speedStrength) < Mathf.Abs(effects[i].strength)) { speedStrength = effects[i].strength; } } } damageEffect = damageStrength; defEffect = defStrength; mentalDefEffect = mentalDefStrength; sizeEffect = sizeStrength; dizzyEffect = dizzyStrenth; speedEffect = speedStrength; damageMult = 1 + (damageEffect * 0.1f); defMult = 1 + (defEffect * 0.1f); mentalDefMult = 1 + (mentalDefEffect * 0.1f); playerScale = 1f + ((sizeEffect > 0) ? sizeEffect * 0.1f : sizeEffect * .2f); hitboxSize *= playerScale; thisTrans.GetChild(0).localScale *= playerScale; }