Starsector API
Loading...
Searching...
No Matches
Actions.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.eventide;
2
3import java.io.IOException;
4import java.util.LinkedHashMap;
5import java.util.Map;
6
7import com.fs.starfarer.api.Global;
8
9public class Actions {
10
11 //public static String TEX = "/photoshop stuff/starfarer/out/pop_anim.png";
12 public static String TEX = "graphics/misc/characterSheet00.png";
13
14 public static String SOUND_CLOTH = "soe_cloth";
15 public static String SOUND_FALL = "soe_fall";
16 public static String SOUND_RIP = "soe_rip";
17 public static String SOUND_CLASH = "soe_clash";
18 public static String SOUND_STEP = "soe_step";
19 public static String SOUND_SWISH = "soe_swish";
20
21 public static final String IDLE = "IDLE";
22 public static final String IDLE_HIGH = "IDLE_HIGH";
23 public static final String BLOCK = "BLOCK";
24 public static final String ATTACK = "ATTACK";
25 public static final String RIPOSTE = "RIPOSTE";
26 public static final String BLOCK_LOW = "BLOCK_LOW";
27 public static final String ATTACK_HIGH = "ATTACK_HIGH";
28 public static final String RIPOSTE_HIGH = "RIPOSTE_HIGH";
29 public static final String ATTACK_RECOVERY = "ATTACK_RECOVERY";
30 public static final String ATTACK_HIGH_RECOVERY = "ATTACK_HIGH_RECOVERY";
31 public static final String MOVE_BACK = "MOVE_BACK";
32 public static final String MOVE_BACK_HIGH = "MOVE_BACK_HIGH";
33 public static final String MOVE_FORWARD = "MOVE_FORWARD";
34 public static final String MOVE_FORWARD_HIGH = "MOVE_FORWARD_HIGH";
35 public static final String GOT_HIT = "GOT_HIT";
36 public static final String FALL = "FALL";
37
38
39 public static Map<String, CharAnim> ANIMATIONS = new LinkedHashMap<String, CharAnim>();
40
41
42 public static void initActions() {
43 try {
44
45// SOUND_CLOTH = "";
46// SOUND_STEP = "";
47// SOUND_CLOTH = "soe_cloth";
48// SOUND_STEP = "soe_step";
49// SOUND_STEP = "mine_ping";
50// SOUND_CLOTH = "";
51// Global.getSettings().profilerSetEnabled(true);
52// Global.getSettings().profilerReset();
53//
54// for (int i = 0; i < 1; i++) {
55// Global.getSettings().profilerBegin("loading sheet");
59// Global.getSettings().profilerEnd();
60 //Global.getSettings().loadTextureConvertBlackToAlpha(TEX);
61
62// Global.getSettings().profilerBegin("loading sprites");
63// File down = new File("/Users/Alex/Downloads/Tiles");
64// for (File curr : down.listFiles()) {
65// if (curr.isFile() && curr.getName().endsWith("png")) {
66// String path = curr.getAbsolutePath();
67// Global.getSettings().unloadTexture(path);
68// Global.getSettings().loadTexture(path);
69// }
70// }
71// Global.getSettings().profilerEnd();
72// }
73// Global.getSettings().profilerPrintResultsTree();
74// Global.getSettings().profilerRestore();
75// Global.getSettings().profilerSetEnabled(false);
76
77
78 } catch (IOException e) {
79 throw new RuntimeException("Error loading texture", e);
80 }
81
82 //float sheetHeight = 2048;
83 float sheetHeight = 1536;
84
85 float frameHeight = 207f; //202.5f;
86 float frameDur = 1f / 7f;
87 frameDur = 1f / 10f;
88 //float scale = 3f;
89 float scale = 1f;
90 //scale = 0.75f;
91 //scale = 0.5f;
92 // frameDur *= 3f;
93 float textureScale = 1f;
94 CharAnim curr;
95
96 float bodyW = 38;
97
98 float y;
99
100 //frameDur *= 3f;
101 //y = 752;
102 y = sheetHeight - frameHeight;
103 curr = new CharAnim(TEX, IDLE, frameHeight);
106 curr.scale = scale;
107 curr.skip(2);
108 curr.addFrame(y, 168, frameDur * 2f);
109 curr.last.setHittable(-60, bodyW);
110 curr.addFrame(y, 167, frameDur * 2f);
111 curr.last.setHittable(-60, bodyW);
112 curr.addFrame(y, 166, frameDur * 2f);
113 curr.last.setHittable(-60, bodyW);
114 curr.skip(-166f + -167); // this goes back!
115 curr.addFrame(y, 166, frameDur * 2f);
116 curr.last.setHittable(-60, bodyW);
117 addAnim(curr, textureScale);
118
119
120 //frameDur *= 3f;
121 y = sheetHeight - frameHeight;
122 curr = new CharAnim(TEX, IDLE_HIGH, frameHeight);
125 curr.scale = scale;
126 curr.skip(505);
127 curr.addFrame(y, 170, frameDur * 2f);
128 curr.last.setHittable(-60, bodyW);
129 curr.addFrame(y, 171, frameDur * 2f);
130 curr.last.setHittable(-60, bodyW);
131 curr.addFrame(y, 169, frameDur * 2f);
132 curr.last.setHittable(-60, bodyW);
133 curr.skip(-171 -169); // * 2f);// - 1f);
134 curr.addFrame(y, 171, frameDur * 2f);
135 curr.last.setHittable(-60, bodyW);
136 addAnim(curr, textureScale);
137
138
139 //frameDur *= 3f;
140 y = 296;
141 y = sheetHeight - frameHeight;
142 curr = new CharAnim(TEX, GOT_HIT, frameHeight);
143 curr.interruptableBy(FALL);
144 curr.scale = scale;
145 curr.initialRelativeOffset = 0f;
146 curr.skip(1015);
147 // moveback ~54 total
148 curr.addFrame(y, 148, frameDur * 2f);
149 curr.last.setHittable(-50, bodyW);
150 curr.last.soundIds.add(SOUND_RIP);
151 //curr.last.move.x -= 14f;
152 curr.addFrame(y, 144, frameDur * 1f);
153 curr.last.setHittable(-40, bodyW);
154 //curr.last.move.x -= 28f;
155 curr.last.move.x -= 15f;
156 curr.last.soundIds.add(SOUND_CLOTH);
157 curr.addFrame(y, 159, frameDur * 1f);
158 curr.last.setHittable(-30 - 14f, bodyW);
159 curr.last.move.x += 14f;
160 curr.moveToIdle.x -= 10f;
161 addAnim(curr, textureScale);
162 //frameDur /= 3f;
163
164
165 //y = 752;
166 //frameDur *= 3;
167 y = sheetHeight - frameHeight * 2f;
168 curr = new CharAnim(TEX, MOVE_FORWARD, frameHeight);
170 curr.scale = scale;
171 // total move should be >= 21 (which is MOVE_BACK's dist)
172 curr.addFrame(y, 166, frameDur);
173 curr.last.setHittable(-60, bodyW);
174 curr.last.move.x += 5f;
175 curr.last.soundIds.add(SOUND_CLOTH);
176 curr.addFrame(y, 167, frameDur);
177 curr.last.setHittable(-54, bodyW);
178 curr.last.move.x += 7f;
179 curr.last.soundIds.add(SOUND_STEP);
180 curr.addFrame(y, 164, frameDur);
181 curr.last.move.x += 8f;
182 curr.last.setHittable(-60, bodyW);
183 curr.moveToIdle.x += 3f;
184 addAnim(curr, textureScale);
185
186 y = sheetHeight - frameHeight * 7f;
187 curr = new CharAnim(TEX, MOVE_FORWARD_HIGH, frameHeight);
189 curr.scale = scale;
190
191 curr.addFrame(y, 175, frameDur);
192 curr.last.setHittable(-60, bodyW);
193 curr.last.move.x += 5f;
194 curr.last.soundIds.add(SOUND_CLOTH);
195 curr.addFrame(y, 171, frameDur);
196 curr.last.setHittable(-54, bodyW);
197 curr.last.move.x += 7f;
198 curr.last.soundIds.add(SOUND_STEP);
199 curr.addFrame(y, 165, frameDur);
200 curr.last.move.x += 8f;
201
202 curr.last.setHittable(-60, bodyW);
203 curr.moveToIdle.x += 3f;
204 addAnim(curr, textureScale);
205
206
207 //frameDur *= 3;
208 y = sheetHeight - frameHeight * 2f;
209 curr = new CharAnim(TEX, MOVE_BACK, frameHeight);
211 curr.scale = scale;
212 curr.skip(507);
213 curr.addFrame(y, 181, frameDur);
214 curr.last.setHittable(-60, bodyW);
215 curr.last.move.x -= 11f;
216 curr.last.soundIds.add(SOUND_CLOTH);
217 curr.addFrame(y, 177, frameDur);
218 curr.last.setHittable(-60, bodyW);
219 curr.last.move.x -= 4f;
220 curr.last.soundIds.add(SOUND_STEP);
221 curr.addFrame(y, 172, frameDur);
222 curr.last.move.x -= 3f;
223 curr.last.setHittable(-60, bodyW);
224 curr.moveToIdle.x -= 1f;
225
226// curr.skip(30);
227// curr.addFrame(y, 38, frameDur);
228// curr.last.setHittable(-12, 12);
229// curr.last.move.x -= 5f;
230// curr.skip(-(30 + 38));
231// curr.addFrame(y, 30, frameDur);
232// curr.last.setHittable(-12, 12);
233 addAnim(curr, textureScale);
234
235
236
237 // move back ~- 21 total
238 y = sheetHeight - frameHeight * 7f;
239 curr = new CharAnim(TEX, MOVE_BACK_HIGH, frameHeight);
241 curr.scale = scale;
242 curr.skip(513);
243
244 curr.addFrame(y, 184, frameDur);
245 curr.last.setHittable(-60, bodyW);
246 curr.last.move.x -= 11f;
247 curr.last.soundIds.add(SOUND_CLOTH);
248 curr.addFrame(y, 179, frameDur);
249 curr.last.setHittable(-60, bodyW);
250 curr.last.move.x -= 4f;
251 curr.last.soundIds.add(SOUND_STEP);
252 curr.addFrame(y, 171, frameDur);
253 curr.last.move.x -= 3f;
254 curr.last.setHittable(-60, bodyW);
255 curr.moveToIdle.x -= 1f;
256
257 addAnim(curr, textureScale);
258
259
260
261 // Block high
262 //y = 752;
263 //frameDur *= 5f;
264 y = sheetHeight - frameHeight * 6f;
265 curr = new CharAnim(TEX, BLOCK, frameHeight);
267 curr.scale = scale;
268
269 // need +26 movement
270 //frameDur *= 3f;
271 curr.addFrame(y, 165 , frameDur);// 40f/60f
272 curr.last.setHittable(-50, bodyW);
273 curr.last.setBlock(-30, 50);
274 curr.last.move.x -= 10f;
275 curr.last.soundIds.add(SOUND_CLOTH);
276
277 curr.addFrame(y, 165, frameDur); // * 80f/60f
278 curr.last.setHittable(-50, bodyW);
279 curr.last.setBlock(-30, 50);
280 curr.last.move.x -= 2f;
281
282
283 curr.addFrame(y, 165, frameDur); // * 70f/60f
284 curr.last.setHittable(-50, bodyW);
285 curr.last.setBlock(-30, 50);
286 curr.last.move.x += 5f;
287
288 curr.addFrame(y, 165, frameDur); // * 50f/60f
289 curr.last.setHittable(-50, bodyW);
290 //curr.last.setBlock(-30, 70);
291 curr.last.move.x += 12f;
292
293 curr.moveToIdle.x += 15f;
294 addAnim(curr, textureScale);
295
296
297 // Block mid
298 // total movement: +24px
299 y = 709;
300 y = sheetHeight - frameHeight * 6f;
301 //frameDur *= 5f;
302 curr = new CharAnim(TEX, BLOCK_LOW, frameHeight);
304 curr.scale = scale;
305 curr.skip(165*4);
306
307 curr.addFrame(y, 165, frameDur); // 40f/60f);
308 curr.last.setHittable(-50, bodyW);
309 curr.last.setBlock(-30, 50);
310 curr.last.move.x -= 4f;
311 curr.last.soundIds.add(SOUND_CLOTH);
312 //curr.last.move.x -= 5f;
313
314 curr.addFrame(y, 165, frameDur); // 50f/60f);
315 curr.last.setHittable(-55, bodyW);
316 curr.last.setBlock(-30, 50);
317 curr.last.move.x += 4f;
318
319 curr.addFrame(y, 165, frameDur); // 100f/60f);
320 curr.last.setHittable(-60, bodyW);
321 curr.last.setBlock(-30, 50);
322 curr.last.move.x += 7f;
323 //curr.last.move.x -= 1f;
324
325 curr.addFrame(y, 165, frameDur); // 50f/60f);
326 curr.last.setHittable(-55, bodyW);
327 //curr.last.setBlock(-30, 90);
328 curr.last.move.x += 5f;
329 curr.moveToIdle.x += 12f;
330 addAnim(curr, textureScale);
331
332
333 y = 804;
334 y = sheetHeight - frameHeight * 3f;
335 //frameDur *= 5f;
336 // Total movement: 0px.
337 curr = new CharAnim(TEX, ATTACK, frameHeight);
339 curr.scale = scale;
340
341 curr.addFrame(y, 118, frameDur);
342 curr.last.setHittable(-40, bodyW);
343 curr.last.move.x -= 20f;
344 curr.last.soundIds.add(SOUND_CLOTH);
345
346 curr.addFrame(y, 95, frameDur);
347 curr.last.setHittable(-25, bodyW);
348 curr.last.move.x -= 20f;
349
350 curr.addFrame(y, 98, frameDur);
351 curr.last.setHittable(-25, bodyW);
352 curr.last.move.x += 10f;
353
354 curr.addFrame(y, 113, frameDur);
355 curr.last.setHittable(-30, bodyW);
356 curr.last.move.x += 4f;
357 curr.last.soundIds.add(SOUND_SWISH);
358 curr.last.soundIds.add(SOUND_CLOTH);
359
360 curr.addFrame(y, 176, frameDur);
361 curr.last.setHittable(-40, bodyW);
362 //curr.last.setAttack(8, 15);
363 curr.last.move.x += 33f;
364
365 curr.addFrame(y, 237, frameDur * 2f);
366 curr.last.setHittable(-45, bodyW);
367 //curr.last.setAttack(18, 15);
368 curr.last.setAttack(35, 83);
369 curr.last.move.x += 40f;
370 curr.last.soundIds.add(SOUND_STEP);
371
372 curr.addFrame(y, 200, frameDur);
373 curr.last.setHittable(-30, bodyW);
374 curr.last.move.x -= 25f;
375 curr.last.soundIds.add(SOUND_CLOTH);
376
377 curr.addFrame(y, 170, frameDur);
378 curr.last.setHittable(-35, bodyW);
379 curr.last.move.x -= 15f;
380
381 curr.moveToIdle.x -= 7f;
382 addAnim(curr, textureScale);
383
384 y = 804;
385 y = sheetHeight - frameHeight * 4f;
386
387 //frameDur *= 5f;
388
389 curr = new CharAnim(TEX, ATTACK_HIGH, frameHeight);
391 curr.scale = scale;
392 //curr.skip(2);
393 //frameDur *= 3f;
394 curr.addFrame(y, 124, frameDur);
395 curr.last.setHittable(-40, bodyW);
396 curr.last.move.x -= 20f;
397 curr.last.soundIds.add(SOUND_CLOTH);
398
399 curr.addFrame(y, 98, frameDur);
400 curr.last.setHittable(-25, bodyW);
401 curr.last.move.x -= 20f;
402
403 curr.addFrame(y, 98, frameDur);
404 curr.last.setHittable(-25, bodyW);
405 curr.last.move.x += 10f;
406
407 curr.addFrame(y, 121, frameDur);
408 curr.last.setHittable(-30, bodyW);
409 curr.last.move.x += 4f;
410 curr.last.soundIds.add(SOUND_SWISH);
411 curr.last.soundIds.add(SOUND_CLOTH);
412
413 curr.addFrame(y, 161, frameDur);
414 curr.last.setHittable(-40, bodyW);
415 curr.last.move.x += 33f;
416
417 curr.addFrame(y, 238, frameDur * 2f);
418 curr.last.setHittable(-45, bodyW);
419 //curr.last.setAttack(18, 15);
420 curr.last.setAttack(35, 83);
421 curr.last.move.x += 40f;
422 curr.last.soundIds.add(SOUND_STEP);
423
424 curr.addFrame(y, 210, frameDur);
425 curr.last.setHittable(-30, bodyW);
426 curr.last.move.x -= 25f;
427 curr.last.soundIds.add(SOUND_CLOTH);
428
429 curr.addFrame(y, 172, frameDur);
430 curr.last.setHittable(-35, bodyW);
431 curr.last.move.x -= 15f;
432 curr.moveToIdle.x -= 7f;
433 addAnim(curr, textureScale);
434
435
436 curr = ANIMATIONS.get(ATTACK).clone();
437 curr.action = RIPOSTE;
438 curr.removeFirstFrame();
439 curr.removeFirstFrame();
440 curr.frames.get(0).move.x -= 28;
441 curr.frames.get(curr.frames.size() - 1).move.x += 5;
442 addAnim(curr, textureScale);
443
444 curr = ANIMATIONS.get(ATTACK_HIGH).clone();
445 curr.action = RIPOSTE_HIGH;
446 curr.removeFirstFrame();
447 curr.removeFirstFrame();
448 //curr.frames.get(0).move.x -= 40;
449 addAnim(curr, textureScale);
450
451 // will need to be adjusted per frame; this is just for testing, split evenly between
452 // the last 2 frames of recovery -am
453 float recoveryMoveBack = 62f;
454 // ah, right! attack recovery *needs* to be this much to counter the back movement of the last part of
455 // the attack that got interrupted by the recovery
456 //recoveryMoveBack = 30f;
457 recoveryMoveBack = 23;
458
459 // Attack recovery ... high?
460 y = 752;
461 y = sheetHeight - frameHeight * 5f;
462 //frameDur *= 5f;
463 curr = new CharAnim(TEX, ATTACK_HIGH_RECOVERY, frameHeight);
465 curr.scale = scale;
466
467 curr.addFrame(y, 192, frameDur);
468 curr.last.setHittable(-45, bodyW);
469 curr.last.move.x += 8f;
470 curr.last.soundIds.add(SOUND_CLASH);
471
472 curr.addFrame(y, 192, frameDur); // +16
473 curr.last.setHittable(-45, bodyW);
474 curr.last.move.x += -22f;// +8f;
475 curr.last.soundIds.add(SOUND_CLOTH);
476
477 curr.addFrame(y, 168, frameDur); // +8
478 curr.last.setHittable(-35, bodyW);
479 curr.last.move.x += -14f;// +4f;
480 curr.last.soundIds.add(SOUND_STEP);
481
482 curr.moveToIdle.x += -6f;
483 addAnim(curr, textureScale);
484
485
486 // Attack recovery mid?
487 // total movement: -16
488
489 y = 752;
490 //y = sheetHeight - frameHeight * 7f;
491 y = sheetHeight - frameHeight * 2f;
492 //frameDur *= 5f;
493 curr = new CharAnim(TEX, ATTACK_RECOVERY, frameHeight);
495 curr.scale = scale;
496
497 curr.skip(1038);
498 curr.addFrame(y, 190, frameDur);
499 curr.last.setHittable(-45, bodyW);
500 curr.last.move.x += 8f;
501 curr.last.soundIds.add(SOUND_CLASH);
502
503 curr.addFrame(y, 176, frameDur);
504 curr.last.setHittable(-35, bodyW);
505 curr.last.move.x += -22f;
506 curr.last.soundIds.add(SOUND_CLOTH);
507
508 y = sheetHeight - frameHeight * 3f;
509 curr.widthSoFar = 1210;
510 curr.addFrame(y, 168, frameDur);
511 curr.last.setHittable(-11, bodyW);
512 curr.last.move.x += -14f;
513 curr.last.soundIds.add(SOUND_STEP);
514
515 curr.moveToIdle.x += -6f;
516
517
518 addAnim(curr, textureScale);
519
520
521 //frameDur *= 5f;
522 y = 296;
523 y = sheetHeight - frameHeight * 5f;
524 //frameDur *= 5f;
525 curr = new CharAnim(TEX, FALL, frameHeight);
526 //curr.interruptableBy(GOT_HIT, FALL);
527 curr.scale = scale;
528 curr.skip(574);
529 //curr.skip(172);
530 curr.addFrame(y, 158, frameDur * 1f);
531 curr.last.setHittable(-40, bodyW);
532 curr.last.move.x -= 0f;
533 curr.last.soundIds.add(SOUND_RIP);
534 curr.addFrame(y, 144, frameDur * 1f);
535 curr.last.setHittable(-40, bodyW);
536 curr.last.move.x -= 45f;
537 curr.last.soundIds.add(SOUND_CLOTH);
538 curr.addFrame(y, 128, frameDur * 1f);
539 curr.last.setHittable(-40, bodyW);
540 curr.last.move.x -= 19f;
541 curr.addFrame(y, 137, frameDur * 1f);
542 curr.last.setHittable(-40, bodyW);
543 curr.last.move.x -= 40f;
544 curr.addFrame(y, 175, frameDur * 1f);
545 curr.last.setHittable(-40, bodyW);
546 curr.last.move.x -= 12f;
547 curr.last.soundIds.add(SOUND_FALL);
548 curr.addFrame(y, 174, frameDur * 1f);
549 curr.last.setHittable(-40, bodyW);
550 curr.last.move.x += 8f;
551
552 curr.widthSoFar = 1049;
553
554 y = sheetHeight - frameHeight * 7f;
555 curr.addFrame(y, 178, 100000f);
556 //curr.last.setHittable(-40, bodyW); non-hittable - no shadow, but otherwise you could still, ah, hit them
557 curr.last.move.x += 2f;
558 curr.last.move.y += 1f;
559
560// curr.addFrame(y, 34, 100000f);
561 //curr.last.move.x -= 8f;
562 curr.moveToIdle.x += 10f;
563 addAnim(curr, textureScale);
564 }
565
566 public static void addAnim(CharAnim anim, float textureScale) {
567 anim.updateTextureScale(textureScale);
568 ANIMATIONS.put(anim.action, anim);
569 }
570}
571
static SettingsAPI getSettings()
Definition Global.java:51
static Map< String, CharAnim > ANIMATIONS
Definition Actions.java:39
static void addAnim(CharAnim anim, float textureScale)
Definition Actions.java:566
void addFrame(float y, float frameWidth, float dur)
void unloadTexture(String filename)
void forceMipmapsFor(String filename, boolean forceMipmaps)
void loadTexture(String filename)