source: lost-haven/main/Projectile.java

Last change on this file was 8edd04e, checked in by Dmitry Portnoy <dmitry.portnoy@…>, 4 years ago

Make the decompiled game code compile successfully

  • Property mode set to 100644
File size: 4.7 KB
RevLine 
[8edd04e]1package main;
2
3import java.awt.Graphics;
4import java.awt.image.BufferedImage;
5import java.util.*;
6
7public class Projectile {
8
9 private LinkedList<Effect> spawnEffects;
10 private LinkedList<Effect> contactEffects;
11 private BufferedImage img;
12 private int speed;
13 private Point loc;
14 private Point target;
15 private double lastMoved;
16 private boolean done;
17 private boolean penetrate;
18 private Creature creator;
19 private LinkedList<Creature> effectedCreatures;
20
21 public Projectile(BufferedImage img, Point loc) {
22 this.spawnEffects = new LinkedList<Effect>();
23 this.contactEffects = new LinkedList<Effect>();
24 this.speed = 300;
25 this.img = img;
26 this.loc = loc;
27 this.target = loc;
28 this.lastMoved = 0.0D;
29 this.done = false;
30 this.penetrate = false;
31 this.creator = null;
32 this.effectedCreatures = new LinkedList<Creature>();
33 }
34
35 public Projectile(BufferedImage img, Point loc, Creature creator) {
36 this.spawnEffects = new LinkedList<Effect>();
37 this.contactEffects = new LinkedList<Effect>();
38 this.speed = 100;
39 this.img = img;
40 this.loc = loc;
41 this.target = loc;
42 this.lastMoved = 0.0D;
43 this.done = false;
44 this.penetrate = false;
45 this.creator = creator;
46 this.effectedCreatures = new LinkedList<Creature>();
47 }
48
49 public void effectCreature(Creature c) {
50 this.effectedCreatures.add(c);
51 }
52
53 public boolean creatureIsEffected(Creature c) {
54 return this.effectedCreatures.contains(c);
55 }
56
57 public void draw(Graphics g, int playerX, int playerY) {
58 g.drawImage(this.img, 375 + this.loc.getX() - playerX, 275 + this.loc.getY() - playerY, null);
59 }
60
61 public Point move() {
62 Point newLoc;
63 double dist = this.speed * (System.currentTimeMillis() - this.lastMoved) / 1000.0D;
64 if (this.lastMoved == 0.0D) {
65 dist = 0.0D;
66 }
67 this.lastMoved = System.currentTimeMillis();
68 if (Point.dist(this.loc, this.target) <= dist) {
69 newLoc = this.target;
70 } else {
71 int xDif = (int)(Point.xDif(this.loc, this.target) * dist / Point.dist(this.loc, this.target));
72 int yDif = (int)(Point.yDif(this.loc, this.target) * dist / Point.dist(this.loc, this.target));
73 newLoc = new Point(this.loc.getX(), this.loc.getXMin() + xDif, this.loc.getY(), this.loc.getYMin() + yDif);
74 newLoc.setX(newLoc.getX() + newLoc.getXMin() / 100);
75 newLoc.setXMin(newLoc.getXMin() % 100);
76 newLoc.setY(newLoc.getY() + newLoc.getYMin() / 100);
77 newLoc.setYMin(newLoc.getYMin() % 100);
78 if (newLoc.getXMin() < 0) {
79 newLoc.setX(newLoc.getX() - 1);
80 newLoc.setXMin(newLoc.getXMin() + 100);
81 } else if (newLoc.getYMin() < 0) {
82 newLoc.setY(newLoc.getY() - 1);
83 newLoc.setYMin(newLoc.getYMin() + 100);
84 }
85 }
86 return newLoc;
87 }
88
89 public void addSpawnEffect(Effect effect) {
90 this.spawnEffects.add(effect);
91 }
92
93 public void addSpawnEffects(LinkedList<Effect> effects) {
94 this.spawnEffects.addAll(effects);
95 }
96
97 public void applySpawnEffects() {
98 Iterator<Effect> iter = this.spawnEffects.iterator();
99 while (iter.hasNext()) {
100 Effect cur = iter.next();
101 switch (cur.getTarget()) {
102 case Projectile:
103 cur.applyEffect(this);
104 case Creator:
105 cur.applyEffect(this.creator);
106 }
107 }
108 }
109
110 public void addContactEffect(Effect effect) {
111 this.contactEffects.add(effect);
112 }
113
114 public void addContactEffects(LinkedList<Effect> effects) {
115 this.contactEffects.addAll(effects);
116 }
117
118 public void applyContactEffects(Creature cr) {
119 Iterator<Effect> iter = this.contactEffects.iterator();
120 while (iter.hasNext()) {
121 Effect cur = iter.next();
122 switch (cur.getTarget()) {
123 case Projectile:
124 cur.applyEffect(this);
125 case Creator:
126 cur.applyEffect(this.creator);
127 case Enemy:
128 cur.applyEffect(cr);
129 }
130 }
131 }
132
133 public int getSpeed() {
134 return this.speed;
135 }
136
137 public Point getLoc() {
138 return this.loc;
139 }
140
141 public Point getTarget() {
142 return this.target;
143 }
144
145 public boolean isDone() {
146 return this.done;
147 }
148
149 public boolean isPlayerOwned() {
150 return (this.creator.getType() == CreatureType.Player);
151 }
152
153 public boolean penetrates() {
154 return this.penetrate;
155 }
156
157 public Point setTarget() {
158 return this.target;
159 }
160
161 public void setSpeed(int speed) {
162 this.speed = speed;
163 }
164
165 public void setLoc(Point loc) {
166 this.loc = loc;
167 }
168
169 public void setTarget(Point target) {
170 this.target = target;
171 }
172
173 public void setDone(boolean done) {
174 this.done = done;
175 }
176
177 public void setPenetrate(boolean penetrate) {
178 this.penetrate = penetrate;
179 }
180
181 public void setCreator(Creature creator) {
182 this.creator = creator;
183 }
184}
Note: See TracBrowser for help on using the repository browser.