4 * Copyright(c) 2008 olyutorskii
\r
7 package jp.sourceforge.jindolf.archiver;
\r
9 import java.util.regex.Matcher;
\r
10 import java.util.regex.Pattern;
\r
11 import jp.sourceforge.jindolf.corelib.DisclosureType;
\r
12 import jp.sourceforge.jindolf.corelib.EventFamily;
\r
13 import jp.sourceforge.jindolf.corelib.GameRole;
\r
14 import jp.sourceforge.jindolf.corelib.LandDef;
\r
15 import jp.sourceforge.jindolf.corelib.PeriodType;
\r
16 import jp.sourceforge.jindolf.corelib.SysEventType;
\r
17 import jp.sourceforge.jindolf.corelib.TalkType;
\r
18 import jp.sourceforge.jindolf.corelib.Team;
\r
19 import jp.sourceforge.jindolf.corelib.VillageTag;
\r
20 import jp.sourceforge.jindolf.parser.DecodedContent;
\r
21 import jp.sourceforge.jindolf.parser.EntityConverter;
\r
22 import jp.sourceforge.jindolf.parser.HtmlAdapter;
\r
23 import jp.sourceforge.jindolf.parser.HtmlParseException;
\r
24 import jp.sourceforge.jindolf.parser.PageType;
\r
25 import jp.sourceforge.jindolf.parser.SeqRange;
\r
30 public class Handler extends HtmlAdapter{
\r
32 private static final Pattern MURDER_PATTERN =
\r
33 Pattern.compile("^(.*)\u0020!\u0020今日がお前の命日だ!$");
\r
35 private final EntityConverter converter = new EntityConverter();
\r
37 private VillageData villageData = null;
\r
38 private String pageTitle = null;
\r
40 private PeriodData currentPeriod = null;
\r
41 private PeriodResource currentResource = null;
\r
43 private TalkData currentTalk = null;
\r
44 private EventData currentEvent = null;
\r
56 * @param villageDataArg 村情報
\r
58 public void initVillageData(VillageData villageDataArg){
\r
59 this.villageData = villageDataArg;
\r
60 this.currentPeriod = null;
\r
61 this.pageTitle = null;
\r
67 * @param resource リソース情報
\r
69 public void initPeriodResource(PeriodResource resource){
\r
70 this.currentResource = resource;
\r
76 * @param content {@inheritDoc}
\r
77 * @throws HtmlParseException {@inheritDoc}
\r
80 public void startParse(DecodedContent content) throws HtmlParseException{
\r
81 if(this.villageData == null) throw new HtmlParseException();
\r
82 this.currentPeriod =
\r
83 new PeriodData(this.villageData, this.currentResource);
\r
89 * @param content {@inheritDoc}
\r
90 * @param titleRange {@inheritDoc}
\r
91 * @throws HtmlParseException {@inheritDoc}
\r
94 public void pageTitle(DecodedContent content, SeqRange titleRange)
\r
95 throws HtmlParseException{
\r
96 DecodedContent title = this.converter.convert(content, titleRange);
\r
97 if(this.pageTitle == null){
\r
98 this.pageTitle = title.toString();
\r
100 if( ! this.pageTitle.contentEquals(title) ){
\r
101 throw new HtmlParseException();
\r
109 * @param content {@inheritDoc}
\r
110 * @param loginRange {@inheritDoc}
\r
111 * @throws HtmlParseException {@inheritDoc}
\r
114 public void loginName(DecodedContent content, SeqRange loginRange)
\r
115 throws HtmlParseException{
\r
116 DecodedContent account = this.converter.convert(content, loginRange);
\r
117 this.currentPeriod.setLoginName(account);
\r
123 * @param type {@inheritDoc}
\r
124 * @throws HtmlParseException {@inheritDoc}
\r
127 public void pageType(PageType type) throws HtmlParseException{
\r
128 if(type != PageType.PERIOD_PAGE) throw new HtmlParseException();
\r
134 * @param content {@inheritDoc}
\r
135 * @param villageRange {@inheritDoc}
\r
136 * @throws HtmlParseException {@inheritDoc}
\r
139 public void villageName(DecodedContent content, SeqRange villageRange)
\r
140 throws HtmlParseException{
\r
142 this.converter.convert(content, villageRange).toString();
\r
143 String fullName = this.villageData.getFullName();
\r
144 if(fullName.length() <= 0){
\r
145 if( ! this.pageTitle.endsWith(vName) ){
\r
146 throw new HtmlParseException();
\r
148 Pattern ptn = Pattern.compile("^([^0-9]*)([0-9]+)\\s+(\\S+)$");
\r
149 Matcher matcher = ptn.matcher(vName);
\r
150 if( ! matcher.matches() ) throw new HtmlParseException();
\r
151 String prefix = matcher.group(1);
\r
152 String vid = matcher.group(2);
\r
153 String vtag = matcher.group(3);
\r
154 LandDef landDef = this.villageData.getLandDef();
\r
155 if( ! prefix.equals(landDef.getLandPrefix()) ){
\r
156 throw new HtmlParseException();
\r
158 if( Integer.parseInt(vid) != this.villageData.getVillageId() ){
\r
159 throw new HtmlParseException();
\r
161 matcher.reset(vtag);
\r
162 if(VillageTag.lookingAtVillageTag(matcher) == null){
\r
163 throw new HtmlParseException();
\r
165 this.villageData.setFullName(vName);
\r
167 if( ! vName.equals(fullName) ) throw new HtmlParseException();
\r
175 * @param month {@inheritDoc}
\r
176 * @param day {@inheritDoc}
\r
177 * @param hour {@inheritDoc}
\r
178 * @param minute {@inheritDoc}
\r
179 * @throws HtmlParseException {@inheritDoc}
\r
182 public void commitTime(int month, int day, int hour, int minute)
\r
183 throws HtmlParseException{
\r
184 int commitHour = this.villageData.getCommitHour();
\r
185 int commitMinute = this.villageData.getCommitMinute();
\r
187 if(commitHour < 0){
\r
188 this.villageData.setCommitHour(hour);
\r
190 if(hour != commitHour) throw new HtmlParseException();
\r
193 if(commitMinute < 0){
\r
194 this.villageData.setCommitMinute(minute);
\r
196 if(minute != commitMinute) throw new HtmlParseException();
\r
199 this.currentPeriod.setCommitMonth(month);
\r
200 this.currentPeriod.setCommitDay(day);
\r
201 this.currentPeriod.setCommitHour(hour);
\r
202 this.currentPeriod.setCommitMinute(minute);
\r
209 * @param content {@inheritDoc}
\r
210 * @param anchorRange {@inheritDoc}
\r
211 * @param periodType {@inheritDoc}
\r
212 * @param day {@inheritDoc}
\r
213 * @throws HtmlParseException {@inheritDoc}
\r
216 public void periodLink(DecodedContent content,
\r
217 SeqRange anchorRange,
\r
218 PeriodType periodType,
\r
220 throws HtmlParseException{
\r
221 if(anchorRange.isValid()){
\r
222 DisclosureType newType;
\r
224 if(periodType == null){
\r
225 newType = DisclosureType.COMPLETE;
\r
226 }else if(periodType == PeriodType.EPILOGUE
\r
227 && this.currentResource.getPeriodType()
\r
228 != PeriodType.EPILOGUE){
\r
229 newType = DisclosureType.COMPLETE;
\r
230 }else if( periodType != PeriodType.PROLOGUE
\r
231 && this.currentResource.getPeriodType()
\r
232 == PeriodType.PROLOGUE){
\r
233 newType = DisclosureType.COMPLETE;
\r
235 newType = DisclosureType.UNCOMPLETE;
\r
238 this.currentPeriod.setDisclosureType(newType);
\r
243 if(periodType != this.currentResource.getPeriodType()){
\r
244 throw new HtmlParseException();
\r
247 if(periodType == PeriodType.PROGRESS
\r
248 && day != this.currentResource.getDay()){
\r
249 throw new HtmlParseException();
\r
252 this.currentPeriod.setDisclosureType(DisclosureType.HOT);
\r
259 * @throws HtmlParseException {@inheritDoc}
\r
262 public void startTalk() throws HtmlParseException{
\r
263 this.currentTalk = new TalkData();
\r
269 * @param content {@inheritDoc}
\r
270 * @param avatarRange {@inheritDoc}
\r
271 * @throws HtmlParseException {@inheritDoc}
\r
274 public void talkAvatar(DecodedContent content, SeqRange avatarRange)
\r
275 throws HtmlParseException{
\r
276 DecodedContent avatarName =
\r
277 this.converter.convert(content, avatarRange);
\r
278 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
279 this.currentTalk.setAvatarData(avatar);
\r
285 * @param content {@inheritDoc}
\r
286 * @param urlRange {@inheritDoc}
\r
287 * @throws HtmlParseException {@inheritDoc}
\r
290 public void talkIconUrl(DecodedContent content, SeqRange urlRange)
\r
291 throws HtmlParseException{
\r
292 DecodedContent faceIcon = this.converter.convert(content, urlRange);
\r
293 this.currentTalk.setFaceIconUri(faceIcon.toString());
\r
299 * @param content {@inheritDoc}
\r
300 * @param idRange {@inheritDoc}
\r
301 * @throws HtmlParseException {@inheritDoc}
\r
304 public void talkId(DecodedContent content, SeqRange idRange)
\r
305 throws HtmlParseException{
\r
306 DecodedContent xname = this.converter.convert(content, idRange);
\r
307 this.currentTalk.setXName(xname.toString());
\r
313 * @param hour {@inheritDoc}
\r
314 * @param minute {@inheritDoc}
\r
315 * @throws HtmlParseException {@inheritDoc}
\r
318 public void talkTime(int hour, int minute) throws HtmlParseException{
\r
319 this.currentTalk.setHour(hour);
\r
320 this.currentTalk.setMinute(minute);
\r
326 * @param type {@inheritDoc}
\r
327 * @throws HtmlParseException {@inheritDoc}
\r
330 public void talkType(TalkType type) throws HtmlParseException{
\r
331 this.currentTalk.setTalkType(type);
\r
337 * @param content {@inheritDoc}
\r
338 * @param textRange {@inheritDoc}
\r
339 * @throws HtmlParseException {@inheritDoc}
\r
342 public void talkText(DecodedContent content, SeqRange textRange)
\r
343 throws HtmlParseException{
\r
344 DecodedContent line = this.converter.convert(content, textRange);
\r
345 this.currentTalk.addLine(line);
\r
351 * @throws HtmlParseException {@inheritDoc}
\r
354 public void talkBreak() throws HtmlParseException{
\r
355 this.currentTalk.addBreak();
\r
361 * @throws HtmlParseException {@inheritDoc}
\r
364 public void endTalk() throws HtmlParseException{
\r
365 String faceIcon = this.currentTalk.getFaceIconUri();
\r
366 if(this.currentTalk.getTalkType() == TalkType.GRAVE){
\r
367 this.villageData.setGraveIconUri(faceIcon);
\r
369 AvatarData avatar = this.currentTalk.getAvatarData();
\r
370 if(avatar.getFaceIconUri() == null){
\r
371 avatar.setFaceIconUri(faceIcon);
\r
375 if( ! this.currentPeriod.hasMurderResult()
\r
376 && this.currentTalk.getTalkType() == TalkType.WOLFONLY
\r
377 && this.currentTalk.getLineNum() == 1){
\r
378 DecodedContent line1st = this.currentTalk.get1stLine();
\r
379 Matcher matcher = MURDER_PATTERN.matcher(line1st);
\r
380 if(matcher.matches()){
\r
381 AvatarData byWhom = this.currentTalk.getAvatarData();
\r
382 String avatarName = matcher.group(1);
\r
383 AvatarData target =
\r
384 this.villageData.getAvatarData(avatarName);
\r
385 String xname = this.currentTalk.getXName();
\r
386 int hour = this.currentTalk.getHour();
\r
387 int minute = this.currentTalk.getMinute();
\r
388 String iconUri = this.currentTalk.getFaceIconUri();
\r
389 EventData event = new EventData(this.currentPeriod);
\r
390 event.setEventType(SysEventType.ASSAULT);
\r
391 event.addLine(line1st);
\r
392 event.addAvatarData(byWhom);
\r
393 event.addAvatarData(target);
\r
394 event.addDecodedContent(new DecodedContent(xname));
\r
395 event.addInteger(hour);
\r
396 event.addInteger(minute);
\r
397 event.addDecodedContent(new DecodedContent(iconUri));
\r
398 if(byWhom.getFaceIconUri() == null){
\r
399 byWhom.setFaceIconUri(iconUri);
\r
401 this.currentPeriod.addTopicData(event);
\r
402 this.currentTalk = null;
\r
407 this.currentPeriod.addTopicData(this.currentTalk);
\r
408 this.currentTalk = null;
\r
414 * @param eventFamily {@inheritDoc}
\r
415 * @throws HtmlParseException {@inheritDoc}
\r
418 public void startSysEvent(EventFamily eventFamily)
\r
419 throws HtmlParseException{
\r
420 this.currentEvent = new EventData(this.currentPeriod);
\r
426 * @param type {@inheritDoc}
\r
427 * @throws HtmlParseException {@inheritDoc}
\r
430 public void sysEventType(SysEventType type) throws HtmlParseException{
\r
431 this.currentEvent.setEventType(type);
\r
437 * @param content {@inheritDoc}
\r
438 * @param contentRange {@inheritDoc}
\r
439 * @throws HtmlParseException {@inheritDoc}
\r
442 public void sysEventContent(DecodedContent content,
\r
443 SeqRange contentRange)
\r
444 throws HtmlParseException{
\r
445 DecodedContent line = this.converter.convert(content, contentRange);
\r
446 this.currentEvent.addLine(line);
\r
452 * @param content {@inheritDoc}
\r
453 * @param anchorRange {@inheritDoc}
\r
454 * @param contentRange {@inheritDoc}
\r
455 * @throws HtmlParseException {@inheritDoc}
\r
458 public void sysEventContentAnchor(DecodedContent content,
\r
459 SeqRange anchorRange,
\r
460 SeqRange contentRange)
\r
461 throws HtmlParseException{
\r
462 DecodedContent line = this.converter.convert(content, contentRange);
\r
463 this.currentEvent.addLine(line);
\r
469 * @throws HtmlParseException {@inheritDoc}
\r
472 public void sysEventContentBreak() throws HtmlParseException{
\r
473 this.currentEvent.addBreak();
\r
479 * @param content {@inheritDoc}
\r
480 * @param entryNo {@inheritDoc}
\r
481 * @param avatarRange {@inheritDoc}
\r
482 * @throws HtmlParseException {@inheritDoc}
\r
485 public void sysEventOnStage(DecodedContent content,
\r
487 SeqRange avatarRange)
\r
488 throws HtmlParseException{
\r
489 DecodedContent avatarName =
\r
490 this.converter.convert(content, avatarRange);
\r
491 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
492 this.currentEvent.addAvatarData(avatar);
\r
493 this.currentEvent.addInteger(entryNo);
\r
499 * @param role {@inheritDoc}
\r
500 * @param num {@inheritDoc}
\r
501 * @throws HtmlParseException {@inheritDoc}
\r
504 public void sysEventOpenRole(GameRole role, int num)
\r
505 throws HtmlParseException{
\r
506 this.currentEvent.addGameRole(role);
\r
507 this.currentEvent.addInteger(num);
\r
513 * @param content {@inheritDoc}
\r
514 * @param avatarRange {@inheritDoc}
\r
515 * @throws HtmlParseException {@inheritDoc}
\r
518 public void sysEventMurdered(DecodedContent content,
\r
519 SeqRange avatarRange)
\r
520 throws HtmlParseException{
\r
521 DecodedContent avatarName =
\r
522 this.converter.convert(content, avatarRange);
\r
523 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
524 this.currentEvent.addAvatarData(avatar);
\r
530 * @param content {@inheritDoc}
\r
531 * @param avatarRange {@inheritDoc}
\r
532 * @throws HtmlParseException {@inheritDoc}
\r
535 public void sysEventSurvivor(DecodedContent content,
\r
536 SeqRange avatarRange)
\r
537 throws HtmlParseException{
\r
538 DecodedContent avatarName =
\r
539 this.converter.convert(content, avatarRange);
\r
540 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
541 this.currentEvent.addAvatarData(avatar);
\r
547 * @param content {@inheritDoc}
\r
548 * @param voteByRange {@inheritDoc}
\r
549 * @param voteToRange {@inheritDoc}
\r
550 * @throws HtmlParseException {@inheritDoc}
\r
553 public void sysEventCounting(DecodedContent content,
\r
554 SeqRange voteByRange,
\r
555 SeqRange voteToRange)
\r
556 throws HtmlParseException{
\r
559 if(voteByRange.isValid()){
\r
560 DecodedContent voteBy =
\r
561 this.converter.convert(content, voteByRange);
\r
562 avatar = this.villageData.getAvatarData(voteBy);
\r
563 this.currentEvent.addAvatarData(avatar);
\r
566 DecodedContent voteTo =
\r
567 this.converter.convert(content, voteToRange);
\r
568 avatar = this.villageData.getAvatarData(voteTo);
\r
569 this.currentEvent.addAvatarData(avatar);
\r
576 * @param content {@inheritDoc}
\r
577 * @param voteByRange {@inheritDoc}
\r
578 * @param voteToRange {@inheritDoc}
\r
579 * @throws HtmlParseException {@inheritDoc}
\r
582 public void sysEventCounting2(DecodedContent content,
\r
583 SeqRange voteByRange,
\r
584 SeqRange voteToRange)
\r
585 throws HtmlParseException{
\r
588 DecodedContent voteBy =
\r
589 this.converter.convert(content, voteByRange);
\r
590 avatar = this.villageData.getAvatarData(voteBy);
\r
591 this.currentEvent.addAvatarData(avatar);
\r
593 DecodedContent voteTo =
\r
594 this.converter.convert(content, voteToRange);
\r
595 avatar = this.villageData.getAvatarData(voteTo);
\r
596 this.currentEvent.addAvatarData(avatar);
\r
603 * @param content {@inheritDoc}
\r
604 * @param avatarRange {@inheritDoc}
\r
605 * @throws HtmlParseException {@inheritDoc}
\r
608 public void sysEventSuddenDeath(DecodedContent content,
\r
609 SeqRange avatarRange)
\r
610 throws HtmlParseException{
\r
611 DecodedContent avatarName =
\r
612 this.converter.convert(content, avatarRange);
\r
613 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
614 this.currentEvent.addAvatarData(avatar);
\r
620 * @param content {@inheritDoc}
\r
621 * @param avatarRange {@inheritDoc}
\r
622 * @param anchorRange {@inheritDoc}
\r
623 * @param loginRange {@inheritDoc}
\r
624 * @param isLiving {@inheritDoc}
\r
625 * @param role {@inheritDoc}
\r
626 * @throws HtmlParseException {@inheritDoc}
\r
629 public void sysEventPlayerList(DecodedContent content,
\r
630 SeqRange avatarRange,
\r
631 SeqRange anchorRange,
\r
632 SeqRange loginRange,
\r
635 throws HtmlParseException{
\r
636 DecodedContent avatarName =
\r
637 this.converter.convert(content, avatarRange);
\r
638 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
639 this.currentEvent.addAvatarData(avatar);
\r
641 DecodedContent uri;
\r
642 if(anchorRange.isValid()){
\r
643 uri = this.converter.convert(content, anchorRange);
\r
645 uri = new DecodedContent("");
\r
647 Win31j.supplyWin31jChar(uri);
\r
648 this.currentEvent.addDecodedContent(uri);
\r
650 DecodedContent account =
\r
651 this.converter.convert(content, loginRange);
\r
652 Win31j.supplyWin31jChar(account);
\r
653 this.currentEvent.addDecodedContent(account);
\r
655 if(isLiving) this.currentEvent.addInteger(1);
\r
656 else this.currentEvent.addInteger(0);
\r
658 this.currentEvent.addGameRole(role);
\r
665 * @param hour {@inheritDoc}
\r
666 * @param minute {@inheritDoc}
\r
667 * @param minLimit {@inheritDoc}
\r
668 * @param maxLimit {@inheritDoc}
\r
669 * @throws HtmlParseException {@inheritDoc}
\r
672 public void sysEventAskEntry(int hour, int minute,
\r
673 int minLimit, int maxLimit)
\r
674 throws HtmlParseException{
\r
675 this.currentEvent.addInteger(hour);
\r
676 this.currentEvent.addInteger(minute);
\r
677 this.currentEvent.addInteger(minLimit);
\r
678 this.currentEvent.addInteger(maxLimit);
\r
684 * @param hour {@inheritDoc}
\r
685 * @param minute {@inheritDoc}
\r
686 * @throws HtmlParseException {@inheritDoc}
\r
689 public void sysEventAskCommit(int hour, int minute)
\r
690 throws HtmlParseException{
\r
691 this.currentEvent.addInteger(hour);
\r
692 this.currentEvent.addInteger(minute);
\r
698 * @param content {@inheritDoc}
\r
699 * @param avatarRange {@inheritDoc}
\r
700 * @throws HtmlParseException {@inheritDoc}
\r
703 public void sysEventNoComment(DecodedContent content,
\r
704 SeqRange avatarRange)
\r
705 throws HtmlParseException{
\r
706 DecodedContent avatarName;
\r
707 avatarName = this.converter.convert(content, avatarRange);
\r
708 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
709 this.currentEvent.addAvatarData(avatar);
\r
715 * @param winner {@inheritDoc}
\r
716 * @param hour {@inheritDoc}
\r
717 * @param minute {@inheritDoc}
\r
718 * @throws HtmlParseException {@inheritDoc}
\r
721 public void sysEventStayEpilogue(Team winner,
\r
722 int hour, int minute)
\r
723 throws HtmlParseException{
\r
726 case VILLAGE: role = GameRole.INNOCENT; break;
\r
727 case WOLF: role = GameRole.WOLF; break;
\r
728 case HAMSTER: role = GameRole.HAMSTER; break;
\r
729 default: throw new IllegalArgumentException();
\r
732 this.currentEvent.addGameRole(role);
\r
733 this.currentEvent.addInteger(hour);
\r
734 this.currentEvent.addInteger(minute);
\r
741 * @param content {@inheritDoc}
\r
742 * @param guardByRange {@inheritDoc}
\r
743 * @param guardToRange {@inheritDoc}
\r
744 * @throws HtmlParseException {@inheritDoc}
\r
747 public void sysEventGuard(DecodedContent content,
\r
748 SeqRange guardByRange,
\r
749 SeqRange guardToRange)
\r
750 throws HtmlParseException{
\r
751 DecodedContent avatarName;
\r
753 avatarName = this.converter.convert(content, guardByRange);
\r
754 AvatarData guardBy = this.villageData.getAvatarData(avatarName);
\r
755 this.currentEvent.addAvatarData(guardBy);
\r
757 avatarName = this.converter.convert(content, guardToRange);
\r
758 AvatarData guardTo = this.villageData.getAvatarData(avatarName);
\r
759 this.currentEvent.addAvatarData(guardTo);
\r
766 * @param content {@inheritDoc}
\r
767 * @param judgeByRange {@inheritDoc}
\r
768 * @param judgeToRange {@inheritDoc}
\r
769 * @throws HtmlParseException {@inheritDoc}
\r
772 public void sysEventJudge(DecodedContent content,
\r
773 SeqRange judgeByRange,
\r
774 SeqRange judgeToRange)
\r
775 throws HtmlParseException{
\r
776 DecodedContent avatarName;
\r
778 avatarName = this.converter.convert(content, judgeByRange);
\r
779 AvatarData judgeBy = this.villageData.getAvatarData(avatarName);
\r
780 this.currentEvent.addAvatarData(judgeBy);
\r
782 avatarName = this.converter.convert(content, judgeToRange);
\r
783 AvatarData judgeTo = this.villageData.getAvatarData(avatarName);
\r
784 this.currentEvent.addAvatarData(judgeTo);
\r
791 * @param content {@inheritDoc}
\r
792 * @param avatarRange {@inheritDoc}
\r
793 * @param votes {@inheritDoc}
\r
794 * @throws HtmlParseException {@inheritDoc}
\r
797 public void sysEventExecution(DecodedContent content,
\r
798 SeqRange avatarRange,
\r
800 throws HtmlParseException{
\r
801 DecodedContent avatarName;
\r
802 avatarName = this.converter.convert(content, avatarRange);
\r
803 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
804 this.currentEvent.addAvatarData(avatar);
\r
807 this.currentEvent.addInteger(votes);
\r
815 * @param content {@inheritDoc}
\r
816 * @param avatarRange {@inheritDoc}
\r
817 * @throws HtmlParseException {@inheritDoc}
\r
820 public void sysEventCheckout(DecodedContent content,
\r
821 SeqRange avatarRange)
\r
822 throws HtmlParseException{
\r
823 DecodedContent avatarName;
\r
824 avatarName = this.converter.convert(content, avatarRange);
\r
825 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
826 this.currentEvent.addAvatarData(avatar);
\r
832 * @param content {@inheritDoc}
\r
833 * @param avatarRange {@inheritDoc}
\r
834 * @throws HtmlParseException {@inheritDoc}
\r
837 public void sysEventVanish(DecodedContent content,
\r
838 SeqRange avatarRange)
\r
839 throws HtmlParseException{
\r
840 DecodedContent avatarName;
\r
841 avatarName = this.converter.convert(content, avatarRange);
\r
842 AvatarData avatar = this.villageData.getAvatarData(avatarName);
\r
843 this.currentEvent.addAvatarData(avatar);
\r
849 * @throws HtmlParseException {@inheritDoc}
\r
852 public void endSysEvent() throws HtmlParseException{
\r
853 this.currentPeriod.addTopicData(this.currentEvent);
\r
854 this.currentEvent = null;
\r
860 * @throws HtmlParseException {@inheritDoc}
\r
863 public void endParse() throws HtmlParseException{
\r
864 this.villageData.addPeriodData(this.currentPeriod);
\r
865 this.currentPeriod = null;
\r