001package com.fs.starfarer.api.campaign; 002 003import java.util.List; 004 005import com.fs.starfarer.api.fleet.FleetMemberAPI; 006 007public interface BuffManagerAPI { 008 public static interface Buff { 009 void apply(FleetMemberAPI member); 010 //void unapply(MutableShipStatsAPI stats); 011 String getId(); 012 boolean isExpired(); 013 void advance(float days); 014 } 015 016 public static class TempBuff implements Buff { 017 private Buff buff; 018 private float dur; 019 public TempBuff(Buff buff, float dur) { 020 this.buff = buff; 021 this.dur = dur; 022 } 023 public void advance(float days) { 024 dur -= days; 025 } 026 public void apply(FleetMemberAPI member) { 027 buff.apply(member); 028 } 029 public String getId() { 030 return buff.getId(); 031 } 032 public boolean isExpired() { 033 return buff.isExpired() || dur <= 0; 034 } 035 } 036 037 Buff getBuff(String id); 038 void addBuff(Buff b); 039 void removeBuff(String id); 040 041 042 /** 043 * Won't trigger an update of other possibly-related fleet stats. 044 * Useful when modifying a stat that has no effect beyond itself (i.e. a combat stat in campaign). 045 * @param b 046 */ 047 void addBuffOnlyUpdateStat(Buff b); 048 List<Buff> getBuffs(); 049 void advance(float days); 050} 051 052 053 054