Example #1
0
        public ViewerWebServices(WaterWarsController controller) : base(controller)
        {
            m_buyPointServices = new BuyPointServices(m_controller);
            PlayerServices     = new PlayerServices(m_controller);

            Initialise();
        }
        public StartGameInteraction(WaterWarsController controller, UUID playerId, OsButton button)
            : base(controller, playerId, button)
        {
            IDictionary <UUID, Player> players = controller.Game.Players;

            lock (players)
            {
                if (players.Count < 1)
                {
                    SendAlert(playerId, string.Format("Could not start game since no players are enrolled"));
                }
                else
                {
                    try
                    {
                        m_controller.State.StartGame();
                    }
                    catch (ConfigurationException e)
                    {
                        m_controller.Dispatcher.AlertConfigurationFailure(e.Message);
                        throw e;
                    }

//                    m_controller.Dispatcher.EnableRegistration(false);
//                    m_controller.Dispatcher.EnableStartGame(false);
                    m_controller.Groups.SendMessageToGroup("A new game has started.");

                    Scene scene = ButtonMap[playerId].Part.ParentGroup.Scene;
                    scene.SimChat("New Water Wars game started", WaterWarsConstants.SYSTEM_ANNOUNCEMENT_NAME);
                }
            }
        }
Example #3
0
 public FieldView(
     WaterWarsController controller, Scene scene, Field field, Vector3 scale, AbstractView itemStoreView)
     : base(controller, scene, itemStoreView)
 {
     m_field = field;
     m_scale = scale;
 }
Example #4
0
 public CropsView(WaterWarsController controller, Scene scene, AbstractGameAsset asset, AbstractView itemStoreView)
     : base(controller, scene, asset, itemStoreView)
 {
     m_veSceneObjectNames       = new string[4, 1];
     m_veSceneObjectNames[1, 0] = string.Format("{0}_Alfalfa", IN_WORLD_NAME);
     m_veSceneObjectNames[2, 0] = string.Format("{0}_Chillis", IN_WORLD_NAME);
     m_veSceneObjectNames[3, 0] = string.Format("{0}_Grapes", IN_WORLD_NAME);
 }
Example #5
0
            //        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

            public EndTurnButton(WaterWarsController controller, SceneObjectPart part, UUID playerId)
                : base(controller, part, new FadeInAndOutBehaviour())
            {
                DisplayBehaviour.Text = "end turn";
                OnClick
                    += delegate(Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
                    { Util.FireAndForget(delegate { controller.State.EndTurn(playerId); }); };
            }
Example #6
0
 public CropsView(WaterWarsController controller, Scene scene, AbstractGameAsset asset, AbstractView itemStoreView)
     : base(controller, scene, asset, itemStoreView)
 {
     m_veSceneObjectNames = new string[4, 1];
     m_veSceneObjectNames[1, 0] = string.Format("{0}_Alfalfa", IN_WORLD_NAME);
     m_veSceneObjectNames[2, 0] = string.Format("{0}_Chillis", IN_WORLD_NAME);
     m_veSceneObjectNames[3, 0] = string.Format("{0}_Grapes", IN_WORLD_NAME);
 }
Example #7
0
 public WaterAllocationDecorator(
     WaterWarsController controller, Scene scene, AbstractGameAsset asset, AbstractView itemStoreView, Vector3 positionToDisplay)
     : base(controller, scene, itemStoreView, IN_WORLD_NAME, positionToDisplay)
 {
     GameAsset = asset;
     Update();
     GameAsset.OnChange += GameAssetChanged;
 }
Example #8
0
        public HudView(WaterWarsController controller, Scene scene, UUID userId) : base(controller, scene)
        {
            UserId = userId;

            m_controller.EventManager.OnStateStarted           += ProcessStateStarted;
            m_controller.EventManager.OnPlayerEndedTurn        += ProcessPlayerEndTurn;
            m_controller.EventManager.OnGameAssetSoldToEconomy += ProcessGameAssetSoldToEconomy;
        }
Example #9
0
        public GameManagerTopLevelInteraction(
            WaterWarsController controller, UUID playerId, GameManagerView.GameManagerButton button)
            : base(controller, playerId, button)
        {
            m_playerId = playerId;
            m_gmButton = button;

            AskTopLevelChoice();
        }
Example #10
0
 public HousesView(WaterWarsController controller, Scene scene, AbstractGameAsset asset, AbstractView itemStoreView)
     : base(controller, scene, asset, itemStoreView)
 {
     m_veSceneObjectNames       = new string[4, 2];
     m_veSceneObjectNames[1, 0] = string.Format("{0}_Level-1-under-construction", IN_WORLD_NAME);
     m_veSceneObjectNames[2, 0] = string.Format("{0}_Level-2-under-construction", IN_WORLD_NAME);
     m_veSceneObjectNames[3, 0] = string.Format("{0}_Level-3-under-construction", IN_WORLD_NAME);
     m_veSceneObjectNames[1, 1] = string.Format("{0}_Level-1", IN_WORLD_NAME);
     m_veSceneObjectNames[2, 1] = string.Format("{0}_Level-2", IN_WORLD_NAME);
     m_veSceneObjectNames[3, 1] = string.Format("{0}_Level-3", IN_WORLD_NAME);
 }
Example #11
0
        public BuyPointView(WaterWarsController controller, Scene scene, AbstractView itemStoreView, BuyPoint bp)
            : base(controller, scene, itemStoreView)
        {
            m_bp           = bp;
            m_bp.OnChange += Update;

            m_veSceneObjectNames[AbstractGameAssetType.None]    = "For Sale";
            m_veSceneObjectNames[AbstractGameAssetType.Crops]   = "Farmhouse";
            m_veSceneObjectNames[AbstractGameAssetType.Houses]  = "Site Office";
            m_veSceneObjectNames[AbstractGameAssetType.Factory] = "Portacabin";
        }
Example #12
0
 public FactoryView(WaterWarsController controller, Scene scene, AbstractGameAsset asset, AbstractView itemStoreView)
     : base(controller, scene, asset, itemStoreView)
 {
     m_veSceneObjectNames = new string[4, 2];
     m_veSceneObjectNames[1, 0] = string.Format("{0}_Level-1-under-construction", IN_WORLD_NAME);
     m_veSceneObjectNames[2, 0] = string.Format("{0}_Level-2-under-construction", IN_WORLD_NAME);
     m_veSceneObjectNames[3, 0] = string.Format("{0}_Level-3-under-construction", IN_WORLD_NAME);
     m_veSceneObjectNames[1, 1] = string.Format("{0}_Level-1", IN_WORLD_NAME);
     m_veSceneObjectNames[2, 1] = string.Format("{0}_Level-2", IN_WORLD_NAME);
     m_veSceneObjectNames[3, 1] = string.Format("{0}_Level-3", IN_WORLD_NAME);
 }
Example #13
0
            public GameManagerButton(WaterWarsController controller, SceneObjectPart part)
                : base(controller, part, 4500, new FixedTextureBehaviour())
            {
                LabelBehaviour           = new BlankableDynamicLabelBehaviour();
                LabelBehaviour.TextColor = Color.MediumBlue;
                UpdateLabel(m_controller.Game.State);

                m_controller.EventManager.OnStateStarted += UpdateLabel;

                Enabled = true;
            }
Example #14
0
            public ShowBrowserButton(WaterWarsController controller, SceneObjectPart part, UUID playerId)
                : base(controller, part, new FadeInAndOutBehaviour())
            {
                m_playerId = playerId;

                OnClick
                    += delegate(Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
                    { OpenMediaBrowser(); };
                controller.EventManager.OnStateStarted += OnStateChange;

                Enabled = true;
            }
Example #15
0
 public BuyPointViewButton(WaterWarsController controller, SceneObjectPart part)
     : base(controller, part, 4600, new FixedTextureBehaviour())
 {
     Enabled = true;
     OnClick
         += delegate(Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
         { Util.FireAndForget(
               delegate {
             controller.ViewerWebServices.PlayerServices.SetLastSelected(
                 remoteClient.AgentId, m_bp);
         }); };
 }
Example #16
0
        public void Initialize(WaterWarsController controller)
        {
            m_controller = controller;

            // OpenSim events
            if (m_controller.Scenes.Count > 0)
            {
                m_controller.Scenes[0].EventManager.OnShutdown += Close;
            }

            foreach (Scene scene in m_controller.Scenes)
            {
                scene.EventManager.OnChatToClients += ProcessChatToClients;
                scene.EventManager.OnNewClient     += ProcessNewClient;
                scene.EventManager.OnClientClosed  += ProcessClientClosed;
            }

            // UI events
            m_controller.EventManager.OnGameModelSelected += ProcessGameModelSelected;

            // General stage events
            m_controller.EventManager.OnStateStarted += ProcessStateStarted;
            m_controller.EventManager.OnStateEnded   += ProcessStateEnded;

            // Any play stage events
            m_controller.EventManager.OnMoneyGiven       += ProcessMoneyGiven;
            m_controller.EventManager.OnWaterGiven       += ProcessWaterGiven;
            m_controller.EventManager.OnWaterRightsGiven += ProcessWaterRightsGiven;

            // Build stage events
            m_controller.EventManager.OnLandRightsBought        += ProcessParcelBought;
            m_controller.EventManager.OnLandRightsSold          += ProcessParcelSold;
            m_controller.EventManager.OnLandRightsGiven         += ProcessParcelGiven;
            m_controller.EventManager.OnWaterRightsSold         += ProcessWaterRightsSold;
            m_controller.EventManager.OnGameAssetBuildStarted   += ProcessGameAssetBuildStarted;
            m_controller.EventManager.OnGameAssetBuildContinued += ProcessGameAssetBuildContinued;
            m_controller.EventManager.OnGameAssetBuildCompleted += ProcessGameAssetBuildCompleted;
            m_controller.EventManager.OnGameAssetUpgraded       += ProcessGameAssetUpgraded;
            m_controller.EventManager.OnGameAssetSoldToEconomy  += ProcessGameAssetSoldToEconomy;
            m_controller.EventManager.OnGameAssetRemoved        += ProcessGameAssetRemoved;

            // Allocation stage events
            m_controller.EventManager.OnWaterGenerated += ProcessWaterGenerated;
            m_controller.EventManager.OnWaterAllocated += ProcessWaterAllocated;

            // Water stage events
            m_controller.EventManager.OnWaterUsed += ProcessWaterUsed;
            m_controller.EventManager.OnWaterSold += ProcessWaterSold;

            // Revenue stage events
            m_controller.EventManager.OnRevenueReceived += ProcessRevenueReceived;
        }
Example #17
0
            public TickerButton(WaterWarsController controller, SceneObjectPart part)
                : base(controller, part, new FixedTextureBehaviour())
            {
                m_emptyCrawler    = new string(' ', m_widthAvailable);
                m_visibleTickText = new StringBuilder(m_emptyCrawler);

                CrawlSeperator = " ... ";

//                AddTextToTick("Shall I compare thee to a summer's day?  Thou art more lovely and more temperate."
//                + "  Rough winds do shake the darling buds of May.  And summer's lease hath all too short a date."
//                + "  Sometime too hot the eye of heaven shines.  And often is his gold complexion dimm'd."
//                + "  And every fair from fair somtimes declines.  By chance, or nature's changing course, untrimm'd.");

                m_controller.EventManager.OnStateStarted += OnStateStarted;
                m_timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
                m_timer.Start();
            }
        public AskWaterRightsBuyerInteraction(
            WaterWarsController controller, HudView sellerHud, HudView buyerHud,
            int salePrice, int amount)
            : base(controller, sellerHud, buyerHud)
        {
            if (!m_controller.Game.Players.TryGetValue(sellerHud.UserId, out m_seller))
            {
                return;
            }
            if (!m_controller.Game.Players.TryGetValue(buyerHud.UserId, out m_buyer))
            {
                return;
            }
            m_amount    = amount;
            m_salePrice = salePrice;

            AskBuyer();
        }
        public AskWaterBuyerInteraction(
            WaterWarsController controller, HudView playerHud, HudView targetPlayerHud,
            int amount, int salePrice)
            : base(controller, playerHud, targetPlayerHud)
        {
            if (!m_controller.Game.Players.TryGetValue(playerHud.UserId, out m_player))
            {
                return;
            }
            if (!m_controller.Game.Players.TryGetValue(targetPlayerHud.UserId, out m_targetPlayer))
            {
                return;
            }
            m_salePrice   = salePrice;
            m_waterToSell = amount;

            AskBuyer();
        }
Example #20
0
            public GameAssetButton(WaterWarsController controller, SceneObjectPart part, GameAssetView gav)
                : base(controller, part, new FixedTextureBehaviour())
            {
                m_gav = gav;

                Enabled = true;
                OnClick
                    += delegate(Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs)
                    { Util.FireAndForget(
                          delegate {
                        m_controller.ViewerWebServices.PlayerServices.SetLastSelected(
                            remoteClient.AgentId, m_gav.GameAsset);
                    }); };

                m_controller.EventManager.OnGameAssetBuildStarted   += OnGameAssetBuildStarted;
                m_controller.EventManager.OnGameAssetBuildCompleted += OnGameAssetBuildCompleted;
                m_controller.EventManager.OnGameAssetUpgraded       += OnGameAssetUpgraded;
                m_controller.EventManager.OnGameAssetSoldToEconomy  += OnGameAssetSoldToEconomy;
            }
        public AskLandBuyerInteraction(
            WaterWarsController controller, HudView playerHud, HudView targetPlayerHud, BuyPoint bp,
            int salePrice, RightsType rightsToSell)
            : base(controller, playerHud, targetPlayerHud)
        {
            m_bp = bp;
            if (!m_controller.Game.Players.TryGetValue(playerHud.UserId, out m_p))
            {
                return;
            }
            if (!m_controller.Game.Players.TryGetValue(targetPlayerHud.UserId, out m_targetPlayer))
            {
                return;
            }
            m_salePrice    = salePrice;
            m_rightsToSell = rightsToSell;

            AskBuyer();
        }
Example #22
0
        public PlayerServices(WaterWarsController controller) : base(controller)
        {
            m_controller.EventManager.OnPlayerAdded
                += delegate(Player p)
                {
                m_lastSelected[p.Uuid]            = AbstractGameAsset.None;
                m_lastSelectedSyncObjects[p.Uuid] = new Object();
                };

            // Update any players who have selected assets that are removed at the end of the revenue stage
            m_controller.EventManager.OnRevenueStageEnded += HandleOnRevenueStageEnded;

            // Leave it up to the state themselves to trigger general change events
            // This is because some states perform multiple actions for which we want only one event raised, in order
            // to prevent race conditions on the comet web interface
//            m_controller.EventManager.OnStateStarted += delegate(GameStateType type)
//            {
//                // If the game changes then update all long polls, since the owner/non-owner actions available may well
//                // have changed.
//                // However, if the game is in the revenue state while transitioning from the water state back
//                // to the build state then ignore the state update.
//                // The reason for this is that the revenue state update will fire and then the build update very
//                // shortly afterwards before the client has a chance to repoll.  Therefore, build owner actions will
//                // not appear correctly until the owner reselects the game asset.
//                if (m_controller.Game.State == GameStateType.Revenue)
//                {
////                    m_log.InfoFormat(
////                        "[WATER WARS]: Not pulsing all sync objects as ignoring state change to {0}", type);
//                    return;
//                }
//
////                m_log.InfoFormat("[WATER WARS]: Pulsing all sync objects due to state change to {0}", type);
//
//                foreach (Object o in m_lastSelectedSyncObjects.Values)
//                {
//                    lock (o)
//                        Monitor.PulseAll(o);
//                }
//            };
        }
Example #23
0
//        /// <summary>
//        /// Should only be used externally by tests
//        /// </summary>
//        public ISessionFactory m_sessionFactory;

        public void Initialize(WaterWarsController controller)
        {
            m_controller = controller;
//
//            var cfg = new Configuration();
//            cfg.Configure();
//            cfg.AddAssembly(typeof (Houses).Assembly);
//
//            // This defeats the whole point of persistence at the moment.  Need to do this conditionally depending
//            // on whether the table already exists
//            new SchemaExport(cfg).Create(true, true);
//
//            m_sessionFactory = cfg.BuildSessionFactory();
//
//            if (m_controller.Scenes.Count > 0)
//                m_controller.Scenes[0].EventManager.OnShutdown += Close;
//
//            m_controller.EventManager.OnSystemInitialized += SystemInitialized;
//            m_controller.EventManager.OnBuyPointRegistered += Save;
//            m_controller.EventManager.OnStateChanged += StateChanged;
//
//            m_controller.EventManager.OnPlayerAdded += Save;
//
//            m_controller.EventManager.OnGameStarted += UpdateGameBuyPointsAndPlayers;
//            m_controller.EventManager.OnGameReset += ResetGame;
//            m_controller.EventManager.OnWaterStageStarted += WaterStageStarted;
//            m_controller.EventManager.OnRevenueStageEnded += RevenueStageEnded;
//
//            m_controller.EventManager.OnBuyPointNameChanged += Update;
//            m_controller.EventManager.OnLandRightsBought += LandRightsBought;
//            m_controller.EventManager.OnLandRightsSold += LandRightsSold;
//            m_controller.EventManager.OnGameAssetBought += GameAssetBought;
//            m_controller.EventManager.OnGameAssetSold += Delete;
//            m_controller.EventManager.OnGameAssetUpgraded += UpgradeGameAsset;
//
//            m_controller.EventManager.OnWaterUsed += WaterUsed;
//            m_controller.EventManager.OnWaterSold += WaterSold;
        }
        public RegisterInteraction(WaterWarsController controller, UUID playerId, OsButton button)
            : base(controller, playerId, button)
        {
            bool checksPassed = true;

            try
            {
                m_controller.Groups.CheckForRequiredSetup();
            }
            catch (GroupsSetupException e)
            {
                checksPassed = false;
                SendAlert(playerId, string.Format("Could not register to play.  {0}", e.Message));
            }

            if (!controller.HudManager.HasHud(playerId))
            {
                checksPassed = false;
                SendAlert(playerId,
                          "Please attach your Water Wars head-up display (HUD) before registering for the game."
                          + "  You can get a hud by clicking the state capital building.");
            }

            if (checksPassed)
            {
                UserAccount ua = m_controller.Scenes[0].UserAccountService.GetUserAccount(UUID.Zero, playerId);

                if (!m_controller.Groups.IsPlayerInRequiredGroup(ua))
                {
                    m_controller.Groups.AddPlayerToRequiredGroup(ua);
                    SendAlert(playerId, string.Format("Adding you to group {0}", WaterWarsConstants.GROUP_NAME));
                }

                AskWhichRole(playerId);
            }
        }
Example #25
0
 public WaterWarsDecorator(
     WaterWarsController controller, Scene scene, AbstractView itemStoreView, string itemName, Vector3 positionToDisplay)
     : base(scene, itemStoreView, itemName, positionToDisplay)
 {
     m_controller = controller;
 }
Example #26
0
        public virtual void SetUp()
        {
            lo1 = new LandObject(UUID.Zero, false, null);
            lo2 = new LandObject(UUID.Zero, false, null);
            lo3 = new LandObject(UUID.Zero, false, null);

            bp1 = null; bp2 = null; bp3 = null;

            p1 = null; p2 = null;

            c1 = null;
            h1 = null; h2 = null; h3 = null;

            m_controller     = CreateController();
            m_mockDispatcher = new MockDispatcher(m_controller);
            m_mockDispatcher.Configuration = @"
[General]
start_date = 11/2/1904
seconds_per_stage = 0
rounds_per_game = 10
water_delivery_series = 1

[Players]
manufacturer_start_money = 17000
developer_start_money = 16000
farmer_start_money = 15000

manufacturer_cost_of_living = 0
developer_cost_of_living = 0
farmer_cost_of_living = 0

[Parcels]
rights_price = 350
water_entitlement = 1000

hill_zone_rights_price = 500
hill_zone_water_entitlement = 300

river_zone_rights_price = 1000
river_zone_water_entitlement = 900

[Crops]
alfalfa_cost_per_build_step = 50
chillis_cost_per_build_step = 30
grapes_cost_per_build_step = 80

alfalfa_build_steps = 1;
chillis_build_steps = 1;
grapes_build_steps = 1;

alfalfa_revenue = 100
chillis_revenue = 100
grapes_revenue = 40

alfalfa_maintenance = 0
chillis_maintenance = 0
grapes_maintenance = 0

alfalfa_water = 200
chillis_water = 500
grapes_water = 100

[Condos]
condos_1_cost_per_build_step = 50
condos_2_cost_per_build_step = 90
condos_3_cost_per_build_step = 120

condos_1_build_steps = 2;
condos_2_build_steps = 2;
condos_3_build_steps = 2;

condos_1_revenue = 150
condos_2_revenue = 200
condos_3_revenue = 250

condos_1_revenue_series = 1
condos_2_revenue_series = 1
condos_3_revenue_series = 1

condos_1_maintenance = 5
condos_2_maintenance = 4
condos_3_maintenance = 3

condos_1_water = 10
condos_2_water = 18
condos_3_water = 24

[Factories]
factories_1_cost_per_build_step = 5000
factories_2_cost_per_build_step = 7000
factories_3_cost_per_build_step = 9000

factories_1_build_steps = 1
factories_2_build_steps = 1
factories_3_build_steps = 1

factories_1_revenue = 2000
factories_2_revenue = 3000
factories_3_revenue = 4000

factories_revenue_series = 1

factories_1_maintenance = 500
factories_2_maintenance = 700
factories_3_maintenance = 900

factories_1_water = 1000
factories_2_water = 800
factories_3_water = 600";

            m_controller.Dispatcher = m_mockDispatcher;
            m_controller.Initialise(false);
        }
Example #27
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="controller"></param>
 public BuildStageState(WaterWarsController controller) : base(controller, GameStateType.Build)
 {
 }
Example #28
0
 public GameManagerView(WaterWarsController controller, Scene scene) : base(controller, scene)
 {
 }
Example #29
0
 public AbstractPlayState(WaterWarsController controller, GameStateType type) : base(controller, type)
 {
 }
Example #30
0
 public AbstractState(WaterWarsController controller, GameStateType type)
 {
     m_controller = controller;
     Game = m_controller.Game;
     Type = type;
 }
 public PreallocateLandToFarmers(WaterWarsController controller)
 {
     m_controller = controller;
 }
 public AbstractPlayState(WaterWarsController controller, GameStateType type)
     : base(controller, type)
 {
 }
Example #33
0
            public GameManagerButton(WaterWarsController controller, SceneObjectPart part)
                : base(controller, part, 4500, new FixedTextureBehaviour())
            {
                LabelBehaviour = new BlankableDynamicLabelBehaviour();
                LabelBehaviour.TextColor = Color.MediumBlue;
                UpdateLabel(m_controller.Game.State);

                m_controller.EventManager.OnStateStarted += UpdateLabel;

                Enabled = true;
            }
Example #34
0
 public GameManagerView(WaterWarsController controller, Scene scene)
     : base(controller, scene)
 {
 }
Example #35
0
 public GameDateManager(WaterWarsController controller)
 {
     m_controller = controller;
 }
Example #36
0
 public Events(WaterWarsController controller)
 {
     m_controller = controller;
 }