private void MakeText(GameObject model, AbilityCastResult result, AbilityResourceImpactData impactData) { GameObject textGo = PinouApp.Pooler.Retrieve(model, transform); UI_DamageText dmgTxt = textGo.GetComponent <UI_DamageText>(); dmgTxt.Build(result, impactData); _damageTexts.Add(dmgTxt); }
public static AbilityResourceImpactData ReadAbilityResourceImpactData(this NetworkReader reader) { AbilityResourceImpactData impactData = new AbilityResourceImpactData( (EntityBeingResourceType)reader.ReadInt32(), (float)reader.ReadDouble()); return(impactData); }
public void Build(AbilityCastResult result, AbilityResourceImpactData impactData) { _moveStartTime = Time.time; _worldPos = result.Impact; RectTransform.anchoredPosition = Camera.main.WorldToScreenPoint(result.Impact) * (1920f / Screen.width); Vector2 impactScreenPoint = Camera.main.WorldToScreenPoint(result.Impact); Vector2 directionScreenPoint; if (result.KnockbackApplied.sqrMagnitude > 0f) { directionScreenPoint = Camera.main.WorldToScreenPoint(result.Impact + result.KnockbackApplied.normalized); } else { directionScreenPoint = Camera.main.WorldToScreenPoint(result.Impact + result.CastData.CastDirection); } Vector2 textDirection = (directionScreenPoint - impactScreenPoint); if (textDirection.sqrMagnitude > 0f) { textDirection.Normalize(); } else { textDirection = Vector2.right; } float angle = (textDirection.y > 0 ? Mathf.Acos(textDirection.x) : -Mathf.Acos(textDirection.x)) * Mathf.Rad2Deg; RectTransform.rotation = Quaternion.Euler(0, 0, angle); _textTransform.rotation = Quaternion.Euler(0, 0, 0); float dmgValue = Mathf.Abs(impactData.ResourceChange); if (dmgValue < 1f) { _text.text = dmgValue.ToString("0.0"); } else { _text.text = Mathf.FloorToInt(dmgValue).ToString(); } }
private static void ReadAbilityCastDataBody(NetworkReader reader, AbilityCastData castDataToFill) { //Resources Impacts int baseResourcesImpactLength = reader.ReadInt32(); AbilityResourceImpactData[] impactsData = new AbilityResourceImpactData[baseResourcesImpactLength]; for (int i = 0; i < impactsData.Length; i++) { impactsData[i] = reader.ReadAbilityResourceImpactData(); } castDataToFill.FillBase( impactsData, //Vec3 reader.ReadVector3(), reader.ReadVector3()); castDataToFill.FillCastDirection(reader.ReadVector3()); castDataToFill.FillOrigin(reader.ReadVector3()); }
public static AbilityCastResult ReadAbilityCastResult(this NetworkReader reader) { //CastData AbilityCastData castData; AbilityCastIdentifier identifier = ReadAbilityCastIdentifier(reader); if (_storedAbilityCastData.ContainsKey(identifier)) { castData = _storedAbilityCastData[identifier]; } else { castData = new AbilityCastData( identifier.Caster, (AbilityData)PinouApp.Resources.Data.Databases.GetItem(DatabaseType.Ability, identifier.AbilityID), identifier.CastTime, identifier.MultiCastID); _storedAbilityCastData.Add(identifier, castData); } ReadAbilityCastDataBody(reader, castData); AbilityCastResult result = new AbilityCastResult(castData); //Main _ = reader.ReadInt32();//Discards ResultType result.FillVictim(reader.ReadGameObject().GetComponent <Entity>()); result.FillImpact(reader.ReadVector3()); result.FillKnockbackApplied(reader.ReadVector3()); //Resources Changes int resourceChangesLength = reader.ReadInt32(); AbilityResourceImpactData[] resourceChanges = new AbilityResourceImpactData[resourceChangesLength]; for (int i = 0; i < resourceChangesLength; i++) { resourceChanges[i] = reader.ReadAbilityResourceImpactData(); } result.SetResourceChanges(resourceChanges); return(result); }
private void ApplyInfluenceToImpact(AbilityResourceImpactData impact, EntityEquipableAbilityResourcesInfluences influence) { bool signPositive = impact.ResourceChange >= 0; if (influence.UseFactor) { if (influence.AbilitiesResourcesInfluences.InfluencesGlobal || signPositive && influence.AbilitiesResourcesInfluences.InfluencesPositive || signPositive == false && influence.AbilitiesResourcesInfluences.InfluencesNegative) { impact.SetResourceChange(impact.ResourceChange * influence.Factor); } } if (influence.UseFlat) { if (influence.AbilitiesResourcesInfluences.InfluencesGlobal || signPositive && influence.AbilitiesResourcesInfluences.InfluencesPositive || signPositive == false && influence.AbilitiesResourcesInfluences.InfluencesNegative) { impact.SetResourceChange(impact.ResourceChange + influence.Flat); } } }
public static void WriteAbilityResourceImpactData(this NetworkWriter writer, AbilityResourceImpactData impactData) { writer.WriteInt32((int)impactData.ResourceType); writer.WriteDouble(impactData.ResourceChange); }