summaryrefslogtreecommitdiff
path: root/src/main/java/jp/plusplus/fbs/magic/resonance
diff options
context:
space:
mode:
authorBenjamin Culkin <scorpress@gmail.com>2024-08-24 08:16:37 -0400
committerBenjamin Culkin <scorpress@gmail.com>2024-08-24 08:16:37 -0400
commit70c1354a4a96698758a88c032866288f79de6f5a (patch)
treeeca51294e84b90a4cb3230bc2c7900469e784184 /src/main/java/jp/plusplus/fbs/magic/resonance
Initial commitHEADtrunk
Diffstat (limited to 'src/main/java/jp/plusplus/fbs/magic/resonance')
-rw-r--r--src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.classbin0 -> 2739 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java83
-rw-r--r--src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.classbin0 -> 2392 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.java68
4 files changed, 151 insertions, 0 deletions
diff --git a/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.class b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.class
new file mode 100644
index 0000000..f7045b1
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java
new file mode 100644
index 0000000..65b89b1
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java
@@ -0,0 +1,83 @@
+package jp.plusplus.fbs.magic.resonance;
+
+import jp.plusplus.fbs.Registry;
+import jp.plusplus.fbs.api.IMagicEnchant;
+import jp.plusplus.fbs.api.IResonance;
+import net.minecraft.util.StatCollector;
+
+import java.util.LinkedList;
+
+/**
+ * Created by pluslus_F on 2015/06/23.
+ * 特定の魔導書+付与魔法1個以上による共鳴
+ * 付与魔法が複数ある場合は全てに対して動作するように魔法は実装してね
+ */
+public class FlexibleResonance implements IResonance {
+ public String type; //ベースとなる魔法のタイプ
+
+ public LinkedList<Registry.MagicData> enchants=new LinkedList<Registry.MagicData>();
+ public Registry.MagicData base;
+
+ public FlexibleResonance(String type){
+ this.type=type;
+ }
+
+
+ @Override
+ public IResonance copy() {
+ return new FlexibleResonance(type);
+ }
+
+ @Override
+ public boolean isMatch(Registry.MagicData[] magics) {
+ boolean foundBase=false;
+ boolean foundEnchant=false;
+ for(Registry.MagicData md : magics){
+
+ //ベースとなる魔法の判定。ベースが2つ以上あればfalse
+ if(md.title.equals(type)){
+ if(foundBase) return false;
+ foundBase=true;
+ }
+
+ //付与魔法ならフラグを立てる
+ if(IMagicEnchant.class.isAssignableFrom(md.magic)){
+ foundEnchant=true;
+ }
+ }
+
+ return foundBase && foundEnchant;
+ }
+
+ @Override
+ public String getResonanceMagicName() {
+ return "resonance."+type;
+ }
+
+ @Override
+ public String getDisplayMagicName(String[] titles){
+ String sss=StatCollector.translateToLocal("magic.suffix."+type);
+ String ppp=null;
+
+ for(int i=0;i<titles.length;i++){
+ if(titles==null) continue;
+ Registry.MagicData md=Registry.GetMagic(titles[i]);
+ if(IMagicEnchant.class.isAssignableFrom(md.magic)){
+ ppp=StatCollector.translateToLocal("magic.prefix."+md.title);
+ break;
+ }
+ }
+
+ if(StatCollector.canTranslate("locale.fbs.jp")){
+ return ppp+sss;
+ }
+ else{
+ return ppp+" "+sss;
+ }
+ }
+
+ @Override
+ public int priority() {
+ return 0;
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.class b/src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.class
new file mode 100644
index 0000000..f6bcb08
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.java b/src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.java
new file mode 100644
index 0000000..0a44354
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.java
@@ -0,0 +1,68 @@
+package jp.plusplus.fbs.magic.resonance;
+
+import jp.plusplus.fbs.Registry;
+import jp.plusplus.fbs.api.IResonance;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+/**
+ * Created by pluslus_F on 2015/06/23.
+ * 固定された魔導書同士での共鳴
+ */
+public class ShapedResonance implements IResonance {
+ public String[] books;
+ public String title;
+
+ public ShapedResonance(String title, String ... books){
+ this.title=title;
+ this.books=new String[books.length];
+ for(int i=0;i<books.length;i++){
+ this.books[i]=books[i];
+ }
+ }
+
+ @Override
+ public IResonance copy() {
+ return new ShapedResonance(title, books);
+ }
+
+ @Override
+ public boolean isMatch(Registry.MagicData[] magics) {
+ LinkedList<String> list=new LinkedList<String>();
+ for(int i=0;i<this.books.length;i++){
+ list.add(this.books[i]);
+ }
+
+ for(Registry.MagicData bd : magics){
+ boolean find=false;
+ Iterator<String> it=list.iterator();
+ while(it.hasNext()){
+ String t=it.next();
+ if(t.equals(bd.title)){
+ find=true;
+ it.remove();
+ break;
+ }
+ }
+
+ if(!find) return false;
+ }
+
+ return list.isEmpty();
+ }
+
+ @Override
+ public String getResonanceMagicName() {
+ return title;
+ }
+ @Override
+ public String getDisplayMagicName(String[] titles){
+ return Registry.GetLocalizedBookTitle(title);
+ }
+
+ @Override
+ public int priority() {
+ return 100;
+ }
+}