Gridarta Editor
AbstractScriptedEventFactory.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.model.scripts;
21 
28 import org.jetbrains.annotations.NotNull;
29 
34 public abstract class AbstractScriptedEventFactory<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements ScriptedEventFactory<G, A, R> {
35 
39  @NotNull
41 
46  @NotNull
48 
52  @NotNull
54 
62  protected AbstractScriptedEventFactory(@NotNull final ScriptArchUtils scriptArchUtils, @NotNull final GameObjectFactory<G, A, R> gameObjectFactory, @NotNull final ArchetypeSet<G, A, R> archetypeSet) {
63  this.scriptArchUtils = scriptArchUtils;
64  this.gameObjectFactory = gameObjectFactory;
65  this.archetypeSet = archetypeSet;
66  }
67 
68  @NotNull
69  @Override
70  public G newEventGameObject(final int eventType) throws UndefinedEventArchetypeException {
71  final String eventArchetypeName = scriptArchUtils.getArchetypeNameForEventType(eventType);
72  final R eventArchetype;
73  try {
74  eventArchetype = archetypeSet.getArchetype(eventArchetypeName);
75  } catch (final UndefinedArchetypeException ex) {
76  throw new UndefinedEventArchetypeNameException(eventArchetypeName, ex);
77  }
78  return gameObjectFactory.createGameObject(eventArchetype);
79  }
80 
81 }
G createGameObject(@NotNull R archetype)
Creates a new GameObject from an Archetype.
Factory for creating ScriptedEvent instances.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Definition: GameObject.java:36
Abstract factory for creating GameObject instances.
R getArchetype(@NotNull String archetypeName)
Returns an Archetype by its name.
GameObjects are the objects based on Archetypes found on maps.
This exception is thrown if an event game object cannot be created.
final GameObjectFactory< G, A, R > gameObjectFactory
The GameObjectFactory for creating GameObjects.
This class implements an UndefinedEventArchetypeException that describes a missing archetype...
final ArchetypeSet< G, A, R > archetypeSet
The ArchetypeSet to use.
AbstractScriptedEventFactory(@NotNull final ScriptArchUtils scriptArchUtils, @NotNull final GameObjectFactory< G, A, R > gameObjectFactory, @NotNull final ArchetypeSet< G, A, R > archetypeSet)
Creates a new instance.
Abstract base class forScriptedEventFactory implementations.
Interface that captures similarities between different ArchetypeSet implementations.
final ScriptArchUtils scriptArchUtils
The ScriptArchUtils instance to use.
String getArchetypeNameForEventType(int eventType)
Returns the archetype for an event type.