Skip to content

Commit

Permalink
Add small camera and fade animation on game start
Browse files Browse the repository at this point in the history
  • Loading branch information
FluffyStuff committed Apr 24, 2020
1 parent 9a483f3 commit 9590380
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Engine
7 changes: 7 additions & 0 deletions source/Game/GameController.vala
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class GameController : Object
private Options options;
private bool game_finished = false;
private bool is_disconnected = false;
public signal void game_loaded();
public signal void finished();

public GameController(Container parent_view, GameStartInfo start_info, ServerSettings settings, IGameConnection connection, int player_index, Options options)
Expand Down Expand Up @@ -156,6 +157,7 @@ class GameController : Object
game.start_round(info);

renderer = new GameRenderView(player_index, game.dealer_index, start_info, info, options, game.score);
renderer.game_loaded.connect(on_game_loaded);
parent_view.add_child(renderer);

menu = new GameMenuView(renderer.context, settings, index, player_index == -1);
Expand All @@ -166,6 +168,11 @@ class GameController : Object
create_round_state(info);
}

private void on_game_loaded()
{
game_loaded();
}

private void declared_riichi(int player_index, bool open)
{
game.declare_riichi(player_index);
Expand Down
28 changes: 26 additions & 2 deletions source/Game/Rendering/GameRenderView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ public class GameRenderView : View3D, IGameRenderer
private WorldObject target;
private WorldObject observe_object;

public signal void game_loaded();
private bool has_loaded = false;

public GameRenderView(int observer_index, int dealer_index, GameStartInfo game_start, RoundStartInfo info, Options options, RoundScoreState score)
{
this.observer_index = observer_index;
Expand Down Expand Up @@ -61,14 +64,26 @@ public class GameRenderView : View3D, IGameRenderer

target = new WorldObject();
observe_object.add_object(target);
target.position = Vec3(0, -4, 0);
target.position = Vec3(0, 2, 0);

camera = new TargetWorldCamera(target);
observe_object.add_object(camera);
world.active_camera = camera;
camera.position = Vec3(0, 16, 10);
camera.position = Vec3(0, 2, 4);
camera.view_angle = 80;

float camera_animation_time = 3;

WorldObjectAnimation camera_animation = new WorldObjectAnimation(new AnimationTime.preset(camera_animation_time));
camera_animation.do_absolute_position(new LinearPath3D(Vec3(0, 16, 10)));
camera_animation.curve = new SCurve(0.5f);
camera.animate(camera_animation, true);

WorldObjectAnimation target_animation = new WorldObjectAnimation(new AnimationTime.preset(camera_animation_time));
target_animation.do_absolute_position(new LinearPath3D(Vec3(0, -4, 0)));
target_animation.curve = new SCurve(0.5f);
target.animate(target_animation, true);

buffer_action(new RenderActionDelay(new AnimationTime.preset(0.5f)));
buffer_action(new RenderActionSplitDeadWall(context.server_times.split_wall));

Expand All @@ -87,6 +102,15 @@ public class GameRenderView : View3D, IGameRenderer
buffer_action(new RenderActionFlipDora());
}

protected override void process(DeltaArgs args)
{
if (!has_loaded)
{
has_loaded = true;
game_loaded();
}
}

/*protected override void key_press(KeyArgs key)
{
if (key.keycode == KeyCode.NUM_1)
Expand Down
27 changes: 27 additions & 0 deletions source/MainWindow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public class MainWindow : RenderWindow
private GameEscapeMenuView? escape_menu;
private bool game_running = false;
private MusicPlayer music;
private RectangleControl fade_rect;

public MainWindow(IWindowTarget window, RenderTarget renderer)
{
Expand Down Expand Up @@ -63,12 +64,38 @@ public class MainWindow : RenderWindow
main_view.add_child(menu);
}

private void game_loaded()
{
var anim = new Animation.preset(1);
anim.curve = new SmoothDepartCurve();
anim.animate.connect(animate_fade_rect);
anim.finished.connect(remove_fade_rect);
fade_rect.add_animation(anim);
}

private void animate_fade_rect(float time)
{
fade_rect.color = Color.with_alpha(1 - time);
}

private void remove_fade_rect()
{
main_view.remove_child(fade_rect);
}

private GameController game_start(GameStartInfo info, ServerSettings settings, IGameConnection connection, int player_index)
{
menu.visible = false;
game_controller = new GameController(game_view, info, settings, connection, player_index, new Options.from_disk());
game_controller.game_loaded.connect(game_loaded);
game_controller.finished.connect(game_finished);

game_running = true;

fade_rect = new RectangleControl();
main_view.add_child(fade_rect);
fade_rect.color = Color.black();
fade_rect.resize_style = ResizeStyle.RELATIVE;

return game_controller;
}
Expand Down

0 comments on commit 9590380

Please sign in to comment.