Skip to content

Commit

Permalink
More Heroes support, adds #22
Browse files Browse the repository at this point in the history
  • Loading branch information
Morphan1 committed Aug 9, 2014
1 parent 4f0edf3 commit 6b96771
Show file tree
Hide file tree
Showing 6 changed files with 455 additions and 171 deletions.
31 changes: 15 additions & 16 deletions src/main/java/net/gnomeffinway/depenizen/events/HeroesEvents.java
Expand Up @@ -6,14 +6,13 @@

import net.aufdemrand.denizen.events.EventManager;
import net.aufdemrand.denizen.objects.Element;
import net.aufdemrand.denizen.objects.dEntity;
import net.aufdemrand.denizen.objects.dNPC;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizen.objects.dObject;
import net.gnomeffinway.depenizen.Depenizen;

import net.gnomeffinway.depenizen.objects.dHero;
import org.bukkit.entity.Player;
import net.gnomeffinway.depenizen.objects.heroes.HeroesClass;
import net.gnomeffinway.depenizen.objects.heroes.HeroesHero;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

Expand Down Expand Up @@ -43,20 +42,20 @@ public HeroesEvents(Depenizen depenizen) {
@EventHandler
public void changeClass(ClassChangeEvent event) {

dHero hero = new dHero(event.getHero());
HeroesHero hero = new HeroesHero(event.getHero());
dPlayer player = null;
dNPC npc = null;

Map<String, dObject> context = new HashMap<String, dObject>();
context.put("class", new Element(event.getTo().getName()));
context.put("class", new HeroesClass(event.getTo()));
context.put("cost", new Element(event.getCost()));
context.put("from", new Element(event.getFrom().getName()));
context.put("from", new HeroesClass(event.getFrom()));
context.put("hero", hero);

if (hero.isNPC())
npc = hero.getDenizenNPC();
npc = (dNPC) hero.getDenizenObject();
else if (hero.isPlayer())
player = hero.getDenizenPlayer();
player = (dPlayer) hero.getDenizenObject();

String determination = EventManager.doEvents(Arrays.asList
("hero changes class",
Expand Down Expand Up @@ -85,20 +84,20 @@ else if (hero.isPlayer())
@EventHandler
public void changeExperience(ExperienceChangeEvent event) {

dHero hero = new dHero(event.getHero());
HeroesHero hero = new HeroesHero(event.getHero());
dPlayer player = null;
dNPC npc = null;

Map<String, dObject> context = new HashMap<String, dObject>();
context.put("amount", new Element(event.getExpChange()));
context.put("class", new Element(event.getHeroClass().getName()));
context.put("class", new HeroesClass(event.getHeroClass()));
context.put("hero", hero);
context.put("reason", new Element(event.getSource().name()));

if (hero.isNPC())
npc = hero.getDenizenNPC();
npc = (dNPC) hero.getDenizenObject();
else if (hero.isPlayer())
player = hero.getDenizenPlayer();
player = (dPlayer) hero.getDenizenObject();

String determination = EventManager.doEvents(Arrays.asList
("hero changes experience"),
Expand Down Expand Up @@ -126,20 +125,20 @@ else if (hero.isPlayer())
@EventHandler
public void changeLevel(HeroChangeLevelEvent event) {

dHero hero = new dHero(event.getHero());
HeroesHero hero = new HeroesHero(event.getHero());
dPlayer player = null;
dNPC npc = null;

Map<String, dObject> context = new HashMap<String, dObject>();
context.put("class", new Element(event.getHeroClass().getName()));
context.put("class", new HeroesClass(event.getHeroClass()));
context.put("from", new Element(event.getFrom()));
context.put("hero", hero);
context.put("level", new Element(event.getTo()));

if (hero.isNPC())
npc = hero.getDenizenNPC();
npc = (dNPC) hero.getDenizenObject();
else if (hero.isPlayer())
player = hero.getDenizenPlayer();
player = (dPlayer) hero.getDenizenObject();

String determination = EventManager.doEvents(Arrays.asList
("hero changes level",
Expand Down
151 changes: 0 additions & 151 deletions src/main/java/net/gnomeffinway/depenizen/objects/dHero.java

This file was deleted.

@@ -0,0 +1,148 @@
package net.gnomeffinway.depenizen.objects.heroes;

import com.herocraftonline.heroes.characters.classes.HeroClass;
import net.aufdemrand.denizen.objects.*;
import net.aufdemrand.denizen.tags.Attribute;
import net.gnomeffinway.depenizen.Depenizen;
import org.bukkit.Material;

import java.util.Set;

public class HeroesClass implements dObject {

/////////////////////
// OBJECT FETCHER
/////////////////

@Fetchable("hclass")
public static HeroesClass valueOf(String string) {
if (string == null) return null;

string = string.replace("hclass@", "");

HeroClass heroClass = Depenizen.heroes.getClassManager().getClass(string);
if (heroClass != null) {
return new HeroesClass(heroClass);
}

return null;
}

public static boolean matches(String arg) {
if (valueOf(arg) != null)
return true;

return false;
}


/////////////////////
// CONSTRUCTORS
/////////////////

HeroClass heroClass;

public HeroesClass(HeroClass heroClass) {
this.heroClass = heroClass;
}

public HeroClass getHeroClass() {
return heroClass;
}


/////////////////////
// dObject Methods
/////////////////

private String prefix = "HClass";

@Override
public String getPrefix() {
return prefix;
}

@Override
public dObject setPrefix(String prefix) {
this.prefix = prefix;
return this;
}

@Override
public String debug() {
return (prefix + "='<A>" + identify() + "<G>' ");
}

@Override
public boolean isUnique() {
return true;
}

@Override
public String getObjectType() {
return "Hero Class";
}

@Override
public String identify() {
return "hclass@" + heroClass.getName();
}

@Override
public String identifySimple() {
return identify();
}

@Override
public String getAttribute(Attribute attribute) {

// <--[tag]
// @attribute <hclass@class.allowed_armor>
// @returns dList(dMaterial)
// @description
// Lists the armor materials allowed in the class.
// @plugin Heroes
// -->
if (attribute.startsWith("allowed_armor")) {
Set<Material> allowed = heroClass.getAllowedArmor();
dList list = new dList();
for (Material armor : allowed) {
list.add(dMaterial.getMaterialFrom(armor).identify());
}
return list.getAttribute(attribute.fulfill(1));
}

// <--[tag]
// @attribute <hclass@class.allowed_weapons>
// @returns dList(dMaterial)
// @description
// Lists the weapon materials allowed in the class.
// @plugin Heroes
// -->
if (attribute.startsWith("allowed_weapons")) {
Set<Material> allowed = heroClass.getAllowedWeapons();
dList list = new dList();
for (Material armor : allowed) {
list.add(dMaterial.getMaterialFrom(armor).identify());
}
return list.getAttribute(attribute.fulfill(1));
}

// <--[tag]
// @attribute <hclass@class.name>
// @returns Element
// @description
// Returns the name of the hero class.
// @plugin Heroes
// -->
if (attribute.startsWith("name")) {
return new Element(heroClass.getName()).getAttribute(attribute.fulfill(1));
}

// TODO: more tags

return null;

}

}

0 comments on commit 6b96771

Please sign in to comment.