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); } } }
public FieldView( WaterWarsController controller, Scene scene, Field field, Vector3 scale, AbstractView itemStoreView) : base(controller, scene, itemStoreView) { m_field = field; m_scale = scale; }
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); }
// 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); }); }; }
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; }
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; }
public GameManagerTopLevelInteraction( WaterWarsController controller, UUID playerId, GameManagerView.GameManagerButton button) : base(controller, playerId, button) { m_playerId = playerId; m_gmButton = button; AskTopLevelChoice(); }
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); }
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"; }
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); }
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; }
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; }
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); }); }; }
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; }
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(); }
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(); }
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); // } // }; }
// /// <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); } }
public WaterWarsDecorator( WaterWarsController controller, Scene scene, AbstractView itemStoreView, string itemName, Vector3 positionToDisplay) : base(scene, itemStoreView, itemName, positionToDisplay) { m_controller = controller; }
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); }
/// <summary> /// Constructor. /// </summary> /// <param name="controller"></param> public BuildStageState(WaterWarsController controller) : base(controller, GameStateType.Build) { }
public GameManagerView(WaterWarsController controller, Scene scene) : base(controller, scene) { }
public AbstractPlayState(WaterWarsController controller, GameStateType type) : base(controller, type) { }
public AbstractState(WaterWarsController controller, GameStateType type) { m_controller = controller; Game = m_controller.Game; Type = type; }
public PreallocateLandToFarmers(WaterWarsController controller) { m_controller = controller; }
public GameDateManager(WaterWarsController controller) { m_controller = controller; }
public Events(WaterWarsController controller) { m_controller = controller; }