use of objects.Party in project ultimate-java by pantinor.
the class GameScreen method show.
@Override
public void show() {
Gdx.input.setInputProcessor(new InputMultiplexer(this, stage));
gameTimer.active = true;
// load save game if initializing
if (context == null) {
context = new Context();
SaveGame sg = new SaveGame();
try {
sg.read(PARTY_SAV_BASE_FILENAME);
} catch (Exception e) {
e.printStackTrace();
}
LordBritishConversation.saveGame = sg;
Party party = new Party(sg);
context.setParty(party);
context.loadJournalEntries();
// party.getMember(0).getPlayer().klass = ClassType.MAGE;
// party.getMember(0).getPlayer().xp = 899;
// party.getMember(0).getPlayer().hp = 999;
// party.getMember(0).getPlayer().hpMax = 999;
// party.getMember(0).getPlayer().intel = 99;
// party.getMember(0).getPlayer().mp = 999;
// sg.reagents = new int[]{90, 93, 94, 90, 90, 90, 90, 90};
// for (Spell sp : Spell.values()) {
// party.getSaveGame().mixtures[sp.ordinal()] = 99;
// }
// for (Virtue v : Virtue.values()) {
// sg.karma[v.ordinal()] = 0;
// }
//
// party.join(NpcDefaults.Geoffrey.name());
// party.join(NpcDefaults.Shamino.name());
// party.join(NpcDefaults.Katrina.name());
// party.join(NpcDefaults.Mariah.name());
// party.join(NpcDefaults.Dupre.name());
// party.join(NpcDefaults.Iolo.name());
// party.join(NpcDefaults.Julia.name());
// party.join(NpcDefaults.Jaana.name());
//
// sg.food = 30000;
// sg.gold = 999;
// sg.keys = 20;
// sg.gems = 15;
// sg.moves = 2800;
// sg.stones = 0xff;
// sg.runes = 0xff;
// sg.items = 0xff;
// sg.sextants = 1;
// party.getMember(0).getPlayer().status = StatusType.GOOD;
// party.getMember(0).getPlayer().weapon = WeaponType.MAGICAXE;
// party.getMember(0).getPlayer().armor = ArmorType.MYSTICROBE;
// for (int i = 1; i < 16; i++) {
// party.getSaveGame().weapons[i] = 2;
// }
// for (int i = 1; i < 8; i++) {
// party.getSaveGame().armor[i] = 2;
// }
// mainAvatar = shipAnim;
// sg.transport = 0x10;
// sg.items |= Constants.Item.IRON_ORE.getLoc();
// sg.items |= Constants.Item.RUNE_MOLD.getLoc();
// sg.items |= Constants.Item.BOOK.getLoc();
// load the surface world first
loadNextMap(Maps.WORLD, sg.x, sg.y);
// load the dungeon if save game starts in dungeon
if (Maps.get(sg.location) != Maps.WORLD) {
loadNextMap(Maps.get(sg.location), sg.x, sg.y, sg.x, sg.y, sg.dnglevel, Direction.getByValue(sg.orientation + 1), true);
// loadNextMap(Maps.ABYSS, 0, 0, 5, 5, 0, Direction.SOUTH, true);
// loadNextMap(Maps.DESTARD, 0, 0, 3, 5, 3, Direction.SOUTH, true);
// loadNextMap(Maps.DELVE_SORROWS, 0, 0, 3, 19, 1, Direction.EAST, true);
}
for (Virtue v : Virtue.values()) {
v.adjustProgress(sg.karma[v.ordinal()]);
}
party.setTransport(Ultima4.baseTileSet.getTileByIndex(sg.transport));
switch(sg.transport) {
case 31:
mainAvatar = avatarAnim;
break;
case 16:
case 17:
case 18:
case 19:
mainAvatar = shipAnim;
break;
case 20:
case 21:
mainAvatar = horseAnim;
break;
case 24:
mainAvatar = balloonAnim;
break;
}
if (sg.balloonfound == 1 && context.getTransportContext() != TransportContext.BALLOON) {
addBalloonActor(sg.balloonx, sg.balloony);
}
// load objects to surface stage
for (int i = 0; i < 24; i++) {
if (sg.objects_save_tileids[i] != 0 && sg.objects_save_x[i] != 0 && sg.objects_save_y[i] != 0) {
Tile t = Ultima4.baseTileSet.getTileByIndex(sg.objects_save_tileids[i] & 0xff);
Drawable d = new Drawable(Maps.WORLD.getMap(), sg.objects_save_x[i] & 0xff, sg.objects_save_y[i] & 0xff, t, Ultima4.standardAtlas);
Vector3 v = getMapPixelCoords(sg.objects_save_x[i] & 0xff, sg.objects_save_y[i] & 0xff);
d.setX(v.x);
d.setY(v.y);
mapObjectsStage.addActor(d);
}
}
// load monsters to surface map
for (int i = 0; i < 8; i++) {
if (sg.monster_save_tileids[i] != 0 && sg.monster_save_x[i] != 0 && sg.monster_save_y[i] != 0) {
Tile t = Ultima4.baseTileSet.getTileByIndex(sg.monster_save_tileids[i] & 0xff);
Creature cr = Ultima4.creatures.getInstance(CreatureType.get(t.getName()), Ultima4.standardAtlas);
cr.currentX = sg.monster_save_x[i] & 0xff;
cr.currentY = sg.monster_save_y[i] & 0xff;
cr.currentPos = getMapPixelCoords(cr.currentX, cr.currentY);
Maps.WORLD.getMap().addCreature(cr);
}
}
}
context.getParty().addObserver(this);
}
use of objects.Party in project ultimate-java by pantinor.
the class ConversationDialog method initialize.
private void initialize() {
screen.gameTimer.active = false;
setModal(true);
defaults().space(10);
add(internalTable = new Table(Ultima4.skin)).expand().fill();
row();
internalTable.defaults().pad(1);
scrollPane = new LogScrollPane(Ultima4.skin, width);
scrollPane.setHeight(height);
input = new TextField("", Ultima4.skin);
input.setTextFieldListener(new TextFieldListener() {
@Override
public void keyTyped(TextField tf, char key) {
if (key == '\r') {
if (tf.getText().length() == 0) {
if (!cancelHide) {
hide();
}
cancelHide = false;
}
Conversation conversation = person.getConversation();
if (conversation != null) {
if (conversation instanceof CustomInputConversation) {
((CustomInputConversation) conversation).setParty(screen.context.getParty());
}
String query = tf.getText();
Topic t = conversation.matchTopic(query);
if (t != null) {
if (t.getQuery() != null && t.getQuery().equals("join")) {
String name = conversation.getName();
Virtue virtue = screen.context.getParty().getVirtueForJoinable(name);
if (virtue != null) {
CannotJoinError join = screen.context.getParty().join(name);
if (join == CannotJoinError.JOIN_SUCCEEDED) {
scrollPane.add("I am honored to join thee!");
screen.context.getCurrentMap().removeJoinedPartyMemberFromPeopleList(screen.context.getParty());
} else {
scrollPane.add("Thou art not " + (join == CannotJoinError.JOIN_NOT_VIRTUOUS ? virtue.getDescription() : "experienced") + " enough for me to join thee.");
}
} else {
scrollPane.add("I cannot join thee.");
}
} else {
if (!conversation.isStandardQuery(query)) {
screen.context.addEntry(conversation.getName(), conversation.getMap(), t.getPhrase());
}
scrollPane.add(t.getPhrase());
if (t.getQuestion() != null) {
scrollPane.add(t.getQuestion());
}
}
previousTopic = t;
} else {
if (previousTopic != null && previousTopic.getQuestion() != null) {
if (query.toLowerCase().contains("y")) {
screen.context.addEntry(conversation.getName(), conversation.getMap(), previousTopic.getYesResponse());
scrollPane.add(previousTopic.getYesResponse());
if (conversation.getRespAffectsHumility() > 0) {
screen.context.getParty().adjustKarma(KarmaAction.BRAGGED);
}
} else {
screen.context.addEntry(conversation.getName(), conversation.getMap(), previousTopic.getNoResponse());
scrollPane.add(previousTopic.getNoResponse());
if (previousTopic.isLbHeal()) {
for (PartyMember pm : screen.context.getParty().getMembers()) {
pm.heal(HealType.CURE);
pm.heal(HealType.FULLHEAL);
}
Sounds.play(Sound.HEALING);
}
if (conversation.getRespAffectsHumility() > 0) {
screen.context.getParty().adjustKarma(KarmaAction.HUMBLE);
}
}
} else {
scrollPane.add("That I cannot help thee with.");
}
previousTopic = null;
}
} else if (person.getRole() != null && vendor != null) {
String input = tf.getText();
vendor.setResponse(input);
vendor.nextDialog();
}
tf.setText("");
}
}
});
defaults().pad(5);
internalTable.add(scrollPane).maxWidth(width).width(width);
internalTable.row();
internalTable.add(input).maxWidth(width).width(width);
focusListener = new FocusListener() {
@Override
public void keyboardFocusChanged(FocusEvent event, Actor actor, boolean focused) {
if (!focused) {
focusChanged(event);
}
}
@Override
public void scrollFocusChanged(FocusEvent event, Actor actor, boolean focused) {
if (!focused) {
focusChanged(event);
}
}
private void focusChanged(FocusEvent event) {
Stage stage = getStage();
if (isModal() && stage != null && stage.getRoot().getChildren().size > 0 && stage.getRoot().getChildren().peek() == ConversationDialog.this) {
Actor newFocusedActor = event.getRelatedActor();
if (newFocusedActor != null && !newFocusedActor.isDescendantOf(ConversationDialog.this) && !(newFocusedActor.equals(previousKeyboardFocus) || newFocusedActor.equals(previousScrollFocus))) {
event.cancel();
}
}
}
};
person.setTalking(true);
if (person.getConversation() != null) {
if (person.getRole() != null && person.getRole().getRole().equals("lordbritish")) {
LordBritishConversation conv = (LordBritishConversation) person.getConversation();
scrollPane.add(conv.intro(screen.context));
SequenceAction seq = Actions.action(SequenceAction.class);
Party party = screen.context.getParty();
if (party.getMember(0).getPlayer().status == StatusType.DEAD) {
party.getMember(0).heal(HealType.RESURRECT);
party.getMember(0).heal(HealType.FULLHEAL);
seq.addAction(Actions.run(new LBAction(Sound.HEALING, "I resurrect thee.")));
seq.addAction(Actions.delay(3f));
}
for (int i = 0; i < party.getMembers().size(); i++) {
PartyMember pm = party.getMember(i);
if (pm.getPlayer().advanceLevel()) {
seq.addAction(Actions.run(new LBAction(Sound.MAGIC, pm.getPlayer().name + " thou art now level " + pm.getPlayer().getLevel())));
seq.addAction(Actions.delay(3f));
}
}
stage.addAction(seq);
} else if (person.getRole() != null && person.getRole().getRole().equals("hawkwind")) {
HawkwindConversation conv = (HawkwindConversation) person.getConversation();
conv.setParty(screen.context.getParty());
scrollPane.add(conv.intro());
} else {
scrollPane.add("You meet " + person.getConversation().getDescription().toLowerCase() + ".");
}
} else if (person.getRole() != null && person.getRole().getInventoryType() != null) {
vendor = Ultima4.vendorClassSet.getVendorImpl(person.getRole().getInventoryType(), Maps.get(screen.context.getCurrentMap().getId()), screen.context);
vendor.setScreen(screen);
vendor.setScrollPane(scrollPane);
vendor.nextDialog();
}
}
use of objects.Party in project ultimate-java by pantinor.
the class SpellUtil method spellCast.
public static boolean spellCast(final BaseScreen screen, final Context context, final Spell spell, final PartyMember caster, final PartyMember subject, final Direction dir, final int phase) {
if (caster == null || spell == null || screen == null) {
return false;
}
switch(spell) {
case AWAKEN:
case CURE:
case HEAL:
case RESURRECT:
if (subject == null) {
Ultima4.hud.add("Thou must indicate a target to cast the spell!");
return false;
}
break;
case DISPEL:
case ICEBALL:
case KILL:
case SLEEP:
case MAGICMISSILE:
case FIREBALL:
case ENERGY:
case WINDS:
case BLINK:
if (dir == null) {
Ultima4.hud.add("Thou must indicate a direction to cast the spell!");
return false;
}
break;
default:
break;
}
if (caster.getPlayer().mp < spell.getMp()) {
Ultima4.hud.add("Thou dost not have enough magic points!");
return false;
}
Party party = context.getParty();
if (party.getSaveGame().mixtures[spell.ordinal()] < 1) {
Ultima4.hud.add("Thou dost not have the mixture prepared!");
return false;
}
// subtract the mixture for even trying to cast the spell
party.getSaveGame().mixtures[spell.ordinal()]--;
if (context.getAura().getType() == AuraType.NEGATE) {
Ultima4.hud.add("Spell is negated!");
return false;
}
caster.adjustMagic(spell.getMp());
SequenceAction seq = Actions.action(SequenceAction.class);
seq.addAction(Actions.run(new PlaySoundAction(spell.getSound())));
seq.addAction(Actions.delay(0.5f));
seq.addAction(Actions.run(new Runnable() {
@Override
public void run() {
switch(spell) {
case AWAKEN:
spellAwaken(subject);
break;
case CURE:
spellCure(subject);
break;
case HEAL:
spellHeal(subject);
break;
case RESURRECT:
spellRez(subject);
break;
case DISPEL:
spellDispel(screen, context, caster, dir);
break;
case ICEBALL:
spellIceball(screen, caster, dir);
break;
case KILL:
spellKill(screen, caster, dir);
break;
case MAGICMISSILE:
spellMMissle(screen, caster, dir);
break;
case FIREBALL:
spellFireball(screen, caster, dir);
break;
case ENERGY:
spellEnergyField(dir);
break;
case WINDS:
spellWinds(screen, dir);
break;
case BLINK:
spellBlink(screen, dir);
break;
case GATE:
spellGate(screen, phase);
break;
case JINX:
spellJinx(context);
break;
case LIGHT:
spellLight();
break;
case NEGATE:
spellNegate(context);
break;
case OPEN:
spellOpen();
break;
case PROTECTION:
spellProtect(context);
break;
case QUICKNESS:
spellQuick(context);
break;
case SLEEP:
spellSleep(screen, caster, dir);
break;
case TREMOR:
spellTremor(screen, caster);
break;
case UNDEAD:
spellUndead(screen, caster);
break;
case VIEW:
spellView(screen, caster);
break;
case XIT:
spellXit(screen, caster);
break;
case YUP:
spellYup(screen, caster);
break;
case ZDOWN:
spellZdown(screen, caster);
break;
default:
break;
}
}
}));
screen.getStage().addAction(seq);
return true;
}
Aggregations