1 package cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor;
2
3 import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType;
4 import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemTypeTranslator;
5
6
7
8
9
10
11 public class WeaponDescriptor extends ItemDescriptor {
12
13 private final ItemTypeTranslator itemTypeTranslator;
14
15 public WeaponDescriptor(ItemTypeTranslator translator) {
16 this.itemTypeTranslator = translator;
17 }
18
19
20 @ItemDescriptorField
21 private boolean melee = false;
22 @ItemDescriptorField
23 private boolean sniping = false;
24 @ItemDescriptorField
25 private boolean usesAltAmmo = false;
26
27
28 @ItemDescriptorField
29 private String priFireModeType;
30 @ItemDescriptorField
31 private boolean priSplashDamage = false;
32 @ItemDescriptorField
33 private boolean priSplashJump = false;
34 @ItemDescriptorField
35 private boolean priRecomSplashDamage = false;
36 @ItemDescriptorField
37 private boolean priTossed = false;
38 @ItemDescriptorField
39 private boolean priLeadTarget = false;
40 @ItemDescriptorField
41 private boolean priInstantHit = false;
42 @ItemDescriptorField
43 private boolean priFireOnRelease = false;
44 @ItemDescriptorField
45 private boolean priWaitForRelease = false;
46
47 @ItemDescriptorField
48 private boolean priModeExclusive = false;
49 @ItemDescriptorField
50 private double priFireRate = 0;
51 @ItemDescriptorField
52 private double priBotRefireRate = 0;
53
54 @ItemDescriptorField
55 private int priAmmoPerFire = 0;
56 @ItemDescriptorField
57 private int priAmmoClipSize = 0;
58 @ItemDescriptorField
59 private double priAimError = 0;
60 @ItemDescriptorField
61 private double priSpread = 0;
62 @ItemDescriptorField
63 private int priSpreadStyle = 0;
64 @ItemDescriptorField
65 private int priFireCount = 0;
66 @ItemDescriptorField
67 private double priDamageAtten = 0;
68
69
70
71 @ItemDescriptorField
72 private String priAmmoType;
73 @ItemDescriptorField
74 private int priInitialAmount = 0;
75 @ItemDescriptorField
76 private int priMaxAmount = 0;
77 @ItemDescriptorField
78 private double priMaxRange = 0;
79
80
81 @ItemDescriptorField
82 private String priDamageType;
83 @ItemDescriptorField
84 private boolean priArmorStops = true;
85 @ItemDescriptorField
86 private boolean priAlwaysGibs = false;
87 @ItemDescriptorField
88 private boolean priSpecial = false;
89 @ItemDescriptorField
90 private boolean priDetonatesGoop = false;
91 @ItemDescriptorField
92 private boolean priSuperWeapon = false;
93 @ItemDescriptorField
94 private boolean priExtraMomZ = false;
95
96
97 @ItemDescriptorField
98 private String priProjType;
99 @ItemDescriptorField
100 private double priDamage = 0;
101 @ItemDescriptorField
102 private double priSpeed = 0;
103 @ItemDescriptorField
104 private double priMaxSpeed = 0;
105 @ItemDescriptorField
106 private double priLifeSpan = 0;
107 @ItemDescriptorField
108 private double priDamageRadius = 0;
109 @ItemDescriptorField
110 private double priTossZ = 0;
111 @ItemDescriptorField
112 private double priMaxEffectDistance = 0;
113
114
115 @ItemDescriptorField
116 private String secFireModeType;
117 @ItemDescriptorField
118 private boolean secSplashDamage = false;
119 @ItemDescriptorField
120 private boolean secSplashJump = false;
121 @ItemDescriptorField
122 private boolean secRecomSplashDamage = false;
123 @ItemDescriptorField
124 private boolean secTossed = false;
125 @ItemDescriptorField
126 private boolean secLeadTarget = false;
127 @ItemDescriptorField
128 private boolean secInstantHit = false;
129 @ItemDescriptorField
130 private boolean secFireOnRelease = false;
131 @ItemDescriptorField
132 private boolean secWaitForRelease = false;
133
134 @ItemDescriptorField
135 private boolean secModeExclusive = false;
136 @ItemDescriptorField
137 private double secFireRate = 0;
138 @ItemDescriptorField
139 private double secBotRefireRate = 0;
140
141 @ItemDescriptorField
142 private int secAmmoPerFire = 0;
143 @ItemDescriptorField
144 private int secAmmoClipSize = 0;
145 @ItemDescriptorField
146 private double secAimError = 0;
147 @ItemDescriptorField
148 private double secSpread = 0;
149 @ItemDescriptorField
150 private int secSpreadStyle = 0;
151 @ItemDescriptorField
152 private int secFireCount = 0;
153 @ItemDescriptorField
154 private double secDamageAtten = 0;
155
156
157
158 @ItemDescriptorField
159 private String secAmmoType;
160 @ItemDescriptorField
161 private int secInitialAmount = 0;
162 @ItemDescriptorField
163 private int secMaxAmount = 0;
164 @ItemDescriptorField
165 private double secMaxRange = 0;
166
167
168 @ItemDescriptorField
169 private String secDamageType;
170 @ItemDescriptorField
171 private boolean secArmorStops = true;
172 @ItemDescriptorField
173 private boolean secAlwaysGibs = false;
174 @ItemDescriptorField
175 private boolean secSpecial = false;
176 @ItemDescriptorField
177 private boolean secDetonatesGoop = false;
178 @ItemDescriptorField
179 private boolean secSuperWeapon = false;
180 @ItemDescriptorField
181 private boolean secExtraMomZ = false;
182
183
184 @ItemDescriptorField
185 private String secProjType;
186 @ItemDescriptorField
187 private double secDamage = 0;
188 @ItemDescriptorField
189 private double secSpeed = 0;
190 @ItemDescriptorField
191 private double secMaxSpeed = 0;
192 @ItemDescriptorField
193 private double secLifeSpan = 0;
194 @ItemDescriptorField
195 private double secDamageRadius = 0;
196 @ItemDescriptorField
197 private double secTossZ = 0;
198 @ItemDescriptorField
199 private double secMaxEffectDistance = 0;
200
201 @Override
202 public String toString() {
203 return "WeaponDescriptor[pickupType="+ getPickupType() + ", inventoryType=" + getInventoryType() + ", itemCategory=" + getItemCategory() + "]";
204 }
205
206
207
208
209
210
211
212 public boolean isMelee() {
213 return melee;
214 }
215
216
217
218
219
220
221
222 public boolean isSniping() {
223 return sniping;
224 }
225
226
227
228
229
230
231
232 public boolean isUsesAltAmmo() {
233 return usesAltAmmo;
234 }
235
236
237
238
239
240
241
242
243 public String getPriFireModeType() {
244 return priFireModeType;
245 }
246
247
248
249
250
251
252
253 public boolean isPriSplashDamage() {
254 return priSplashDamage;
255 }
256
257
258
259
260
261
262 public boolean isPriSplashJump() {
263 return priSplashJump;
264 }
265
266
267
268
269
270
271
272 public boolean isPriRecomSplashDamage() {
273 return priRecomSplashDamage;
274 }
275
276
277
278
279
280
281
282 public boolean isPriTossed() {
283 return priTossed;
284 }
285
286
287
288
289
290
291
292
293 public boolean isPriLeadTarget() {
294 return priLeadTarget;
295 }
296
297
298
299
300
301
302
303
304 public boolean isPriInstantHit() {
305 return priInstantHit;
306 }
307
308
309
310
311
312
313
314
315
316 public boolean isPriFireOnRelease() {
317 return priFireOnRelease;
318 }
319
320
321
322
323
324
325
326
327 public boolean isPriWaitForRelease() {
328 return priWaitForRelease;
329 }
330
331
332
333
334
335
336
337 public boolean isPriModeExclusive() {
338 return priModeExclusive;
339 }
340
341
342
343
344
345
346
347 public double getPriFireRate() {
348 return priFireRate;
349 }
350
351
352
353
354
355
356
357 public double getPriBotRefireRate() {
358 return priBotRefireRate;
359 }
360
361
362
363
364
365
366 public int getPriAmmoPerFire() {
367 return priAmmoPerFire;
368 }
369
370
371
372
373
374
375
376 public int getPriAmmoClipSize() {
377 return priAmmoClipSize;
378 }
379
380
381
382
383
384
385 public double getPriAimError() {
386 return priAimError;
387 }
388
389
390
391
392
393
394
395 public double getPriSpread() {
396 return priSpread;
397 }
398
399
400
401
402
403
404
405
406
407
408
409 public int getPriSpreadStyle() {
410 return priSpreadStyle;
411 }
412
413
414
415
416
417
418
419 public int getPriFireCount() {
420 return priFireCount;
421 }
422
423
424
425
426
427
428 public double getPriDamageAtten() {
429 return priDamageAtten;
430 }
431
432
433
434
435
436
437
438
439
440
441 public String getPriAmmoType() {
442 return priAmmoType;
443 }
444
445 private ItemType priAmmoItemType = null;
446
447
448
449
450
451 public ItemType getPriAmmoItemType() {
452 if (getPriAmmoType() == null) return null;
453 if (priAmmoItemType != null) return priAmmoItemType;
454 priAmmoItemType = itemTypeTranslator.get(getPriAmmoType());
455 return priAmmoItemType;
456 }
457
458
459
460
461
462
463
464 public int getPriInitialAmount() {
465 return priInitialAmount;
466 }
467
468
469
470
471
472
473 public int getPriMaxAmount() {
474 return priMaxAmount;
475 }
476
477
478
479
480
481
482
483 public double getPriMaxRange() {
484 return priMaxRange;
485 }
486
487
488
489
490
491
492
493 public String getPriDamageType() {
494 return priDamageType;
495 }
496
497
498
499
500
501
502 public boolean isPriArmorStops() {
503 return priArmorStops;
504 }
505
506
507
508
509
510
511 public boolean isPriAlwaysGibs() {
512 return priAlwaysGibs;
513 }
514
515
516
517
518
519
520
521 public boolean isPriSpecial() {
522 return priSpecial;
523 }
524
525
526
527
528
529
530
531 public boolean isPriDetonatesGoop() {
532 return priDetonatesGoop;
533 }
534
535
536
537
538
539
540
541 public boolean isPriSuperWeapon() {
542 return priSuperWeapon;
543 }
544
545
546
547
548
549
550
551 public boolean isPriExtraMomZ() {
552 return priExtraMomZ;
553 }
554
555
556
557
558
559
560
561
562 public String getPriProjType() {
563 return priProjType;
564 }
565
566
567
568
569
570
571 public double getPriDamage() {
572 return priDamage;
573 }
574
575
576
577
578
579
580
581 public double getPriSpeed() {
582 return priSpeed;
583 }
584
585
586
587
588
589
590 public double getPriMaxSpeed() {
591 return priMaxSpeed;
592 }
593
594
595
596
597
598
599
600 public double getPriLifeSpan() {
601 return priLifeSpan;
602 }
603
604
605
606
607
608
609
610 public double getPriDamageRadius() {
611 return priDamageRadius;
612 }
613
614
615
616
617
618
619
620
621 public double getPriTossZ() {
622 return priTossZ;
623 }
624
625
626
627
628
629
630
631 public double getPriMaxEffectDistance() {
632 return priMaxEffectDistance;
633 }
634
635
636
637
638
639
640
641
642 public String getSecFireModeType() {
643 return secFireModeType;
644 }
645
646
647
648
649
650
651
652 public boolean isSecSplashDamage() {
653 return secSplashDamage;
654 }
655
656
657
658
659
660
661 public boolean isSecSplashJump() {
662 return secSplashJump;
663 }
664
665
666
667
668
669
670
671 public boolean isSecRecomSplashDamage() {
672 return secRecomSplashDamage;
673 }
674
675
676
677
678
679
680
681 public boolean isSecTossed() {
682 return secTossed;
683 }
684
685
686
687
688
689
690
691
692 public boolean isSecLeadTarget() {
693 return secLeadTarget;
694 }
695
696
697
698
699
700
701
702
703 public boolean isSecInstantHit() {
704 return secInstantHit;
705 }
706
707
708
709
710
711
712
713
714
715 public boolean isSecFireOnRelease() {
716 return secFireOnRelease;
717 }
718
719
720
721
722
723
724
725
726 public boolean isSecWaitForRelease() {
727 return secWaitForRelease;
728 }
729
730
731
732
733
734
735
736 public boolean isSecModeExclusive() {
737 return secModeExclusive;
738 }
739
740
741
742
743
744
745
746 public double getSecFireRate() {
747 return secFireRate;
748 }
749
750
751
752
753
754
755
756 public double getSecBotRefireRate() {
757 return secBotRefireRate;
758 }
759
760
761
762
763
764
765 public int getSecAmmoPerFire() {
766 return secAmmoPerFire;
767 }
768
769
770
771
772
773
774
775 public int getSecAmmoClipSize() {
776 return secAmmoClipSize;
777 }
778
779
780
781
782
783
784 public double getSecAimError() {
785 return secAimError;
786 }
787
788
789
790
791
792
793
794 public double getSecSpread() {
795 return secSpread;
796 }
797
798
799
800
801
802
803
804
805
806
807
808 public int getSecSpreadStyle() {
809 return secSpreadStyle;
810 }
811
812
813
814
815
816
817
818 public int getSecFireCount() {
819 return secFireCount;
820 }
821
822
823
824
825
826
827 public double getSecDamageAtten() {
828 return secDamageAtten;
829 }
830
831
832
833
834
835
836
837
838
839
840 public String getSecAmmoType() {
841 return secAmmoType;
842 }
843
844 private ItemType secAmmoItemType = null;
845
846
847
848
849 public ItemType getSecAmmoItemType() {
850 if (getSecAmmoType() == null || getSecAmmoType().equals("None")) return null;
851 if (secAmmoItemType != null) return secAmmoItemType;
852 secAmmoItemType = itemTypeTranslator.get(getSecAmmoType());
853 return secAmmoItemType;
854 }
855
856
857
858
859
860
861
862
863 public int getSecInitialAmount() {
864 return secInitialAmount;
865 }
866
867
868
869
870
871
872 public int getSecMaxAmount() {
873 return secMaxAmount;
874 }
875
876
877
878
879
880
881
882 public double getSecMaxRange() {
883 return secMaxRange;
884 }
885
886
887
888
889
890
891
892 public String getSecDamageType() {
893 return secDamageType;
894 }
895
896
897
898
899
900
901 public boolean isSecArmorStops() {
902 return secArmorStops;
903 }
904
905
906
907
908
909
910 public boolean isSecAlwaysGibs() {
911 return secAlwaysGibs;
912 }
913
914
915
916
917
918
919
920 public boolean isSecSpecial() {
921 return secSpecial;
922 }
923
924
925
926
927
928
929
930 public boolean isSecDetonatesGoop() {
931 return secDetonatesGoop;
932 }
933
934
935
936
937
938
939
940 public boolean isSecSuperWeapon() {
941 return secSuperWeapon;
942 }
943
944
945
946
947
948
949
950 public boolean isSecExtraMomZ() {
951 return secExtraMomZ;
952 }
953
954
955
956
957
958
959
960
961 public String getSecProjType() {
962 return secProjType;
963 }
964
965
966
967
968
969
970 public double getSecDamage() {
971 return secDamage;
972 }
973
974
975
976
977
978
979
980 public double getSecSpeed() {
981 return secSpeed;
982 }
983
984
985
986
987
988
989 public double getSecMaxSpeed() {
990 return secMaxSpeed;
991 }
992
993
994
995
996
997
998
999 public double getSecLifeSpan() {
1000 return secLifeSpan;
1001 }
1002
1003
1004
1005
1006
1007
1008
1009 public double getSecDamageRadius() {
1010 return secDamageRadius;
1011 }
1012
1013
1014
1015
1016
1017
1018
1019
1020 public double getSecTossZ() {
1021 return secTossZ;
1022 }
1023
1024
1025
1026
1027
1028
1029
1030 public double getSecMaxEffectDistance() {
1031 return secMaxEffectDistance;
1032 }
1033
1034 }