private void ProcessOpponentShipyardAction(string shipyardId, CardCodename cardCodename)
    {
        // card needs to be instantiated
        Shipyard shipyard = (Shipyard)CardFactory.CreateCard(cardCodename, shipyardId);

        GameViewController.AddShipyard(shipyard, false);

        // spend the resources
        _game.Opponent.ChangeClicks(-1);
        _game.Opponent.ChangeCredits(-shipyard.BaseCost);
        _game.Opponent.Hand.RemoveAt(0);
        _game.Opponent.Shipyards.Add(shipyard);

        // log
        GameViewController.AddGameLogMessage(string.Format("<b>{0}</b> plays {1}", _game.Opponent.Name, shipyard.CardName));
    }