Exemple #1
0
        public static void HandleBuildHQ(int fromClient, Packet packet)
        {
            int clientIDCheck = packet.ReadInt();

            if (fromClient != clientIDCheck)
            {
                Console.WriteLine($"Player with ID: \"{fromClient}\" has assumed the wrong client ID: \"{clientIDCheck}\"!");
            }

            Player player = Server.clients[fromClient].Player;

            HexCoordinates coordinates = packet.ReadHexCoordinates();
            Headquarter    hq          = new Headquarter();

            if (GameLogic.VerifyBuildHQ(coordinates, hq, player))
            {
                Tribe tribe = GameLogic.ApplyBuildHQ(coordinates, hq);
                player.Tribe = tribe;
                ServerSend.BroadcastApplyBuildHQ(coordinates);
                ServerSend.BroadcastPlayer(player);
                Console.WriteLine("Player: " + player.Name + " successfully placed a HQ.");
            }
            else
            {
                Console.WriteLine("Player: " + player.Name + " failed to build HQ");
            }
            Server.SaveGame();
        }
Exemple #2
0
    public SplitClanPreventTribeSplitEventMessage(Clan clan, Tribe tribe, Agent agent, long date) : base(clan, WorldEvent.SplitClanPreventTribeSplitEventId, date)
    {
        clan.World.AddMemorableAgent(agent);

        AgentId = agent.Id;
        TribeId = tribe.Id;
    }
Exemple #3
0
 private IEnumerable <UnitModel> GetDeffenceUnits(Tribe tribe)
 {
     return(_units
            .Where(x => x.Tribe == tribe &&
                   (x.UnitType == UnitType.FOOT_TROOPS || x.UnitType == UnitType.CAVALRY) &&
                   (x.Attack < x.DeffenceAgainstCavalry || x.Attack < x.DeffenceAgainstInfantry)));
 }
        public async Task <IHttpActionResult> PutTribe(int id, Tribe tribe)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tribe.Id)
            {
                return(BadRequest());
            }

            db.Entry(tribe).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TribeExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
    private void Start()
    {
        instance     = this;
        hp_Point     = 200f;
        attack_Point = 3f;
        attack_Speed = 1.0f;
        move_Speed   = 0.3f;

        playerTribe = Tribe.Demon;
        playerState = State.Wating;

        for (int i = 0; ; i++)
        {
            try
            {
                GameObject c = item_Set_Position.transform.GetChild(i).gameObject;
                item_List.Add(c);
            }
            catch
            {
                break;
            }
        }

        SendStatusData(); //초기실행시 필수
    }
Exemple #6
0
        public static Packet GameState()
        {
            Packet packet = new Packet();

            packet.Write(GameLogic.grid);

            //Send other Players
            packet.Write(GameLogic.Players.Count);
            foreach (Player player in GameLogic.Players)
            {
                packet.Write(player.Name);
                Tribe tribe = player.Tribe;
                if (tribe == null)
                {
                    packet.Write((byte)255);
                }
                else
                {
                    packet.Write(player.Tribe.Id);
                }
                packet.Write(player.Position);
                packet.Write(player.TroopInventory);
            }
            return(packet);
        }
Exemple #7
0
        /// <summary>
        /// Edit: PlayerTribeSelector
        /// </summary>
        private void MarkersGrid_EndCustomEdit(object sender, EndCustomEditEventArgs e)
        {
            if (e.Column.Key == "Name")
            {
                var oldMarker = e.Row.DataRow as MarkerGridRow;
                if (oldMarker == null || e.Row.RowType == RowType.NewRecord)
                {
                    //oldMarker = new MarkerGridRow();
                    //oldMarker.Enabled = (bool)e.Row.GridEX.GetValue("Enabled");

                    object selected = _playerTribeSelector.Tribe ?? (object)_playerTribeSelector.Player;
                    e.Value       = selected;
                    e.DataChanged = true;
                }
                else
                {
                    Player newPlayer = _playerTribeSelector.Player;
                    Tribe  newTribe  = _playerTribeSelector.Tribe;

                    if (newPlayer != oldMarker.Player || newTribe != oldMarker.Tribe)
                    {
                        DeleteMarker(oldMarker);

                        oldMarker.Player = newPlayer;
                        oldMarker.Tribe  = newTribe;
                        UpdateMarker(oldMarker, oldMarker.GetMarkerSettings());

                        object selected = _playerTribeSelector.Tribe ?? (object)_playerTribeSelector.Player;
                        e.Value       = selected;
                        e.DataChanged = true;
                    }
                }
            }
        }
        public TribeContextMenu(Map map, Tribe tribe)
        {
            _tribe = tribe;

            _menu = JanusContextMenu.Create();

            if (map.Display.IsVisible(tribe))
            {
                _menu.AddCommand(ControlsRes.ContextMenu_Pinpoint, OnPinPoint);
            }
            _menu.AddCommand(ControlsRes.ContextMenu_PinpointAndCenter, OnPinpointAndCenter, Properties.Resources.TeleportIcon);
            _menu.AddSeparator();

            var markerContext = new MarkerContextMenu(map, tribe);

            _menu.AddMarkerContextCommands(markerContext);
            _menu.AddSeparator();

            _menu.AddCommand(ControlsRes.ContextMenu_TwStats, OnTwStats);
            _menu.AddCommand(ControlsRes.ContextMenu_TwGuest, OnTwGuest);

            _menu.AddSeparator();

            _menu.AddCommand(ControlsRes.ContextMenu_ToClipboard, OnToClipboard, Properties.Resources.clipboard);
            _menu.AddCommand(ControlsRes.ContextMenu_ToBbCode, OnBbCode, Properties.Resources.clipboard);
        }
    public override void Reset(long newTriggerDate)
    {
        base.Reset(newTriggerDate);

        _demandClan    = Faction as Clan;
        _originalTribe = OriginalPolity as Tribe;
    }
    public ClanDemandsInfluenceDecisionEvent(Clan demandClan, FactionEventData data) : base(demandClan, data)
    {
        _demandClan    = demandClan;
        _originalTribe = World.GetPolity(data.OriginalPolityId) as Tribe;

        DoNotSerialize = true;
    }
    public override void Reset(long newTriggerDate)
    {
        base.Reset(newTriggerDate);

        _sourceTribe = Polity as Tribe;
        _originalSourceDominantClan = Polity.DominantFaction as Clan;
    }
Exemple #12
0
        public void SpawnTribe(AnimalProperties properties)
        {
            Tribe tribe = new Tribe(_world, properties);

            tribe.TribeColor = new Color(255, 255, 255);
            AddTribe(tribe);
        }
    public FosterTribeRelationDecisionEvent(Tribe sourceTribe, long triggerDate) : base(sourceTribe, triggerDate, FosterTribeRelationDecisionEventId)
    {
        _sourceTribe = sourceTribe;
        _originalSourceDominantClan = sourceTribe.DominantFaction as Clan;

        DoNotSerialize = true;
    }
    public FosterTribeRelationDecisionEvent(Tribe sourceTribe, PolityEventData data) : base(sourceTribe, data)
    {
        _sourceTribe = sourceTribe;
        _originalSourceDominantClan = World.GetFaction(data.OriginalDominantFactionId) as Clan;

        DoNotSerialize = true;
    }
Exemple #15
0
        public void TribeList()
        {
            Tribes = new Dictionary <int, Tribe>();
            try
            {
                var TribeSheet = MainWindow.Realm.GameData.GetSheet <SaintCoinach.Xiv.Tribe>();
                foreach (var Parse in TribeSheet)
                {
                    var tribe = new Tribe
                    {
                        Index = Parse.Key,
                        Name  = Parse.Feminine
                    };
                    if (Parse.Key == 0)
                    {
                        tribe.Name = "None";
                    }
                    Tribes.Add(Parse.Key, tribe);
                }
            }

            catch (Exception)
            {
                Tribes = null;

                //throw;
            }
        }
Exemple #16
0
        public void TribeList()
        {
            Tribes = new Dictionary <int, Tribe>();
            try
            {
                var TribeSheet = MainWindow.Realm.GameData.GetSheet <SaintCoinach.Xiv.Tribe>();
                foreach (var Parse in TribeSheet)
                {
                    Tribe tribe = new Tribe();
                    tribe.Index = Parse.Key;
                    tribe.Name  = Parse.Feminine;
                    if (Parse.Key == 0)
                    {
                        tribe.Name = "None";
                    }
                    Tribes.Add(Parse.Key, tribe);
                    //    Console.WriteLine($"{Parse.Key} {Parse.Feminine}");
                }
            }

            catch (Exception e)
            {
                Tribes = null;

                throw;
            }
        }
 private static string GenerateDescriptionIntro(Tribe sourceTribe, Tribe targetTribe)
 {
     return
         (sourceTribe.CurrentLeader.Name.BoldText + ", leader of " + sourceTribe.GetNameAndTypeStringBold() + ", is proposing " +
          targetTribe.GetNameAndTypeStringBold() + " merge into " + sourceTribe.CurrentLeader.PossessiveNoun + " tribe.\n\n" +
          "By accepting this proposal, " + targetTribe.GetNameAndTypeStringBold() + " will disappear.\n\n");
 }
Exemple #18
0
    public static void LeaderPreventsSplit(Clan splitClan, Clan dominantClan, Tribe tribe, long eventId)
    {
        float charismaFactor = splitClan.CurrentLeader.Charisma / 10f;
        float wisdomFactor   = splitClan.CurrentLeader.Wisdom / 15f;

        float attributesFactor = Mathf.Max(charismaFactor, wisdomFactor);

        attributesFactor = Mathf.Clamp(attributesFactor, 0.5f, 2f);

        int rngOffset = RngOffsets.TRIBE_SPLITTING_EVENT_TRIBE_LEADER_PREVENTS_MODIFY_ATTRIBUTE;

        // Influence

        float randomFactor           = dominantClan.GetNextLocalRandomFloat(rngOffset++);
        float influencePercentChange = (BaseMaxInfluencePercentChange - BaseMinInfluencePercentChange) * randomFactor + BaseMinInfluencePercentChange;

        influencePercentChange /= attributesFactor;

        Polity.TransferInfluence(dominantClan, splitClan, influencePercentChange);

        // Relationship

        randomFactor = dominantClan.GetNextLocalRandomFloat(rngOffset++);
        float relationshipPercentChange = (BaseMaxRelationshipPercentChange - BaseMinRelationshipPercentChange) * randomFactor + BaseMinRelationshipPercentChange;

        relationshipPercentChange *= attributesFactor;

        float newValue = MathUtility.IncreaseByPercent(dominantClan.GetRelationshipValue(splitClan), relationshipPercentChange);

        Faction.SetRelationship(dominantClan, splitClan, newValue);

        // Updates

        LeaderPreventsSplit_notifySplitClan(splitClan, dominantClan, tribe, eventId);
    }
Exemple #19
0
    public void PerformAction(Tribe tribe)
    {
        AddListener(m_owningTower);
        AddListener(tribe);
        m_currentTribe = tribe;
        m_actionActive = true;
        m_completion   = 0.0f;
        m_workerCount  = Mathf.Max(1, tribe.Count);
        float secondsRemaining = GetEffectiveActionDuration();

        if (ShowsWorkingArea())
        {
            m_workingArea = CreateWorkingArea(tribe, secondsRemaining);
        }
        m_tribeSign = CreateTribeSign(tribe);
        m_tribeSign.transform.position = transform.position + new Vector3(2.0f, 0.5f, 0.0f);
        this.OnBeginAction(secondsRemaining);
        foreach (ITowerSegmentCallback listener in m_listenerList)
        {
            listener.OnBeginAction(this);
        }
        this.OnProgressAction(secondsRemaining);
        foreach (ITowerSegmentCallback listener in m_listenerList)
        {
            listener.OnProgressAction(this, m_completion, secondsRemaining);
        }
    }
Exemple #20
0
        public void CreateRandomTribes(int numberOfTribes)
        {
            for (int i = 0; i != numberOfTribes; ++i)
            {
                AnimalProperties properties = new AnimalProperties();
                properties.Agility              = 1 + RandomGenerator.Random.Next(0, 2);
                properties.Stamina              = 1 + RandomGenerator.Random.Next(0, 3);
                properties.Strength             = 1 + RandomGenerator.Random.Next(0, 3);
                properties.Diet                 = AnimalProperties.DietType.CARNIVORE;
                properties.GroupBehaviour       = 1 + RandomGenerator.Random.Next(0, 6);;
                properties.PreferredAltitude    = 50 + RandomGenerator.Random.Next(-40, 40);;
                properties.PreferredTemperature = 300 + +RandomGenerator.Random.Next(-40 + 40);;
                properties.PreferredTerrain     = AnimalProperties.TerrainType.LAND;
                properties.NumberOfAnimals      = 10 + RandomGenerator.Random.Next(0, 20);

                Tribe tribe = new Tribe(_world, properties);

                tribe.PositionInTiles = RandomGenerator.GetRandomVector2iInRect(new IntRect(0, 0, _world.GetWorldProperties().WorldSizeInTiles.X, _world.GetWorldProperties().WorldSizeInTiles.Y));
                for (int j = 0; j != properties.NumberOfAnimals; ++j)
                {
                    tribe.SpawnAnimal();
                }
                _tribeList.Add(tribe);
            }
        }
Exemple #21
0
    public GameObject CreateTribeSign(Tribe tribe)
    {
        GameObject obj;

        if (tribe.m_unitColour == UnitColour.Blue)
        {
            obj = Instantiate(m_owningTower.m_tribeXSignPrefab) as GameObject;
        }
        else if (tribe.m_unitColour == UnitColour.Red)
        {
            obj = Instantiate(m_owningTower.m_tribeBSignPrefab) as GameObject;
        }
        else if (tribe.m_unitColour == UnitColour.Yellow)
        {
            obj = Instantiate(m_owningTower.m_tribeYSignPrefab) as GameObject;
        }
        else if (tribe.m_unitColour == UnitColour.Green)
        {
            obj = Instantiate(m_owningTower.m_tribeASignPrefab) as GameObject;
        }
        else
        {
            return(null);
        }
        TribeSignUI ui = obj.GetComponent <TribeSignUI>();

        ui.tribe = tribe;
        return(obj);
    }
Exemple #22
0
 public MarkerContextMenu(Map map, Tribe tribe)
 {
     _menu = JanusContextMenu.Create();
     _map = map;
     _tribe = tribe;
     InitializeMenu();
 }
Exemple #23
0
 /* Called on initialisation */
 public void Awake()
 {
     m_listenerList = new List <ITowerSegmentCallback>();
     m_currentTribe = null;
     m_actionActive = false;
     m_workerCount  = 1.0f;
 }
    public ClanDemandsInfluenceDecisionEvent(Clan demandClan, long triggerDate) : base(demandClan, triggerDate, ClanDemandsInfluenceDecisionEventId)
    {
        _demandClan    = demandClan;
        _originalTribe = demandClan.Polity as Tribe;

        DoNotSerialize = true;
    }
    protected override void DestroyInternal()
    {
        base.DestroyInternal();

        if ((Polity != null) && Polity.StillPresent)
        {
            Tribe tribe = Polity as Tribe;

            long triggerDate = CalculateTriggerDate(tribe);
            if (triggerDate < 0)
            {
                // skip reseting the event since the trigger date is invalid
                return;
            }

            if (triggerDate <= tribe.World.CurrentDate)
            {
                throw new System.Exception(
                          "Trigger Date (" + triggerDate +
                          ") less or equal to current date: " + tribe.World.CurrentDate);
            }

            tribe.ResetEvent(FosterTribeRelationDecisionEventId, triggerDate);
        }
    }
    public AvoidOpeningTribeEventMessage(Tribe tribe, Agent agent, long date) : base(tribe, WorldEvent.AvoidOpenTribeDecisionEventId, date)
    {
        tribe.World.AddMemorableAgent(agent);

        AgentId = agent.Id;
        TribeId = tribe.Id;
    }
Exemple #27
0
        public TribeContextMenu(Map map, Tribe tribe)
        {
            _tribe = tribe;

            _menu = JanusContextMenu.Create();

            if (map.Display.IsVisible(tribe))
            {
                _menu.AddCommand("Pinpoint", OnPinPoint);
            }
            _menu.AddCommand("Pinpoint && Center", OnPinpointAndCenter, Properties.Resources.TeleportIcon);
            _menu.AddSeparator();

            var markerContext = new MarkerContextMenu(map, tribe);
            _menu.AddMarkerContextCommands(markerContext);
            _menu.AddSeparator();

            _menu.AddCommand("TWStats", OnTwStats);
            _menu.AddCommand("TW Guest", OnTwGuest);

            _menu.AddSeparator();

            _menu.AddCommand("To clipboard", OnToClipboard, Properties.Resources.clipboard);
            _menu.AddCommand("BBCode", OnBbCode, Properties.Resources.clipboard);
        }
Exemple #28
0
        public ActionResult Select(string race)
        {
            Tribe selected = Model.AvailableTribes.First(tribe => tribe.ToString() == race);

            Model.CurrentWebPlayer.SelectTribe(selected);
            return(View("show", Model));
        }
Exemple #29
0
    public static void TribeLeaderPreventedSplit(Clan splitClan, Clan dominantClan, Tribe tribe)
    {
        splitClan.SetToUpdate();
        dominantClan.SetToUpdate();

        tribe.AddEventMessage(new PreventTribeSplitEventMessage(tribe, splitClan, tribe.CurrentLeader, splitClan.World.CurrentDate));
    }
Exemple #30
0
 /// <summary>
 /// Publishes an event for all the villages in one tribe
 /// </summary>
 public void SelectVillages(object sender, Tribe tribe, VillageTools action)
 {
     if (tribe != null)
     {
         VillagesSelected(sender, new TribeEventArgs(tribe, action));
     }
 }
    public static void LeaderAttemptsFosterRelationship_TriggerRejectDecision(Tribe sourceTribe, Tribe targetTribe, float chanceOfRejecting, long eventId)
    {
        World world = sourceTribe.World;

        bool acceptOffer = targetTribe.GetNextLocalRandomFloat(RngOffsets.FOSTER_TRIBE_RELATION_EVENT_TARGETTRIBE_LEADER_ACCEPT_OFFER) > chanceOfRejecting;

        Clan targetDominantClan = targetTribe.DominantFaction as Clan;

        if (targetTribe.IsUnderPlayerFocus || targetDominantClan.IsUnderPlayerGuidance)
        {
            Decision handleOfferDecision;

            handleOfferDecision = new HandleFosterTribeRelationAttemptDecision(sourceTribe, targetTribe, acceptOffer, eventId);              // Give player options

            if (targetDominantClan.IsUnderPlayerGuidance)
            {
                world.AddDecisionToResolve(handleOfferDecision);
            }
            else
            {
                handleOfferDecision.ExecutePreferredOption();
            }
        }
        else if (acceptOffer)
        {
            HandleFosterTribeRelationAttemptDecision.LeaderAcceptsOffer(sourceTribe, targetTribe, eventId);
        }
        else
        {
            HandleFosterTribeRelationAttemptDecision.LeaderRejectsOffer(sourceTribe, targetTribe, eventId);
        }
    }
Exemple #32
0
 /// <summary>
 /// Publishes an event for one tribe
 /// </summary>
 public void SelectTribe(object sender, Tribe tribe, VillageTools tool)
 {
     if (TribeSelected != null)
     {
         TribeSelected(sender, new TribeEventArgs(tribe, tool));
     }
 }
Exemple #33
0
 public DetailsCommand(DetailsDisplayEnum display, Tribe tribe, VillageTools tool)
 {
     Tooltip = tribe.ToString();
     Display = display;
     if (Display == DetailsDisplayEnum.None || Display == DetailsDisplayEnum.Village || Display == DetailsDisplayEnum.Player)
         Display = DetailsDisplayEnum.Tribe;
     UnderlyingDisplay = DetailsDisplayEnum.Tribe;
     Tribe = tribe;
     Tool = tool;
 }
Exemple #34
0
        public void CannotAttack()
        {
            Tribe tribe = new Tribe(10, 3, 2, 10, 6, 1, 2, 3);

            tribe.NewDay();
            tribe.NewDay();
            Assert.IsTrue(tribe.CanAttack());
            tribe.NewDay();
            Assert.IsFalse(tribe.CanAttack());
        }
Exemple #35
0
        public void CreateTribe()
        {
            Tribe tribe = new Tribe(10, 10, 2, 10, 6, 1, 1, 1);

            Assert.IsTrue(tribe.CanAttack());
            Assert.AreEqual(10, tribe.Day);
            Assert.AreEqual(6, tribe.Strength);
            Assert.AreEqual(2, tribe.West);
            Assert.AreEqual(10, tribe.East);
        }
Exemple #36
0
        public void CreateTribeAndNewDay()
        {
            Tribe tribe = new Tribe(10, 10, 2, 10, 6, 1, 2, 3);

            tribe.NewDay();

            Assert.IsTrue(tribe.CanAttack());
            Assert.AreEqual(11, tribe.Day);
            Assert.AreEqual(9, tribe.Strength);
            Assert.AreEqual(4, tribe.West);
            Assert.AreEqual(12, tribe.East);
        }
Exemple #37
0
        public static void Main(string[] args)
        {
            string inputname = args[0];
            string outputname = args[1];

            string[] lines = File.ReadAllLines(inputname);

            int ncases = int.Parse(lines[0]);
            int nline = 0;
            IList<string> results = new List<string>();
            Attacks attacks = new Attacks();

            for (int k = 0; k < ncases; k++)
            {
                Console.WriteLine(string.Format("Solving Case #{0}", k + 1));
                nline++;
                int ntribes = int.Parse(lines[nline]);
                IList<Tribe> tribes = new List<Tribe>();

                for (int j = 0; j < ntribes; j++)
                {
                    nline++;
                    string[] words = lines[nline].Split(' ');
                    int day = int.Parse(words[0]);
                    int nattacks = int.Parse(words[1]);
                    int west = int.Parse(words[2]);
                    int east = int.Parse(words[3]);
                    int strength = int.Parse(words[4]);
                    int ddays = int.Parse(words[5]);
                    int ddistance = int.Parse(words[6]);
                    int dstrength = int.Parse(words[7]);
                    Tribe tribe = new Tribe(day, nattacks, west, east, strength, ddays, ddistance, dstrength);
                    tribes.Add(tribe);
                }

                int count = attacks.Count(tribes);

                results.Add(string.Format("Case #{0}: {1}", k + 1, count));
            }

            File.WriteAllLines(outputname, results.ToArray());
        }
Exemple #38
0
        public TribeTableRow(Map map, Tribe tribe)
        {
            Tribe = tribe;
            _map = map;

            // player is currently visible?
            Cells.Add(VillageTableRow.GetVisibleImageCell(_map, tribe));

            Cells.Add(new Cell(tribe.Rank));
            Cells.Add(new Cell(tribe.Tag)
                {
                    ToolTipText = tribe.Tooltip
                });

            Cells.Add(new Cell(tribe.Players.Count));
            Cells.Add(new Cell(tribe.PlayerDifferenceString));
            Cells.Add(new Cell(tribe.AllPoints));
            if (tribe.PreviousTribeDetails != null)
            {
                Cells.Add(new Cell(tribe.AllPoints - tribe.PreviousTribeDetails.AllPoints));
            }
            else
            {
                Cells.Add(new Cell());
            }
            Cells.Add(new Cell(tribe.Villages));
            if (tribe.PreviousTribeDetails != null)
            {
                Cells.Add(new Cell(tribe.Villages - tribe.PreviousTribeDetails.Villages));
            }
            else
            {
                Cells.Add(new Cell());
            }

            Cells.Add(new Cell(tribe.Name));
        }
        public void SetMarker(MarkerSettings settings)
        {
            _settings = settings;
            _player = null;
            _tribe = null;

            SetControlProperties(settings);
        }
Exemple #40
0
 public void PlayerSelectedTribe(IPlayer player, Tribe tribe)
 {
 }
Exemple #41
0
 /// <summary>
 /// Publishes an event for one tribe
 /// </summary>
 public void SelectTribe(object sender, Tribe tribe, VillageTools tool)
 {
     if (TribeSelected != null)
     {
         TribeSelected(sender, new TribeEventArgs(tribe, tool));
     }
 }
        /// <summary>
        /// Clears the input box
        /// </summary>
        public void EmptyTextBox(bool raiseEvent)
        {
            Player = null;
            Tribe = null;
            SelectorControl.BackColor = NeutralInput;

            _tooltip.ToolTipTitle = string.Empty;
            _tooltip.SetToolTip(this, GetEmptyTooltip());

            if (string.IsNullOrEmpty(SelectorControl.Text))
                return;

            bool oldHandleText = _handleTextChanged;
            _handleTextChanged = raiseEvent;

            SelectorControl.Text = string.Empty;

            _handleTextChanged = oldHandleText;
        }
 /// <summary>
 /// Sets a tribe in the box
 /// </summary>
 public void SetTribe(Tribe tribe)
 {
     SetTribe(tribe, false);
 }
Exemple #44
0
            private void LoadTwSnapshot(string dataPath, out WorldVillagesCollection villages, out Dictionary<string, Player> players, out Dictionary<string, Tribe> tribes)
            {
                if (IsValidDataPath(dataPath))
                {
                    // load map files
                    string[] readVillages = File.ReadAllLines(dataPath + FileVillageString);
                    string[] readPlayers = File.ReadAllLines(dataPath + FilePlayerString);
                    string[] readTribes = File.ReadAllLines(dataPath + FileTribeString);

                    // Temporary dictionaries for mapping
                    var tempPlayers = new Dictionary<int, string>(WorldPlayerCount);
                    var tempTribes = new Dictionary<int, string>(WorldTribeCount);

                    // Load tribes
                    tribes = new Dictionary<string, Tribe>(readTribes.Length + 1);
                    foreach (string tribeString in readTribes)
                    {
                        var tribe = new Tribe(tribeString.Split(','));
                        tribes.Add(tribe.Tag.ToUpper(), tribe);
                        tempTribes.Add(tribe.Id, tribe.Tag.ToUpper());
                    }

                    // Load players
                    players = new Dictionary<string, Player>(readPlayers.Length + 1);
                    foreach (string playerString in readPlayers)
                    {
                        var player = new Player(playerString.Split(','));

                        // Find tribe
                        if (player.TribeId != 0 && tempTribes.ContainsKey(player.TribeId))
                        {
                            Tribe tribe = tribes[tempTribes[player.TribeId]];
                            player.Tribe = tribe;
                            tribes[tribe.Tag.ToUpper()].AddPlayer(player);
                        }

                        players.Add(player.Name.ToUpper(), player);
                        tempPlayers.Add(player.Id, player.Name.ToUpper());
                    }

                    // Load villages
                    villages = new WorldVillagesCollection(readVillages.Length + 1);
                    foreach (string villageString in readVillages)
                    {
                        var village = new Village(villageString.Split(','));

                        // links to and from players
                        if (village.PlayerId != 0 && tempPlayers.ContainsKey(village.PlayerId))
                        {
                            Player player = players[tempPlayers[village.PlayerId]];
                            village.Player = player;
                            players[player.Name.ToUpper()].AddVillage(village);
                        }

                        if (village.Location.IsValidGameCoordinate())
                        {
                            villages.Add(new Point(village.X, village.Y), village);
                        }
                    }
                }
                else
                {
                    tribes = new Dictionary<string, Tribe>();
                    players = new Dictionary<string, Player>();
                    villages = new WorldVillagesCollection();
                }
            }
        /// <summary>
        /// Sets a player in the box
        /// </summary>
        private void SetPlayer(Player player, bool raiseEvent)
        {
            Player = player;
            Tribe = null;

            if (player != null)
            {
                if (SelectorControl.Text != player.Name)
                {
                    _handleTextChanged = false;
                    SetDataSource();
                    SelectorControl.Text = player.Name;
                    _handleTextChanged = true;
                }

                SelectorControl.SelectionStart = Text.Length;
                SelectorControl.BackColor = GoodInput;
                _tooltip.ToolTipTitle = player.Name;
                _tooltip.SetToolTip(this, player.Tooltip);
                if (raiseEvent && PlayerSelected != null)
                {
                    PlayerSelected(this, new PlayerEventArgs(player, VillageTools.PinPoint));
                }
            }
            else
            {
                EmptyTextBox(raiseEvent);
            }
        }
Exemple #46
0
        public void RemoveMarker(Map map, Tribe tribe)
        {
            _markers.RemoveAll(x => x.Tribe == tribe);

            World.Default.InvalidateMarkers();
        }
Exemple #47
0
        /// <summary>
        /// Gets the marker for the tribe or
        /// return a new one
        /// </summary>
        public Marker GetMarker(Tribe tribe)
        {
            Debug.Assert(tribe != null);
            if (World.Default.You.HasTribe && World.Default.You.Tribe == tribe)
            {
                Debug.Assert(YourTribeMarker.Settings.Name == Marker.DefaultNames.YourTribe);
                return YourTribeMarker;
            }

            Marker found;
            if (_markTribe.TryGetValue(tribe.Id, out found))
            {
                return found;
            }

            return new Marker(MarkerSettings.Create(EnemyMarker.Settings.Color, EnemyMarker.Settings.View));
        }
Exemple #48
0
 public static void AddTribeContextCommands(this UIContextMenu menu, Map map, Tribe tribe)
 {
     string tribeDesc = string.Format("{0} ({1})", tribe.Tag, Common.GetPrettyNumber(tribe.AllPoints));
     if (tribe.Rank <= 20)
     {
         tribeDesc = string.Format("#{0} {1}", tribe.Rank, tribeDesc);
     }
     var tribeCommand = menu.AddCommand(tribeDesc, null, Properties.Resources.Tribe);
     tribeCommand.ToolTipText = tribe.Tooltip;
     var tribeContext = new TribeContextMenu(map, tribe);
     tribeCommand.Commands.AddRange(tribeContext.GetCommands().ToArray());
 }
 /// <summary>
 /// Cleanup anything when switching worlds or settings
 /// </summary>
 protected internal override void CleanUp()
 {
     _selectedVillage = null;
     _pinPointedTribe = null;
     _lockPinpointedVillage = false;
     _unpinpointedVillage = null;
 }
 private void EventPublisher_VillagesSelected(object sender, VillagesEventArgs e)
 {
     if (e.Tool == VillageTools.PinPoint)
     {
         var tribe = e.Villages as Tribe;
         if (tribe != null)
         {
             _pinPointedTribe = tribe;
             _pinPointedVillage = null;
             _selectedVillage = null;
             _lockPinpointedVillage = false;
         }
         else
         {
             _pinPointedTribe = null;
             _pinPointedVillage = e.FirstVillage;
         }
     }
 }
        /// <summary>
        /// Sets a tribe in the box
        /// </summary>
        private void SetTribe(Tribe tribe, bool raiseEvent)
        {
            Player = null;
            Tribe = tribe;

            if (tribe != null)
            {
                if (SelectorControl.Text != tribe.Tag)
                {
                    _handleTextChanged = false;
                    SetDataSource();
                    SelectorControl.Text = tribe.Tag;
                    _handleTextChanged = true;
                }

                SelectorControl.SelectionStart = Text.Length;
                SelectorControl.BackColor = GoodInput;
                _tooltip.ToolTipTitle = tribe.Tag;
                _tooltip.SetToolTip(this, tribe.Tooltip);
                if (raiseEvent && TribeSelected != null)
                {
                    TribeSelected(this, new TribeEventArgs(tribe, VillageTools.PinPoint));
                }
            }
            else
            {
                EmptyTextBox(raiseEvent);
            }
        }
Exemple #52
0
        /// <summary>
        /// Update a tribe marker and refresh the map
        /// </summary>
        public void UpdateMarker(Map map, Tribe tribe, MarkerSettings settings)
        {
            if (World.Default.You.HasTribe && tribe == World.Default.You.Tribe)
            {
                settings = MarkerSettings.ChangeName(settings, Marker.DefaultNames.YourTribe);
                YourTribeMarker = new Marker(settings);
            }
            else
            {
                _markers.RemoveAll(x => x.Tribe == tribe);
                _markers.Add(new Marker(tribe, settings));
            }

            World.Default.InvalidateMarkers();
        }
 private void SelectorControl_ValueChanged(object sender, EventArgs e)
 {
     if (_handleTextChanged)
     {
         var selected = SelectorControl.SelectedItem as PlayerOrTribeRow;
         if (selected != null)
         {
             if (selected.IsPlayer)
             {
                 Player ply = World.Default.GetPlayer(SelectorControl.Text);
                 if (ply != null)
                 {
                     SetPlayer(ply, true);
                 }
             }
             else if (selected.IsTribe)
             {
                 var ply = World.Default.GetTribe(SelectorControl.Text);
                 if (ply != null)
                 {
                     SetTribe(ply, true);
                 }
             }
         }
         else
         {
             Player = null;
             Tribe = null;
         }
     }
 }
Exemple #54
0
 public void Remove(Tribe tribe)
 {
     _tmp.Remove(tribe);
 }
        private void SelectorControl_TextChanged(object sender, EventArgs e)
        {
            if (_handleTextChanged)
            {
                bool found = false;
                if (SelectorControl.Text.Length > 0 && string.IsNullOrEmpty(SelectorControl.SelectedText))
                {
                    if (AllowPlayer)
                    {
                        Player ply = World.Default.GetPlayer(SelectorControl.Text);
                        if (ply != null)
                        {
                            found = true;
                            SetPlayer(ply, true);
                        }
                    }
                    if (AllowTribe && !found)
                    {
                        Tribe tribe = World.Default.GetTribe(SelectorControl.Text);
                        if (tribe != null)
                        {
                            found = true;
                            SetTribe(tribe, true);
                        }
                    }
                }

                if (!found && SelectorControl.BackColor != BadInput)
                {
                    if (SelectorControl.Text.Length == 0)
                    {
                        SelectorControl.BackColor = NeutralInput;
                    }
                    else
                    {
                        SelectorControl.BackColor = BadInput;
                        _tooltip.ToolTipTitle = string.Empty;
                        _tooltip.SetToolTip(this, GetEmptyTooltip());
                    }

                    SelectorControl.Image = null;
                    Tribe = null;
                    Player = null;
                }
            }
        }
        public void SetMarker(Tribe tribe)
        {
            _settings = null;
            _player = null;
            _tribe = tribe;

            Marker marker = World.Default.Map.MarkerManager.GetMarker(tribe);
            SetControlProperties(marker.Settings);
        }
Exemple #57
0
        /// <summary>
        /// Checks if the tribe matches the current search criteria
        /// </summary>
        public bool Match(Tribe tribe)
        {
            if (Text.Length != 0 && !tribe.Name.ToUpper(CultureInfo.InvariantCulture).Contains(Text) && !tribe.Tag.ToUpper(CultureInfo.InvariantCulture).Contains(Text))
            {
                return false;
            }

            if (tribe.AllPoints < PointsBetweenStart || (PointsBetweenEnd > 0 && tribe.AllPoints > PointsBetweenEnd))
                return false;

            return true;
        }
        public void SetMarker(Player player)
        {
            _settings = null;
            _player = player;
            _tribe = null;

            Marker marker = World.Default.Map.MarkerManager.GetMarker(player);
            SetControlProperties(marker.Settings);
        }
Exemple #59
0
 /// <summary>
 /// Prepares the user control for tribe details viewing
 /// </summary>
 private void SetQuickFinder(Tribe tribe, VillageTools tool)
 {
     SetQuickFinder(new DetailsCommand(_current.Display, tribe, tool));
 }
Exemple #60
0
 /// <summary>
 /// Publishes an event for all the villages in one tribe
 /// </summary>
 public void SelectVillages(object sender, Tribe tribe, VillageTools action)
 {
     if (tribe != null)
         VillagesSelected(sender, new TribeEventArgs(tribe, action));
 }