コード例 #1
0
        Task <string> IRoomGrain.GetPrintableInfo()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("Key:");
            sb.Append(GrainHelper.GetPrimaryKeyStringFromGrain(this));
            sb.Append(":ID:");
            sb.Append(this.State.roomId);
            sb.Append(":Name:");
            sb.Append(this.State.name);
            return(Task.FromResult(sb.ToString()));
        }
コード例 #2
0
        Task <string> ICharacterGrain.GetPrintableInfo()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("Key:");
            sb.Append(GrainHelper.GetPrimaryKeyStringFromGrain(this));
            //sb.Append(this.GetPrimaryKey().ToString());
            sb.Append(":ID:");
            sb.Append(this.State.monsterInfo.Id);
            sb.Append(":Name:");
            sb.Append(this.State.monsterInfo.Name);
            sb.Append(":Moves:");
            sb.Append(this.State.monsterInfo.MovesRandomly);
            return(Task.FromResult(sb.ToString()));
        }
コード例 #3
0
 Task <string> IMonsterGrain.Kill(IRoomGrain room)
 {
     if (this.State.roomGrain != null)
     {
         string roomGrainPrimaryKey = GrainHelper.GetPrimaryKeyStringFromGrain(State.roomGrain);
         string roomPrimaryKey      = GrainHelper.GetPrimaryKeyStringFromGrain(room);
         if (roomGrainPrimaryKey != roomPrimaryKey)
         {
             return(Task.FromResult(this.State.monsterInfo.Name + " snuck away. You were too slow!"));
         }
         if (mMoveTimer != null)
         {
             mMoveTimer.Dispose();
         }
         return(this.State.roomGrain.Exit(this).ContinueWith(t => this.State.monsterInfo.Name + " is dead."));
     }
     return(Task.FromResult(this.State.monsterInfo.Name + " is already dead. You were too slow and someone else got to him!"));
 }
コード例 #4
0
        async Task <string> IRoomGrain.Description(PlayerInfo whoisAsking, IGameStateGrain gameState)
        {
            StringBuilder sb          = new StringBuilder();
            var           playerGrain = GrainFactory.GetGrain <IPlayerGrain>(whoisAsking.Key);

            sb.AppendLine(await GrainHelper.GetDescriptorForState(gameState, State.descriptors, playerGrain));
            if (State.things.Count > 0)
            {
                sb.AppendLine("The following things are present:");
                foreach (var thing in State.things)
                {
                    sb.Append("  ").AppendLine(thing.Name);
                }
            }
            if (State.players.Count > 1 ||
                State.monsters.Count > 0 ||
                State.npcs.Count > 0)
            {
                sb.AppendLine("Beware! These guys are in the room with you:");
                foreach (var player in State.players)
                {
                    if (player.GetPrimaryKey() != whoisAsking.Key)
                    {
                        sb.Append(" player:  ").AppendLine(await player.Name());
                    }
                }
                if (State.monsters.Count > 0)
                {
                    foreach (var monster in State.monsters)
                    {
                        sb.Append(" monster: ").AppendLine(await monster.Name());
                    }
                }
                if (State.npcs.Count > 0)
                {
                    foreach (var npc in State.npcs)
                    {
                        sb.Append(" npc: ").AppendLine(await npc.Name());
                    }
                }
            }
            return(sb.ToString());
        }
コード例 #5
0
        async Task <string> Inspect(string target, string verb)
        {
            var player = await this.State.roomGrain.FindPlayer(target);

            if (player != null)
            {
                return("You see " + player.Name + "\n");
            }
            var monster = await this.State.roomGrain.FindMonster(target);

            if (monster != null)
            {
                var monsterGrain = GrainFactory.GetGrain <IMonsterGrain>(this.GetPrimaryKey().ToString() + "Monster" + monster.Id);
                return(await monsterGrain.Description(State.gameState) + "\n");
            }
            var npc = await this.State.roomGrain.FindNpc(target);

            if (npc != null)
            {
                var npcGrain = GrainFactory.GetGrain <INPCGrain>(this.GetPrimaryKey().ToString() + "Npc" + npc.Id);
                return(await npcGrain.Description(State.gameState) + "\n");
            }
            var thing = await this.State.roomGrain.FindThing(target);

            if (thing != null)
            {
                return(await GrainHelper.GetDescriptorForState(State.gameState, thing.Descriptors, this) + "\n");
            }

            var onPersonThing = this.State.things.Where(t => t.Name.Contains(target)).FirstOrDefault();

            if (onPersonThing != null)
            {
                return(await GrainHelper.GetDescriptorForState(State.gameState, onPersonThing.Descriptors, this) + "\n");
            }
            return("I can't see " + target + " here. You can't " + verb + " something that isn't here!\n");
        }
コード例 #6
0
        async Task <string> ICharacterGrain.Response(IGameStateGrain gameState)
        {
            var obj = await GrainHelper.GetDescriptorForState(gameState, State.monsterInfo.Responses, State.playerGrain);

            return(this.State.monsterInfo.Name + " says\n\t" + obj.ToString());
        }
コード例 #7
0
 Task <string> ICharacterGrain.Description(IGameStateGrain gameState)
 {
     return(GrainHelper.GetDescriptorForState(gameState, State.monsterInfo.Descriptors, State.playerGrain));
 }