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; } } }
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 { } } }
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; } } }
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); } } } }
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()); }