22 package com.realtime.crossfire.jxclient.map;
24 import java.util.HashMap;
25 import java.util.HashSet;
27 import org.jetbrains.annotations.NotNull;
28 import org.jetbrains.annotations.Nullable;
42 private final Map<Location, AnimationState>
animations =
new HashMap<>();
60 animationState.allocate(mapUpdaterState, location);
67 public void remove(@NotNull
final Location location) {
79 if (animationState == null) {
80 System.err.println(
"No animation at "+location+
" to update animation speed.");
84 animationState.
setSpeed(mapUpdaterState, speed);
94 public void scroll(
final int dx,
final int dy,
final int width,
final int height) {
95 final Iterable<AnimationState> tmp =
new HashSet<>(animations.values());
98 animationState.scroll(dx, dy, width, height);
99 for (
final Location location : animationState) {
100 animations.put(location, animationState);
112 if (animationState != null) {
113 animationState.free(location);
Maintains AnimationState instances for map locations.
void scroll(final int dx, final int dy, final int width, final int height)
Scrolls all locations.
final Map< Location, AnimationState > animations
The active AnimationState instances.
static void freeAnimationState(@Nullable final AnimationState animationState, @NotNull final Location location)
Calls AnimationState#free(Location).
void clear()
Forgets all state.
The state of an Animation on a map.
Update a CfMap model from protocol commands.
void add(@NotNull final MapUpdaterState mapUpdaterState, @NotNull final Location location, @NotNull final AnimationState animationState)
Adds a new AnimationState to a Location.
void updateSpeed(@NotNull final MapUpdaterState mapUpdaterState, @NotNull final Location location, final int speed)
Updates the animation speed value of a Location.
void setSpeed(@NotNull final MapUpdaterState mapUpdaterState, final int speed)
Sets the animation speed.