001package com.fs.starfarer.api.campaign; 002 003import java.util.HashMap; 004import java.util.Map; 005 006import com.fs.starfarer.api.fleet.FleetMemberAPI; 007 008public class CombatDamageData { 009 010 public static class DamageToFleetMember { 011 public float hullDamage; 012 } 013 014 public static class DealtByFleetMember { 015 private FleetMemberAPI member; 016 private Map<FleetMemberAPI, DamageToFleetMember> damage = new HashMap<FleetMemberAPI, DamageToFleetMember>(); 017 public DealtByFleetMember(FleetMemberAPI member) { 018 this.member = member; 019 } 020 021 public DamageToFleetMember getDamageTo(FleetMemberAPI target) { 022 DamageToFleetMember damageTo = damage.get(target); 023 if (damageTo == null) { 024 damageTo = new DamageToFleetMember(); 025 damage.put(target, damageTo); 026 } 027 return damageTo; 028 } 029 030 public void addHullDamage(FleetMemberAPI target, float damage) { 031 getDamageTo(target).hullDamage += damage; 032 } 033 034 public FleetMemberAPI getMember() { 035 return member; 036 } 037 038 public Map<FleetMemberAPI, DamageToFleetMember> getDamage() { 039 return damage; 040 } 041 } 042 043 private Map<FleetMemberAPI, DealtByFleetMember> dealt = new HashMap<FleetMemberAPI, DealtByFleetMember>(); 044 045 public Map<FleetMemberAPI, DealtByFleetMember> getDealt() { 046 return dealt; 047 } 048 049 public DealtByFleetMember getDealtBy(FleetMemberAPI member) { 050 DealtByFleetMember dealtBy = dealt.get(member); 051 if (dealtBy == null) { 052 dealtBy = new DealtByFleetMember(member); 053 dealt.put(member, dealtBy); 054 } 055 return dealtBy; 056 } 057 058 public void add(CombatDamageData other) { 059 for (FleetMemberAPI member : other.dealt.keySet()) { 060 DealtByFleetMember curr = getDealtBy(member); 061 DealtByFleetMember adding = other.getDealtBy(member); 062 063 for (FleetMemberAPI target : adding.damage.keySet()) { 064 curr.addHullDamage(target, adding.getDamageTo(target).hullDamage); 065 } 066 } 067 } 068 069} 070 071 072