Vacation updates

This commit is contained in:
Retera 2021-07-05 13:22:39 -04:00
parent 3f1a19ae5d
commit 7e5c8850e8
15 changed files with 307 additions and 29 deletions

View File

@ -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']))
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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,7 +506,12 @@ public class CSimulation implements CPlayerAPI {
getPlayer(cUnit.getPlayerIndex()).onHeroDeath();
}
private static final class TimeOfDayVariableEvent extends VariableEvent {
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;
public TimeOfDayVariableEvent(final Trigger trigger, final CLimitOp limitOp, final double doubleValue,

View File

@ -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;

View File

@ -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,13 +197,26 @@ public class CAbilityInventory extends AbstractGenericNoIconAbility {
@Override
public void checkCanTargetNoTarget(final CSimulation game, final CUnit unit, final int orderId,
final AbilityTargetCheckReceiver<Void> receiver) {
receiver.orderIdNotAccepted();
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) {
receiver.useOk();
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();
}
}
/**
@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -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());
}
}

View File

@ -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;
}
}

View File

@ -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) {

View File

@ -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);
}

View File

@ -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) {
final RenderUnit selectedUnit2 = MeleeUI.this.selectedUnit;
final CUnit simulationUnit = selectedUnit2.getSimulationUnit();
if (rightClick) {
final RenderUnit selectedUnit2 = MeleeUI.this.selectedUnit;
final CUnit simulationUnit = selectedUnit2.getSimulationUnit();
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());
}
}
}
}

View File

@ -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)));
}

View File

@ -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;