Пример #1
0
    public void PickUpTower(TowerZone pickUpZone)
    {
        print("You Picked up the tower");

        foreach (Tower tower in towerBuffer)
        {
            if (tower.currentZone == pickUpZone)
            {
                tower.isPlaced = false;
                tower.gameObject.SetActive(false);
                tower.currentZone.isPlaceable = true;
            }
        }
    }
Пример #2
0
 public void GetWhosListeningHere(TowerZone zone, HashSet <Session> listeners)
 {
     foreach (var kvp in sessionToTowerEntities)
     {
         try
         {
             if (kvp.Value.WorldPos == zone.WorldPos)
             {
                 listeners.Add(sessions.storyteller.Get <Session>(kvp.Key));
             }
         }
         catch { }
     }
 }
Пример #3
0
    public void PlaceExistingTower(TowerZone newSpawnZone)
    {
        Vector2 spawnPosition = new Vector2(newSpawnZone.transform.position.x, newSpawnZone.transform.position.y + 0.8f);

        foreach (Tower tower in towerBuffer)
        {
            if (tower.isPlaced == false)
            {
                tower.isPlaced           = true;
                tower.currentZone        = newSpawnZone;
                newSpawnZone.isPlaceable = false;
                tower.transform.position = spawnPosition;
                tower.gameObject.SetActive(true);
                break;
            }
        }
    }
Пример #4
0
        void SetupStartingZones()
        {
            for (int X = -5; X <= 5; X++)
            {
                for (int Y = -5; Y <= 5; Y++)
                {
                    var zone = new TowerZone("t/" + X + "," + Y);
                    zone.WorldPos = new twin(X, Y);
                    zone.ZoneName = "nowhere";
                    this.worldData.towerZones[zone.WorldPos] = zone;
                    sessions.storyteller.Write(zone);

                    for (int i = Random.Range(0, 3); i < 4; i++)
                    {
                        var ent = entGenerator.NewRockEntity();
                        ent.WorldPos = zone.WorldPos;
                        ent.Position = new twin(Random.Range(-5, 5 + 1), Random.Range(-5, 5 + 1));
                        sessions.storyteller.Write(ent);
                    }
                }
            }
        }
Пример #5
0
        private void Start()
        {
            link     = GetComponent <ClientsideLink>();
            sessions = new ClientsideSessions(link);
            link.AttemptConnection(success =>
            {
                if (success)
                {
                    sessions.DoLogin("droqen");
                }
                else
                {
                    Dj.Warnf("Login failed. TODO: Implement retry");
                }
            });
            sessions.AddStoryfan(Session.OPCODE, new LambdaStoryfan <Session>(session =>
            {
                if (currentSession == null || currentSession.Username != session.Username)
                {
                    currentSession = session;
                    link.Post <OK>(RequestStories.OPCODE, new RequestStories {
                        message = "Hello from " + currentSession.Username,
                    },
                                   reply =>
                    {
                    },
                                   failStatus =>
                    {
                        Dj.Tempf("RequestStories rejected with status {0}. Recommended to either request again, or disconnect.", failStatus);
                    });
                }

                Dj.Tempf("My session says my name is '{0}'", currentSession.Username);
            }));

            sessions.AddStoryfan(TowerZone.OPCODE, new LambdaStoryfan <TowerZone>(zone =>
            {
                currentZone = zone;

                visibleEntities.Clear();
            }));

            sessions.AddStoryfan(TowerEntity.OPCODE, new LambdaStoryfan <TowerEntity>(ent =>
            {
                bool its_me = false;
                try
                {
                    if (currentSession.EntityId == ent.EntityId)
                    {
                        myEntity = ent;
                        its_me   = true;
                    }
                }
                catch { }

                if (!its_me)
                {
                    if (ent.WorldPos == currentZone.WorldPos)
                    {
                        visibleEntities.Add(ent);
                    }
                    else
                    {
                        visibleEntities.Remove(ent);
                    }
                }
            }));

            sessions.PushStorydecoder(new TowerStoryDecoder());
        }