mirror of
https://github.com/Retera/WarsmashModEngine.git
synced 2022-07-31 17:38:59 +02:00
Vacation updates
This commit is contained in:
parent
3f1a19ae5d
commit
7e5c8850e8
@ -50,8 +50,8 @@ project(":desktop") {
|
||||
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
|
||||
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
|
||||
compile "com.google.guava:guava:23.5-jre"
|
||||
compile "org.apache.commons:commons-compress:1.20"
|
||||
compile "net.nikr:dds:1.0.0"
|
||||
implementation 'com.github.inwc3:wc3libs:-SNAPSHOT'
|
||||
compile files(fileTree(dir:'../jars', includes: ['*.jar']))
|
||||
|
||||
}
|
||||
@ -68,8 +68,8 @@ project(":core") {
|
||||
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
|
||||
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
|
||||
compile "com.google.guava:guava:23.5-jre"
|
||||
compile "org.apache.commons:commons-compress:1.20"
|
||||
compile "net.nikr:dds:1.0.0"
|
||||
implementation 'com.github.inwc3:wc3libs:-SNAPSHOT'
|
||||
compile files(fileTree(dir:'../jars', includes: ['*.jar']))
|
||||
|
||||
}
|
||||
|
@ -769,6 +769,12 @@ public class War3MapViewer extends AbstractMdxModelViewer {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawnSpellEffectOnUnit(CUnit unit, War3ID alias) {
|
||||
AbilityUI abilityUI = abilityDataUI.getUI(alias);
|
||||
spawnEffectOnUnit(unit, abilityUI.getTargetArt(0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void spawnUnitReadySound(final CUnit trainedUnit) {
|
||||
final RenderUnit renderPeer = War3MapViewer.this.unitToRenderPeer.get(trainedUnit);
|
||||
|
@ -137,7 +137,7 @@ public class RenderItem implements RenderWidget {
|
||||
this.location[2] = this.simulationItem.getFlyHeight() + groundHeight;
|
||||
|
||||
this.instance.moveTo(this.location);
|
||||
if (this.shadow != null) {
|
||||
if (this.shadow != null && !hidden) {
|
||||
this.shadow.move(dx, dy, map.terrain.centerOffset);
|
||||
this.shadow.setHeightAbsolute(currentWalkableUnder != null, groundHeight + map.imageWalkableZOffset);
|
||||
}
|
||||
|
@ -153,6 +153,7 @@ public class CSimulation implements CPlayerAPI {
|
||||
}
|
||||
|
||||
this.commandErrorListener = commandErrorListener;
|
||||
currentGameDayTimeElapsed = gameplayConstants.getGameDayLength()/2;
|
||||
|
||||
}
|
||||
|
||||
@ -243,6 +244,10 @@ public class CSimulation implements CPlayerAPI {
|
||||
this.handleIdToAbility.put(ability.getHandleId(), ability);
|
||||
}
|
||||
|
||||
protected void onAbilityRemovedFromUnit(final CUnit unit, final CAbility ability) {
|
||||
this.handleIdToAbility.remove(ability.getHandleId());
|
||||
}
|
||||
|
||||
public CAttackProjectile createProjectile(final CUnit source, final float launchX, final float launchY,
|
||||
final float launchFacing, final CUnitAttackMissile attack, final AbilityTarget target, final float damage,
|
||||
final int bounceIndex, final CUnitAttackListener attackListener) {
|
||||
@ -472,6 +477,10 @@ public class CSimulation implements CPlayerAPI {
|
||||
this.simulationRenderController.spawnEffectOnUnit(unit, effectPath);
|
||||
}
|
||||
|
||||
public void createSpellEffectOnUnit(CUnit unit, War3ID alias) {
|
||||
simulationRenderController.spawnSpellEffectOnUnit(unit, alias);
|
||||
}
|
||||
|
||||
public void unitSoundEffectEvent(final CUnit caster, final War3ID alias) {
|
||||
this.simulationRenderController.spawnAbilitySoundEffect(caster, alias);
|
||||
}
|
||||
@ -497,6 +506,11 @@ public class CSimulation implements CPlayerAPI {
|
||||
getPlayer(cUnit.getPlayerIndex()).onHeroDeath();
|
||||
}
|
||||
|
||||
public void removeItem(CItem cItem) {
|
||||
cItem.setHidden(true); // TODO fix
|
||||
cItem.setLife(this, 0);
|
||||
}
|
||||
|
||||
private static final class TimeOfDayVariableEvent extends VariableEvent {
|
||||
private final GlobalScope globalScope;
|
||||
|
||||
|
@ -187,6 +187,12 @@ public class CUnit extends CWidget {
|
||||
ability.onAdd(simulation, this);
|
||||
}
|
||||
|
||||
public void remove(CSimulation simulation, CAbility ability) {
|
||||
this.abilities.remove(ability);
|
||||
simulation.onAbilityRemovedFromUnit(this, ability);
|
||||
ability.onRemove(simulation, this);
|
||||
}
|
||||
|
||||
public War3ID getTypeId() {
|
||||
return this.typeId;
|
||||
}
|
||||
@ -1133,6 +1139,10 @@ public class CUnit extends CWidget {
|
||||
return this.acquisitionRange;
|
||||
}
|
||||
|
||||
public void heal(CSimulation game, int lifeToRegain) {
|
||||
setLife(game, Math.min(getLife() + lifeToRegain, getMaximumLife()));
|
||||
}
|
||||
|
||||
private static final class AutoAttackTargetFinderEnum implements CUnitEnumFunction {
|
||||
private CSimulation game;
|
||||
private CUnit source;
|
||||
|
@ -6,7 +6,9 @@ import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CItemType;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CWidget;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbility;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic.AbstractGenericNoIconAbility;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic.GenericSingleIconActiveAbility;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityPointTarget;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityTarget;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors.CBehavior;
|
||||
@ -16,12 +18,16 @@ import com.etheller.warsmash.viewer5.handlers.w3x.simulation.orders.OrderIds;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityActivationReceiver;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityTargetCheckReceiver;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
private final boolean canDropItems;
|
||||
private final boolean canGetItems;
|
||||
private final boolean canUseItems;
|
||||
private final boolean dropItemsOnDeath;
|
||||
private final CItem[] itemsHeld;
|
||||
private final List<CAbility>[] itemsHeldAbilities;
|
||||
private CBehaviorGetItem behaviorGetItem;
|
||||
private CBehaviorDropItem behaviorDropItem;
|
||||
|
||||
@ -34,6 +40,10 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
this.canUseItems = canUseItems;
|
||||
this.dropItemsOnDeath = dropItemsOnDeath;
|
||||
this.itemsHeld = new CItem[itemCapacity];
|
||||
this.itemsHeldAbilities = new List[itemCapacity];
|
||||
for(int i = 0 ;i < itemsHeldAbilities.length; i++) {
|
||||
itemsHeldAbilities[i] = new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -59,12 +69,22 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
for (int i = 0; i < this.itemsHeld.length; i++) {
|
||||
if (this.itemsHeld[i] == target) {
|
||||
final CItem temp = this.itemsHeld[i];
|
||||
List<CAbility> swapList = itemsHeldAbilities[i];
|
||||
final int dragDropDestinationIndex = orderId - OrderIds.itemdrag00;
|
||||
this.itemsHeld[i] = this.itemsHeld[dragDropDestinationIndex];
|
||||
itemsHeldAbilities[i] = itemsHeldAbilities[dragDropDestinationIndex];
|
||||
this.itemsHeld[dragDropDestinationIndex] = temp;
|
||||
itemsHeldAbilities[dragDropDestinationIndex] = swapList;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if (orderId >= OrderIds.itemuse00 && orderId <= OrderIds.itemuse05) {
|
||||
CAbility cAbility = itemsHeldAbilities[orderId - OrderIds.itemuse00].get(0);
|
||||
int forwardedOrderId = orderId;
|
||||
if(cAbility instanceof GenericSingleIconActiveAbility) {
|
||||
forwardedOrderId = ((GenericSingleIconActiveAbility)cAbility).getBaseOrderId();
|
||||
}
|
||||
cAbility.checkBeforeQueue(game, caster, forwardedOrderId, target);
|
||||
}
|
||||
return super.checkBeforeQueue(game, caster, orderId, target);
|
||||
}
|
||||
@ -74,6 +94,8 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getItemCapacity() {
|
||||
return this.itemsHeld.length;
|
||||
}
|
||||
@ -108,8 +130,14 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
|
||||
@Override
|
||||
public CBehavior beginNoTarget(final CSimulation game, final CUnit caster, final int orderId) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
int slot = orderId - OrderIds.itemuse00;
|
||||
CBehavior behavior = itemsHeldAbilities[slot].get(0).beginNoTarget(game, caster, orderId);
|
||||
CItem cItem = itemsHeld[slot];
|
||||
if(cItem.getItemType().isPerishable()) {
|
||||
dropItem(game, caster, slot, caster.getX(), caster.getY(), false);
|
||||
game.removeItem(cItem);
|
||||
}
|
||||
return behavior;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -169,14 +197,27 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
@Override
|
||||
public void checkCanTargetNoTarget(final CSimulation game, final CUnit unit, final int orderId,
|
||||
final AbilityTargetCheckReceiver<Void> receiver) {
|
||||
if(orderId >= OrderIds.itemuse00 && orderId <= OrderIds.itemuse05) {
|
||||
receiver.targetOk(null);
|
||||
} else {
|
||||
receiver.orderIdNotAccepted();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void innerCheckCanUse(final CSimulation game, final CUnit unit, final int orderId,
|
||||
final AbilityActivationReceiver receiver) {
|
||||
if(orderId >= OrderIds.itemuse00 && orderId <= OrderIds.itemuse05){
|
||||
int slot = orderId - OrderIds.itemuse00;
|
||||
if(itemsHeldAbilities[slot].size() < 1) {
|
||||
receiver.notAnActiveAbility();
|
||||
} else {
|
||||
itemsHeldAbilities[slot].get(0).checkCanUse(game, unit, orderId, receiver);
|
||||
}
|
||||
} else {
|
||||
receiver.useOk();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to give the hero the specified item, returning the item slot to
|
||||
@ -200,6 +241,12 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
if (this.itemsHeld[i] == null) {
|
||||
this.itemsHeld[i] = item;
|
||||
item.setHidden(true);
|
||||
for(War3ID abilityId: item.getItemType().getAbilityList()) {
|
||||
CAbility abilityFromItem = simulation.getAbilityData().getAbilityType(abilityId).createAbility(simulation.getHandleIdAllocator().createId());
|
||||
abilityFromItem.setIconShowing(false);
|
||||
hero.add(simulation, abilityFromItem);
|
||||
itemsHeldAbilities[i].add(abilityFromItem);
|
||||
}
|
||||
hero.onPickUpItem(simulation, item, true);
|
||||
return i;
|
||||
}
|
||||
@ -215,8 +262,11 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
public void dropItem(final CSimulation simulation, final CUnit hero, final int slotIndex, final float x,
|
||||
final float y, final boolean playUserUISounds) {
|
||||
final CItem droppedItem = this.itemsHeld[slotIndex];
|
||||
hero.onDropItem(simulation, droppedItem, true);
|
||||
hero.onDropItem(simulation, droppedItem, playUserUISounds);
|
||||
this.itemsHeld[slotIndex] = null;
|
||||
for(CAbility ability: itemsHeldAbilities[slotIndex]) {
|
||||
hero.remove(simulation, ability);
|
||||
}
|
||||
droppedItem.setHidden(false);
|
||||
droppedItem.setPointAndCheckUnstuck(x, y, simulation);
|
||||
}
|
||||
@ -224,15 +274,20 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
|
||||
public void dropItem(final CSimulation simulation, final CUnit hero, final CItem itemToDrop, final float x,
|
||||
final float y, final boolean playUserUISounds) {
|
||||
boolean foundItem = false;
|
||||
int index = -1;
|
||||
for (int i = 0; i < this.itemsHeld.length; i++) {
|
||||
if (this.itemsHeld[i] == itemToDrop) {
|
||||
this.itemsHeld[i] = null;
|
||||
index = i;
|
||||
foundItem = true;
|
||||
}
|
||||
}
|
||||
if (foundItem) {
|
||||
hero.onDropItem(simulation, itemToDrop, true);
|
||||
hero.onDropItem(simulation, itemToDrop, playUserUISounds);
|
||||
itemToDrop.setHidden(false);
|
||||
for(CAbility ability: itemsHeldAbilities[index]) {
|
||||
hero.remove(simulation, ability);
|
||||
}
|
||||
itemToDrop.setPointAndCheckUnstuck(x, y, simulation);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,101 @@
|
||||
package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.item;
|
||||
|
||||
import com.etheller.warsmash.util.War3ID;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CSimulation;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CWidget;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.generic.AbstractGenericSingleIconNoSmartActiveAbility;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityPointTarget;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.targeting.AbilityTarget;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.behaviors.CBehavior;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.orders.OrderIds;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityActivationReceiver;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.util.AbilityTargetCheckReceiver;
|
||||
|
||||
public class CAbilityItemHeal extends AbstractGenericSingleIconNoSmartActiveAbility {
|
||||
private final int lifeToRegain;
|
||||
|
||||
public CAbilityItemHeal(int handleId, War3ID alias, int lifeToRegain) {
|
||||
super(handleId, alias);
|
||||
this.lifeToRegain = lifeToRegain;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void innerCheckCanTarget(CSimulation game, CUnit unit, int orderId, CWidget target, AbilityTargetCheckReceiver<CWidget> receiver) {
|
||||
receiver.orderIdNotAccepted();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void innerCheckCanTarget(CSimulation game, CUnit unit, int orderId, AbilityPointTarget target, AbilityTargetCheckReceiver<AbilityPointTarget> receiver) {
|
||||
receiver.orderIdNotAccepted();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void innerCheckCanTargetNoTarget(CSimulation game, CUnit unit, int orderId, AbilityTargetCheckReceiver<Void> receiver) {
|
||||
if(orderId == getBaseOrderId()) {
|
||||
receiver.targetOk(null);
|
||||
} else {
|
||||
receiver.orderIdNotAccepted();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void innerCheckCanUse(CSimulation game, CUnit unit, int orderId, AbilityActivationReceiver receiver) {
|
||||
receiver.useOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBaseOrderId() {
|
||||
return OrderIds.heal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isToggleOn() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAdd(CSimulation game, CUnit unit) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemove(CSimulation game, CUnit unit) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTick(CSimulation game, CUnit unit) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelFromQueue(CSimulation game, CUnit unit, int orderId) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkBeforeQueue(CSimulation game, CUnit caster, int orderId, AbilityTarget target) {
|
||||
if(target == null && orderId == getBaseOrderId()) {
|
||||
caster.heal(game, lifeToRegain);
|
||||
game.createSpellEffectOnUnit(caster, getAlias());
|
||||
return false;
|
||||
}
|
||||
return super.checkBeforeQueue(game, caster, orderId, target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CBehavior begin(CSimulation game, CUnit caster, int orderId, CWidget target) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CBehavior begin(CSimulation game, CUnit caster, int orderId, AbilityPointTarget point) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CBehavior beginNoTarget(CSimulation game, CUnit caster, int orderId) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.definitions.impl;
|
||||
|
||||
import com.etheller.warsmash.units.manager.MutableObjectData.MutableGameObject;
|
||||
import com.etheller.warsmash.util.War3ID;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.CAbilityType;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.definitions.CAbilityTypeDefinition;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.impl.CAbilityTypeChannelTest;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.impl.CAbilityTypeItemHeal;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.impl.CAbilityTypeItemHealLevelData;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.CTargetType;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
public class CAbilityTypeDefinitionItemHeal extends AbstractCAbilityTypeDefinition<CAbilityTypeItemHealLevelData>
|
||||
implements CAbilityTypeDefinition {
|
||||
protected static final War3ID HIT_POINTS_GAINED = War3ID.fromString("Ihpg");
|
||||
|
||||
@Override
|
||||
protected CAbilityTypeItemHealLevelData createLevelData(final MutableGameObject abilityEditorData,
|
||||
final int level) {
|
||||
final String targetsAllowedAtLevelString = abilityEditorData.getFieldAsString(TARGETS_ALLOWED, level);
|
||||
final int hitPointsGained = abilityEditorData.getFieldAsInteger(HIT_POINTS_GAINED, level);
|
||||
final EnumSet<CTargetType> targetsAllowedAtLevel = CTargetType.parseTargetTypeSet(targetsAllowedAtLevelString);
|
||||
return new CAbilityTypeItemHealLevelData(targetsAllowedAtLevel, hitPointsGained);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CAbilityType<?> innerCreateAbilityType(final War3ID alias, final MutableGameObject abilityEditorData,
|
||||
final List<CAbilityTypeItemHealLevelData> levelData) {
|
||||
return new CAbilityTypeItemHeal(alias, abilityEditorData.getCode(), levelData);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.impl;
|
||||
|
||||
import com.etheller.warsmash.util.War3ID;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbility;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.item.CAbilityItemHeal;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.test.CAbilityChannelTest;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.CAbilityType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CAbilityTypeItemHeal extends CAbilityType<CAbilityTypeItemHealLevelData> {
|
||||
|
||||
public CAbilityTypeItemHeal(final War3ID alias, final War3ID code,
|
||||
final List<CAbilityTypeItemHealLevelData> levelData) {
|
||||
super(alias, code, levelData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CAbility createAbility(final int handleId) {
|
||||
final CAbilityTypeItemHealLevelData levelData = getLevelData(0);
|
||||
return new CAbilityItemHeal(handleId, getAlias(), levelData.getLifeToRegain());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.impl;
|
||||
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.types.CAbilityTypeLevelData;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.combat.CTargetType;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
public class CAbilityTypeItemHealLevelData extends CAbilityTypeLevelData {
|
||||
private final int lifeToRegain;
|
||||
|
||||
public CAbilityTypeItemHealLevelData(final EnumSet<CTargetType> targetsAllowed, final int lifeToRegain) {
|
||||
super(targetsAllowed);
|
||||
this.lifeToRegain = lifeToRegain;
|
||||
}
|
||||
|
||||
public int getLifeToRegain() {
|
||||
return lifeToRegain;
|
||||
}
|
||||
}
|
@ -42,6 +42,7 @@ public class CAbilityData {
|
||||
this.codeToAbilityTypeDefinition.put(War3ID.fromString("Arep"), new CAbilityTypeDefinitionHumanRepair());
|
||||
this.codeToAbilityTypeDefinition.put(War3ID.fromString("Avul"), new CAbilityTypeDefinitionInvulnerable());
|
||||
this.codeToAbilityTypeDefinition.put(War3ID.fromString("Acoi"), new CAbilityTypeDefinitionCoupleInstant());
|
||||
this.codeToAbilityTypeDefinition.put(War3ID.fromString("AIhe"), new CAbilityTypeDefinitionItemHeal());
|
||||
}
|
||||
|
||||
public CAbilityType<?> getAbilityType(final War3ID alias) {
|
||||
|
@ -52,6 +52,8 @@ public interface SimulationRenderController {
|
||||
|
||||
void spawnEffectOnUnit(CUnit unit, String effectPath);
|
||||
|
||||
void spawnSpellEffectOnUnit(CUnit unit, War3ID alias);
|
||||
|
||||
void spawnUIUnitGetItemSound(CUnit cUnit, CItem item);
|
||||
|
||||
void spawnUIUnitDropItemSound(CUnit cUnit, CItem item);
|
||||
@ -61,4 +63,5 @@ public interface SimulationRenderController {
|
||||
void unitPreferredSelectionReplacement(CUnit unit, CUnit newUnit);
|
||||
|
||||
void heroRevived(CUnit trainedUnit);
|
||||
|
||||
}
|
||||
|
@ -91,19 +91,8 @@ import com.etheller.warsmash.viewer5.handlers.w3x.rendersim.ability.IconUI;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.rendersim.ability.ItemUI;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.rendersim.ability.UnitIconUI;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.rendersim.commandbuttons.CommandButtonListener;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CDestructable;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CGameplayConstants;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CItem;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CItemType;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CPlayerStateListener;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.*;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnit.QueueItemType;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnitClassification;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnitEnumFunction;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnitStateListener;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CUnitType;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CWidget;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.CWidgetFilterFunction;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbility;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbilityAttack;
|
||||
import com.etheller.warsmash.viewer5.handlers.w3x.simulation.abilities.CAbilityGeneric;
|
||||
@ -2299,7 +2288,7 @@ public class MeleeUI implements CUnitStateListener, CommandButtonListener, Comma
|
||||
}
|
||||
this.recycleStringBuilder.append(uberTip);
|
||||
inventoryIcon.setCommandButtonData(iconUI.getIcon(), 0,
|
||||
activelyUsed ? itemType.getCooldownGroup().getValue() : 0, index + 1, activelyUsed,
|
||||
activelyUsed ? (OrderIds.itemuse00+index) : 0, index + 1, activelyUsed,
|
||||
false, false, itemUI.getName(), this.recycleStringBuilder.toString(),
|
||||
itemType.getGoldCost(), itemType.getLumberCost(), 0);
|
||||
}
|
||||
@ -3155,9 +3144,9 @@ public class MeleeUI implements CUnitStateListener, CommandButtonListener, Comma
|
||||
private class ItemCommandCardCommandListener implements CommandCardCommandListener {
|
||||
@Override
|
||||
public void onClick(final int abilityHandleId, final int orderId, final boolean rightClick) {
|
||||
if (rightClick) {
|
||||
final RenderUnit selectedUnit2 = MeleeUI.this.selectedUnit;
|
||||
final CUnit simulationUnit = selectedUnit2.getSimulationUnit();
|
||||
if (rightClick) {
|
||||
final CAbilityInventory inventoryData = simulationUnit.getInventoryData();
|
||||
final int slot = orderId - 1;
|
||||
final CItem itemInSlot = inventoryData.getItemInSlot(slot);
|
||||
@ -3177,6 +3166,19 @@ public class MeleeUI implements CUnitStateListener, CommandButtonListener, Comma
|
||||
MeleeUI.this.activeCommandUnit = selectedUnit2;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
CSimulation game = war3MapViewer.simulation;
|
||||
BooleanAbilityActivationReceiver receiver = BooleanAbilityActivationReceiver.INSTANCE;
|
||||
CAbilityInventory inventoryData = simulationUnit.getInventoryData();
|
||||
inventoryData.checkCanUse(game, simulationUnit, orderId, receiver);
|
||||
if(receiver.isOk()) {
|
||||
BooleanAbilityTargetCheckReceiver<Void> targetReceiver = BooleanAbilityTargetCheckReceiver.getInstance();
|
||||
targetReceiver.reset();
|
||||
inventoryData.checkCanTargetNoTarget(game, simulationUnit, orderId, targetReceiver);
|
||||
if(targetReceiver.isTargetable()) {
|
||||
MeleeUI.this.unitOrderListener.issueImmediateOrder(simulationUnit.getHandleId(), inventoryData.getHandleId(), orderId, isShiftDown());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,6 @@ import com.hiveworkshop.rms.parsers.mdlx.MdlxModel;
|
||||
|
||||
public class MdxUtils {
|
||||
public static MdlxModel loadMdlx(final InputStream inputStream) throws IOException {
|
||||
|
||||
return new MdlxModel(ByteBuffer.wrap(IOUtils.toByteArray(inputStream)));
|
||||
}
|
||||
|
||||
|
@ -4,10 +4,9 @@ import static org.lwjgl.openal.AL10.AL_ORIENTATION;
|
||||
import static org.lwjgl.openal.AL10.AL_POSITION;
|
||||
import static org.lwjgl.openal.AL10.alListener;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.*;
|
||||
import java.nio.FloatBuffer;
|
||||
import java.util.Date;
|
||||
|
||||
import org.lwjgl.BufferUtils;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
@ -38,6 +37,17 @@ import com.etheller.warsmash.viewer5.gl.WireframeExtension;
|
||||
|
||||
public class DesktopLauncher {
|
||||
public static void main(final String[] arg) {
|
||||
new File("Logs").mkdir();
|
||||
try {
|
||||
System.setOut(new PrintStream(new FileOutputStream(new File("Logs/"+System.currentTimeMillis()+".out.log"))));
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
System.setErr(new PrintStream(new FileOutputStream(new File("Logs/"+System.currentTimeMillis()+".err.log"))));
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
final LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
|
||||
config.useGL30 = true;
|
||||
config.gles30ContextMajorVersion = 3;
|
||||
|
Loading…
Reference in New Issue
Block a user